{
  "contractName": "ERC721Creator",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "AdminApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "AdminRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "ApproveTransferUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "DefaultRoyaltiesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "ExtensionApproveTransferUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ExtensionBlacklisted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ExtensionRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "ExtensionRoyaltiesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ExtensionUnregistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "permissions",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "MintPermissionsUpdated",
      "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": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "RoyaltiesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "approveAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAdmins",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "admins",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getApproveTransfer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExtensions",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "extensions",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "isAdmin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "revokeAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "setApproveTransferExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "baseURI",
          "type": "string"
        }
      ],
      "name": "registerExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "baseURI",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "baseURIIdentical",
          "type": "bool"
        }
      ],
      "name": "registerExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "unregisterExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "blacklistExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setBaseTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "identical",
          "type": "bool"
        }
      ],
      "name": "setBaseTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "prefix",
          "type": "string"
        }
      ],
      "name": "setTokenURIPrefixExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "uris",
          "type": "string[]"
        }
      ],
      "name": "setTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setBaseTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "prefix",
          "type": "string"
        }
      ],
      "name": "setTokenURIPrefix",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "uris",
          "type": "string[]"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "permissions",
          "type": "address"
        }
      ],
      "name": "setMintPermissions",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "mintBase",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "mintBase",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "uris",
          "type": "string[]"
        }
      ],
      "name": "mintBaseBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "count",
          "type": "uint16"
        }
      ],
      "name": "mintBaseBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "mintExtension",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint80",
          "name": "data",
          "type": "uint80"
        }
      ],
      "name": "mintExtension",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "mintExtension",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "uris",
          "type": "string[]"
        }
      ],
      "name": "mintExtensionBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint80[]",
          "name": "data",
          "type": "uint80[]"
        }
      ],
      "name": "mintExtensionBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "count",
          "type": "uint16"
        }
      ],
      "name": "mintExtensionBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenExtension",
      "outputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "setRoyalties",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "setRoyalties",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "setRoyaltiesExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getRoyalties",
      "outputs": [
        {
          "internalType": "address payable[]",
          "name": "",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getFees",
      "outputs": [
        {
          "internalType": "address payable[]",
          "name": "",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getFeeRecipients",
      "outputs": [
        {
          "internalType": "address payable[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getFeeBps",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "royaltyInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "setApproveTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenData",
      "outputs": [
        {
          "internalType": "uint80",
          "name": "",
          "type": "uint80"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"AdminApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"AdminRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"ApproveTransferUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"DefaultRoyaltiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"ExtensionApproveTransferUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ExtensionBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ExtensionRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"ExtensionRoyaltiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ExtensionUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"permissions\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"MintPermissionsUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"RoyaltiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"approveAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"blacklistExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAdmins\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"admins\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getApproveTransfer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExtensions\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"extensions\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getFeeBps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getFeeRecipients\",\"outputs\":[{\"internalType\":\"address payable[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getFees\",\"outputs\":[{\"internalType\":\"address payable[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getRoyalties\",\"outputs\":[{\"internalType\":\"address payable[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mintBase\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"mintBase\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"uris\",\"type\":\"string[]\"}],\"name\":\"mintBaseBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"count\",\"type\":\"uint16\"}],\"name\":\"mintBaseBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mintExtension\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint80\",\"name\":\"data\",\"type\":\"uint80\"}],\"name\":\"mintExtension\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"mintExtension\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"uris\",\"type\":\"string[]\"}],\"name\":\"mintExtensionBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint80[]\",\"name\":\"data\",\"type\":\"uint80[]\"}],\"name\":\"mintExtensionBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"count\",\"type\":\"uint16\"}],\"name\":\"mintExtensionBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"name\":\"registerExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"baseURIIdentical\",\"type\":\"bool\"}],\"name\":\"registerExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"revokeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"setApproveTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setApproveTransferExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setBaseTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setBaseTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"identical\",\"type\":\"bool\"}],\"name\":\"setBaseTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permissions\",\"type\":\"address\"}],\"name\":\"setMintPermissions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"setRoyalties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"setRoyalties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"setRoyaltiesExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"uris\",\"type\":\"string[]\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"uris\",\"type\":\"string[]\"}],\"name\":\"setTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"prefix\",\"type\":\"string\"}],\"name\":\"setTokenURIPrefix\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"prefix\",\"type\":\"string\"}],\"name\":\"setTokenURIPrefixExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenExtension\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"unregisterExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC721Creator implementation\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"approveAdmin(address)\":{\"details\":\"See {IAdminControl-approveAdmin}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"blacklistExtension(address)\":{\"details\":\"See {ICreatorCore-blacklistExtension}.\"},\"burn(uint256)\":{\"details\":\"See {IERC721CreatorCore-burn}.\"},\"getAdmins()\":{\"details\":\"See {IAdminControl-getAdmins}.\"},\"getApproveTransfer()\":{\"details\":\"See {ICreatorCore-getApproveTransfer}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getExtensions()\":{\"details\":\"See {ICreatorCore-getExtensions}.\"},\"getFeeBps(uint256)\":{\"details\":\"See {ICreatorCore-getFeeBps}.\"},\"getFeeRecipients(uint256)\":{\"details\":\"See {ICreatorCore-getFeeRecipients}.\"},\"getFees(uint256)\":{\"details\":\"See {ICreatorCore-getFees}.\"},\"getRoyalties(uint256)\":{\"details\":\"See {ICreatorCore-getRoyalties}.\"},\"isAdmin(address)\":{\"details\":\"See {IAdminControl-isAdmin}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"mintBase(address)\":{\"details\":\"See {IERC721CreatorCore-mintBase}.\"},\"mintBase(address,string)\":{\"details\":\"See {IERC721CreatorCore-mintBase}.\"},\"mintBaseBatch(address,string[])\":{\"details\":\"See {IERC721CreatorCore-mintBaseBatch}.\"},\"mintBaseBatch(address,uint16)\":{\"details\":\"See {IERC721CreatorCore-mintBaseBatch}.\"},\"mintExtension(address)\":{\"details\":\"See {IERC721CreatorCore-mintExtension}.\"},\"mintExtension(address,string)\":{\"details\":\"See {IERC721CreatorCore-mintExtension}.\"},\"mintExtension(address,uint80)\":{\"details\":\"See {IERC721CreatorCore-mintExtension}.\"},\"mintExtensionBatch(address,string[])\":{\"details\":\"See {IERC721CreatorCore-mintExtensionBatch}.\"},\"mintExtensionBatch(address,uint16)\":{\"details\":\"See {IERC721CreatorCore-mintExtensionBatch}.\"},\"mintExtensionBatch(address,uint80[])\":{\"details\":\"See {IERC721CreatorCore-mintExtensionBatch}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"registerExtension(address,string)\":{\"details\":\"See {ICreatorCore-registerExtension}.\"},\"registerExtension(address,string,bool)\":{\"details\":\"See {ICreatorCore-registerExtension}.\"},\"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.\"},\"revokeAdmin(address)\":{\"details\":\"See {IAdminControl-revokeAdmin}.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"See {ICreatorCore-royaltyInfo}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setApproveTransfer(address)\":{\"details\":\"See {ICreatorCore-setApproveTransfer}.\"},\"setApproveTransferExtension(bool)\":{\"details\":\"See {ICreatorCore-setApproveTransferExtension}.\"},\"setBaseTokenURI(string)\":{\"details\":\"See {ICreatorCore-setBaseTokenURI}.\"},\"setBaseTokenURIExtension(string)\":{\"details\":\"See {ICreatorCore-setBaseTokenURIExtension}.\"},\"setBaseTokenURIExtension(string,bool)\":{\"details\":\"See {ICreatorCore-setBaseTokenURIExtension}.\"},\"setMintPermissions(address,address)\":{\"details\":\"See {ICreatorCore-setMintPermissions}.\"},\"setRoyalties(address[],uint256[])\":{\"details\":\"See {ICreatorCore-setRoyalties}.\"},\"setRoyalties(uint256,address[],uint256[])\":{\"details\":\"See {ICreatorCore-setRoyalties}.\"},\"setRoyaltiesExtension(address,address[],uint256[])\":{\"details\":\"See {ICreatorCore-setRoyaltiesExtension}.\"},\"setTokenURI(uint256,string)\":{\"details\":\"See {ICreatorCore-setTokenURI}.\"},\"setTokenURI(uint256[],string[])\":{\"details\":\"See {ICreatorCore-setTokenURI}.\"},\"setTokenURIExtension(uint256,string)\":{\"details\":\"See {ICreatorCore-setTokenURIExtension}.\"},\"setTokenURIExtension(uint256[],string[])\":{\"details\":\"See {ICreatorCore-setTokenURIExtension}.\"},\"setTokenURIPrefix(string)\":{\"details\":\"See {ICreatorCore-setTokenURIPrefix}.\"},\"setTokenURIPrefixExtension(string)\":{\"details\":\"See {ICreatorCore-setTokenURIPrefixExtension}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenData(uint256)\":{\"details\":\"See {IERC721CreatorCore-tokenData}.\"},\"tokenExtension(uint256)\":{\"details\":\"See {ICreatorCore-tokenExtension}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unregisterExtension(address)\":{\"details\":\"See {ICreatorCore-unregisterExtension}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/ERC721Creator.sol\":\"ERC721Creator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":25},\"remappings\":[]},\"sources\":{\"@manifoldxyz/libraries-solidity/contracts/access/AdminControl.sol\":{\"keccak256\":\"0xaed5e7784e33745ab1b16f1d87b22084a8b25d531c1dcb8dc41fc2a89e2617da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44837a9cc639062b2d7424a10e9d579b8d3a9bc1cefede2cfbb917bee8f452ae\",\"dweb:/ipfs/QmburkqmRDZYWjKPRUynhdfkAfP5QDKcXH4WCbH1JC8UDq\"]},\"@manifoldxyz/libraries-solidity/contracts/access/IAdminControl.sol\":{\"keccak256\":\"0x7cc2e4e7d9052532f445e62ec1fa2f05cc0f5d1d8ee1fea913b43a132277bf2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://266618317d0654fe209b5450b8b5afa3a4a8d41294a2b37ddbae540099859887\",\"dweb:/ipfs/QmYksDqoxhachoqZquXGtjfiuAWJ1rxAKLtUYPL3YboBkE\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010\",\"dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x0812bc73d6e30558840122fa48d6f64ae978ccc1b1fc42e616bac190c6360f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d95a53b7e19ca1d46043eaad8967b6e0b02aab2b5fefc2108bfa6d1ad425f5b\",\"dweb:/ipfs/QmQq7AUGT9juE3hun2Wy7r2BDoDBFdBn43DVwhJpK2StLV\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0xc3ff3f5c4584e1d9a483ad7ced51ab64523201f4e3d3c65293e4ca8aeb77a961\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7d3dd6067a994690471b5fc71b6f81fac3847798b37d404f74db00b4d3c3d0e\",\"dweb:/ipfs/QmRHF1RarifjNi93RttouNPkYZGyu6CD926PgRDzD5iL35\"]},\"project:/contracts/ERC721Creator.sol\":{\"keccak256\":\"0xa2d5b2c2c3dd1a5a3ad2adf68e46f269dd672e86369297e7d30af5b2b6387f0d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093fc3ae4730df807d07c03ed2fdf85c65d29ce3325051cb0b3b7fea561c6a3c\",\"dweb:/ipfs/QmbNhhn5cSbS8Lw5nuAfvJfa4Nx3bWz1EQ34h2VdpVyLcY\"]},\"project:/contracts/core/CreatorCore.sol\":{\"keccak256\":\"0x6e8b20c32d6122ed1d23af683260ea242f1197dc95b063b63ccfac5b90e65f31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bffa862c93d614e9d5727ff595cb8595dbb9eae43bfdf06f65c7331aec09c268\",\"dweb:/ipfs/QmUsPC55S2vdfQWL3HQTYDz66yRFhdbPGCjr1NYyxBT83P\"]},\"project:/contracts/core/ERC721CreatorCore.sol\":{\"keccak256\":\"0x6927d1aba334eb5502e3a4a9d573d2cf10323bb9dd3f9a004f9f0831733cb00a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cce20d2dbd6f46a443ac666424c2c03c4d1f9b52295fca91b830649853314515\",\"dweb:/ipfs/QmRxLCpSFHCevQLAioPopYfxifjtMoNST5pM56yY1HnxdQ\"]},\"project:/contracts/core/ICreatorCore.sol\":{\"keccak256\":\"0x6bdcb757953594d3a259f1d68ec3d208ca42dba02115f08a6e32e2936ccb0349\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd1853dabcd57eb9b735b3991cf59259cd28cdeca1353495b5c59dc0db2d85df\",\"dweb:/ipfs/QmfJLFZ7RoMvdR7kJLR7QmqreS1x5VNJSa7xvjVsC4mXte\"]},\"project:/contracts/core/IERC721CreatorCore.sol\":{\"keccak256\":\"0xb168262afd1960a48d9c2088b7c24df3c0e5e190d2e2451e8af38983cf713bad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b8e621daf8a34967aa796482e02521390328f84a130f064e67aafc1b11748e5\",\"dweb:/ipfs/QmRC4suf2UXxkfy9NazSHwVAHLFeuzqAuQPmZrf1KQfX7f\"]},\"project:/contracts/extensions/ERC721/IERC721CreatorExtensionApproveTransfer.sol\":{\"keccak256\":\"0xf775f61378aaabce44f639c5ba3978dcd891a3a25379a9465a161edd5f2ca486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c67ca952670ffe8bc506b8a59cd5f06b5d6524946013e72023ed53a7d3f97a4f\",\"dweb:/ipfs/QmUXt1nMDmCeHN8SuHDUUZdMbBvZsVJHeborAu1pWtFgHS\"]},\"project:/contracts/extensions/ERC721/IERC721CreatorExtensionBurnable.sol\":{\"keccak256\":\"0xfe990176cd9da70d2241bb28b07155555bc1258350a809dc45165b4ad540d6c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7629f325fcd4348ffeca7e4abba3517f8767736c0545f6deb9bf71a361ccdc0c\",\"dweb:/ipfs/QmQGx2M1nkQGJXU8tVE56xiP8pgq7dQxqrnWPDjMDzstuH\"]},\"project:/contracts/extensions/ICreatorExtensionRoyalties.sol\":{\"keccak256\":\"0xf61dcf7e6bc3e49e629630ad28377f079a31b154ecd0e604d1c0a51ae2a057f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fda5e6d49a47fbe347ed9198c1fff5555bd687a3a73d2a9f45d5c3a2d053e40\",\"dweb:/ipfs/QmdrLJ3rscxvpMTjdRp1FyhPtYDTDL1CCQyhFeLFuFkFXH\"]},\"project:/contracts/extensions/ICreatorExtensionTokenURI.sol\":{\"keccak256\":\"0x6c8ca804ee7dea9d78f0dacdd9233b1b75ca2b2fa517f52f0fdf6beb34780a51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a04a6f0cce2bbdb022a8125e147519c7fbaa89692c8f0cfee69a67a2956316f\",\"dweb:/ipfs/QmdUxwBEnFshm1j5FEcJctC7DbFWUznis2LaPcKR7FEZX7\"]},\"project:/contracts/permissions/ERC721/IERC721CreatorMintPermissions.sol\":{\"keccak256\":\"0x9df5ea824141ac0225b240688d6b964d31e4b525c221e4e02b93955500996115\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ac75988c6c21b64e7a5da269879c23c7f818c8c47962b7e74a2af25c7b78008\",\"dweb:/ipfs/QmRv7RPHRThCPtCnje4nrsCGY6v9otDbYXnexmpNubrUfN\"]},\"project:/contracts/token/ERC721/ERC721Base.sol\":{\"keccak256\":\"0x2eec4eca886f3a95a19012153379288b5ffd20f88841a4a2c7f622ce22e140b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f94296195017aec1029c0f0262388563f6d73659304ecec5cf92b52bdfefa25\",\"dweb:/ipfs/Qme7pZMyPKYQW6v3gjyEeo9YH24LBnLxb7Y2bfHzM9R5vj\"]},\"project:/contracts/token/ERC721/ERC721Core.sol\":{\"keccak256\":\"0x9e8b158cc5525ad454a540fd6a933a2a1f4d831581a69640f57434b99070e523\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b808dc37f808fc11531401948c84de89172b7a21cf853484e707c81f514b95d0\",\"dweb:/ipfs/QmfVLezwsANYfiTeEgDV1yyvjiJWz7T3AeHUow5hhFP9iV\"]}},\"version\":1}",
  "bytecode": "0x60806040526000600a553480156200001657600080fd5b506040516200549d3803806200549d833981016040819052620000399162000187565b8181620000463362000072565b60018055600462000058838262000280565b50600562000067828262000280565b50505050506200034c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000ea57600080fd5b81516001600160401b0380821115620001075762000107620000c2565b604051601f8301601f19908116603f01168101908282118183101715620001325762000132620000c2565b816040528381526020925086838588010111156200014f57600080fd5b600091505b8382101562000173578582018301518183018401529082019062000154565b600093810190920192909252949350505050565b600080604083850312156200019b57600080fd5b82516001600160401b0380821115620001b357600080fd5b620001c186838701620000d8565b93506020850151915080821115620001d857600080fd5b50620001e785828601620000d8565b9150509250929050565b600181811c908216806200020657607f821691505b6020821081036200022757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027b57600081815260208120601f850160051c81016020861015620002565750805b601f850160051c820191505b81811015620002775782815560010162000262565b5050505b505050565b81516001600160401b038111156200029c576200029c620000c2565b620002b481620002ad8454620001f1565b846200022d565b602080601f831160018114620002ec5760008415620002d35750858301515b600019600386901b1c1916600185901b17855562000277565b600085815260208120601f198616915b828110156200031d57888601518255948401946001909101908401620002fc565b50858210156200033c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b615141806200035c6000396000f3fe608060405234801561001057600080fd5b50600436106102e45760003560e01c806370a0823111610189578063b4b5b48f116100df578063b4b5b48f14610663578063b88d4fde146106ae578063b9c4d9fb146106c1578063bb3bafd6146106e1578063c87b56dd14610702578063ce8aee9d14610715578063d397371914610728578063d5a06d4c146106e1578063e00aab4b1461073b578063e92a89f61461074e578063e985e9c514610761578063f0cdc49914610774578063f2fde38b14610787578063fe2e1f581461079a578063ffa1ad74146107ad57600080fd5b806370a0823114610572578063715018a61461058557806372ff03d31461058d5780637884af44146105a05780637aa15f16146105b357806382dcc0c8146105c657806383b7db63146105d95780638da5cb5b146105e157806395d89b41146105e957806399e0dd7c146105f1578063a22cb46514610604578063aafb2d4414610617578063ac0c8cfa1461062a578063ad2d0ddd1461063d578063b0fe87c91461065057600080fd5b806330176e131161023e57806330176e13146104535780633071a0f91461046657806331ae450b14610479578063332dd1ae1461048e57806338e52e78146104a15780633e6134b8146104b45780633f0f37f6146104c75780634278330e146104da57806342842e0e146104ed57806342966c6814610500578063596798ad1461051357806361e5bc6b146105265780636352211e1461053957806366d1e9d01461054c5780636d73e6691461055f57600080fd5b806301ffc9a7146102e957806302e7afb71461031157806306fdde0314610326578063081812fc1461033b578063095ea7b31461035b5780630ebd4c7f1461036e578063162094c41461038e57806320e4afe2146103a157806322f374d0146103b4578063239be317146103c557806323b872dd146103d857806324d7806c146103eb5780632928ca58146103fe5780632a55205a1461041f5780632d34567014610440575b600080fd5b6102fc6102f7366004613ffa565b6107b5565b60405190151581526020015b60405180910390f35b61032461031f36600461402c565b6107e4565b005b61032e610839565b6040516103089190614099565b61034e6103493660046140ac565b6108cb565b60405161030891906140c5565b6103246103693660046140d9565b6108f2565b61038161037c3660046140ac565b610a07565b6040516103089190614140565b61032461039c366004614194565b610a37565b6103246103af366004614223565b610a82565b600b546001600160a01b031661034e565b61034e6103d33660046140ac565b610afb565b6103246103e636600461429c565b610ba9565b6102fc6103f936600461402c565b610bda565b61041161040c36600461402c565b610c09565b604051908152602001610308565b61043261042d3660046142dd565b610c42565b6040516103089291906142ff565b61032461044e36600461402c565b610c80565b610324610461366004614318565b610cdd565b610324610474366004614359565b610d27565b610481610d7d565b6040516103089190614394565b61032461049c3660046143e1565b610e2b565b6103816104af36600461444c565b610e7f565b6103246104c2366004614318565b610fb2565b6103246104d53660046144a1565b610fc6565b6103816104e836600461444c565b61101b565b6103246104fb36600461429c565b611114565b61032461050e3660046140ac565b61112f565b61032461052136600461402c565b6111c6565b6103246105343660046143e1565b61120f565b61034e6105473660046140ac565b61128e565b61032461055a366004614318565b6112c3565b61032461056d36600461402c565b6112d5565b61041161058036600461402c565b61132d565b6103246113b3565b61041161059b36600461402c565b6113c7565b6104116105ae366004614359565b61142c565b6103816105c136600461444c565b6114c1565b6103246105d4366004614508565b61161b565b61048161162e565b61034e6116ce565b61032e6116dd565b6103246105ff366004614318565b6116ec565b61032461061236600461455e565b611736565b6103246106253660046143e1565b611741565b610324610638366004614597565b6117f8565b61038161064b3660046145b4565b61180a565b61032461065e3660046145e9565b61192a565b6106966106713660046140ac565b600090815260066020526040902054600160a01b900460101c6001600160501b031690565b6040516001600160501b039091168152602001610308565b6103246106bc366004614695565b611977565b6106d46106cf3660046140ac565b6119a9565b604051610308919061477c565b6106f46106ef3660046140ac565b6119d9565b60405161030892919061478f565b61032e6107103660046140ac565b611a13565b61032461072336600461402c565b611a43565b6104116107363660046147d4565b611a8c565b6103816107493660046145b4565b611ac5565b61032461075c366004614194565b611ba4565b6102fc61076f366004614809565b611bb7565b610324610782366004614809565b611be5565b61032461079536600461402c565b611c2f565b6104116107a8366004614359565b611ca5565b610411600381565b60006107c082611cf9565b806107cf57506107cf82611d39565b806107de57506107de82611d74565b92915050565b336107ed6116ce565b6001600160a01b031614806108085750610808600233611da9565b61082d5760405162461bcd60e51b815260040161082490614837565b60405180910390fd5b61083681611dcb565b50565b6060600480546108489061487b565b80601f01602080910402602001604051908101604052809291908181526020018280546108749061487b565b80156108c15780601f10610896576101008083540402835291602001916108c1565b820191906000526020600020905b8154815290600101906020018083116108a457829003601f168201915b5050505050905090565b60006108d682611ed7565b506000908152600860205260409020546001600160a01b031690565b60006108fd8261128e565b9050806001600160a01b0316836001600160a01b03160361096a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610824565b336001600160a01b038216148061098657506109868133611bb7565b6109f85760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610824565b610a028383611efc565b505050565b6060610a1282611f6a565b610a2e5760405162461bcd60e51b8152600401610824906148af565b6107de82611f87565b33610a406116ce565b6001600160a01b03161480610a5b5750610a5b600233611da9565b610a775760405162461bcd60e51b815260040161082490614837565b610a02838383611f92565b33610a8b6116ce565b6001600160a01b03161480610aa65750610aa6600233611da9565b610ac25760405162461bcd60e51b815260040161082490614837565b610acb85611f6a565b610ae75760405162461bcd60e51b8152600401610824906148af565b610af48585858585611ff6565b5050505050565b6000610b0682611f6a565b610b225760405162461bcd60e51b8152600401610824906148af565b610b2b8261207d565b90506001600160a01b038116610b7c5760405162461bcd60e51b815260206004820152601660248201527527379032bc3a32b739b4b7b7103337b9103a37b5b2b760511b6044820152606401610824565b610b87600e82611da9565b15610ba45760405162461bcd60e51b8152600401610824906148da565b919050565b610bb333826120d3565b610bcf5760405162461bcd60e51b815260040161082490614909565b610a02838383612132565b6000816001600160a01b0316610bee6116ce565b6001600160a01b031614806107de57506107de600283611da9565b6000610c136122bf565b610c1b612318565b610c37826040518060200160405280600081525060008061236e565b9050610ba460018055565b600080610c4e84611f6a565b610c6a5760405162461bcd60e51b8152600401610824906148af565b610c7484846123f7565b915091505b9250929050565b610c886124cd565b610c93600282611da9565b156108365760405133906001600160a01b038316907f7c0c3c84c67c85fcac635147348bfe374c24a1a93d0366d1cfe9d8853cbf89d590600090a3610cd960028261252c565b5050565b33610ce66116ce565b6001600160a01b03161480610d015750610d01600233611da9565b610d1d5760405162461bcd60e51b815260040161082490614837565b610cd98282612541565b33610d306116ce565b6001600160a01b03161480610d4b5750610d4b600233611da9565b610d675760405162461bcd60e51b815260040161082490614837565b610d7083612576565b610a02838383600061259e565b6060610d89600261269b565b6001600160401b03811115610da057610da0614628565b604051908082528060200260200182016040528015610dc9578160200160208202803683370190505b50905060005b610dd9600261269b565b811015610e2757610deb6002826126a5565b828281518110610dfd57610dfd614956565b6001600160a01b039092166020928302919091019091015280610e1f81614982565b915050610dcf565b5090565b33610e346116ce565b6001600160a01b03161480610e4f5750610e4f600233611da9565b610e6b5760405162461bcd60e51b815260040161082490614837565b610e796000858585856126b1565b50505050565b6060610e896122bf565b610e91612318565b816001600160401b03811115610ea957610ea9614628565b604051908082528060200260200182016040528015610ed2578160200160208202803683370190505b5090506000600a546001610ee6919061499b565b905083839050600a6000828254610efd919061499b565b90915550600090505b83811015610fa057610f7b86868684818110610f2457610f24614956565b9050602002810190610f3691906149ae565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250610f7691508690508761499b565b61236e565b838281518110610f8d57610f8d614956565b6020908102919091010152600101610f06565b5050610fab60018055565b9392505050565b610fba612318565b610cd98282600061279e565b33610fcf6116ce565b6001600160a01b03161480610fea5750610fea600233611da9565b6110065760405162461bcd60e51b815260040161082490614837565b61100f84612576565b610e798484848461259e565b60606110256122bf565b61102d612318565b816001600160401b0381111561104557611045614628565b60405190808252806020026020018201604052801561106e578160200160208202803683370190505b5090506000600a546001611082919061499b565b905083839050600a6000828254611099919061499b565b90915550600090505b83811015610fa0576110ef86604051806020016040528060008152508787858181106110d0576110d0614956565b90506020020160208101906110e591906149f4565b610f76858761499b565b83828151811061110157611101614956565b60209081029190910101526001016110a2565b610a0283838360405180602001604052806000815250611977565b6111376122bf565b61114133826120d3565b61118d5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206973206e6f74206f776e6572206f7220617070726f766564006044820152606401610824565b60006111988261128e565b905060006111a58361207d565b90506111b0836127db565b6111bb828483612883565b505061083660018055565b336111cf6116ce565b6001600160a01b031614806111ea57506111ea600233611da9565b6112065760405162461bcd60e51b815260040161082490614837565b61083681612940565b611217612318565b8281146112365760405162461bcd60e51b815260040161082490614a0f565b60005b83811015610af45761128685858381811061125657611256614956565b9050602002013584848481811061126f5761126f614956565b905060200281019061128191906149ae565b612996565b600101611239565b6000818152600660205260408120546001600160a01b0316806107de5760405162461bcd60e51b815260040161082490614a36565b6112cb612318565b610cd982826129a0565b6112dd6124cd565b6112e8600282611da9565b6108365760405133906001600160a01b038316907f7e1a1a08d52e4ba0e21554733d66165fd5151f99460116223d9e3a608eec5cb190600090a3610cd96002826129ba565b60006001600160a01b0382166113975760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610824565b506001600160a01b031660009081526007602052604090205490565b6113bb6124cd565b6113c560006129cf565b565b60006113d16122bf565b336113da6116ce565b6001600160a01b031614806113f557506113f5600233611da9565b6114115760405162461bcd60e51b815260040161082490614837565b610c3782604051806020016040528060008152506000612a1f565b60006114366122bf565b3361143f6116ce565b6001600160a01b0316148061145a575061145a600233611da9565b6114765760405162461bcd60e51b815260040161082490614837565b6114b68484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250612a1f915050565b9050610fab60018055565b60606114cb6122bf565b336114d46116ce565b6001600160a01b031614806114ef57506114ef600233611da9565b61150b5760405162461bcd60e51b815260040161082490614837565b816001600160401b0381111561152357611523614628565b60405190808252806020026020018201604052801561154c578160200160208202803683370190505b5090506000600a546001611560919061499b565b905083839050600a6000828254611577919061499b565b90915550600090505b83811015610fa0576115f68686868481811061159e5761159e614956565b90506020028101906115b091906149ae565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115f1925086915087905061499b565b612a1f565b83828151811061160857611608614956565b6020908102919091010152600101611580565b611623612318565b610a0283838361279e565b606061163a600c61269b565b6001600160401b0381111561165157611651614628565b60405190808252806020026020018201604052801561167a578160200160208202803683370190505b50905060005b61168a600c61269b565b811015610e275761169c600c826126a5565b8282815181106116ae576116ae614956565b6001600160a01b0390921660209283029190910190910152600101611680565b6000546001600160a01b031690565b6060600580546108489061487b565b336116f56116ce565b6001600160a01b031614806117105750611710600233611da9565b61172c5760405162461bcd60e51b815260040161082490614837565b610cd98282612a76565b610cd9338383612aab565b3361174a6116ce565b6001600160a01b031614806117655750611765600233611da9565b6117815760405162461bcd60e51b815260040161082490614837565b8281146117a05760405162461bcd60e51b815260040161082490614a0f565b60005b83811015610af4576117f08585838181106117c0576117c0614956565b905060200201358484848181106117d9576117d9614956565b90506020028101906117eb91906149ae565b611f92565b6001016117a3565b611800612318565b6108363382612b75565b60606118146122bf565b3361181d6116ce565b6001600160a01b031614806118385750611838600233611da9565b6118545760405162461bcd60e51b815260040161082490614837565b8161ffff166001600160401b0381111561187057611870614628565b604051908082528060200260200182016040528015611899578160200160208202803683370190505b5090506000600a5460016118ad919061499b565b90508261ffff16600a60008282546118c5919061499b565b90915550600090505b8361ffff1681101561191f576118fa856040518060200160405280600081525083856115f1919061499b565b83828151811061190c5761190c614956565b60209081029190910101526001016118ce565b50506107de60018055565b336119336116ce565b6001600160a01b0316148061194e575061194e600233611da9565b61196a5760405162461bcd60e51b815260040161082490614837565b610af485858585856126b1565b61198133836120d3565b61199d5760405162461bcd60e51b815260040161082490614909565b610e7984848484612bea565b60606119b482611f6a565b6119d05760405162461bcd60e51b8152600401610824906148af565b6107de82612c1d565b6060806119e583611f6a565b611a015760405162461bcd60e51b8152600401610824906148af565b611a0a83612c24565b91509150915091565b6060611a1e82611f6a565b611a3a5760405162461bcd60e51b8152600401610824906148af565b6107de82612fd2565b33611a4c6116ce565b6001600160a01b03161480611a675750611a67600233611da9565b611a835760405162461bcd60e51b815260040161082490614837565b6108368161326e565b6000611a966122bf565b611a9e612318565b611aba836040518060200160405280600081525084600061236e565b90506107de60018055565b6060611acf6122bf565b611ad7612318565b8161ffff166001600160401b03811115611af357611af3614628565b604051908082528060200260200182016040528015611b1c578160200160208202803683370190505b5090506000600a546001611b30919061499b565b90508261ffff16600a6000828254611b48919061499b565b90915550600090505b8361ffff1681101561191f57611b7f856040518060200160405280600081525060008486610f76919061499b565b838281518110611b9157611b91614956565b6020908102919091010152600101611b51565b611bac612318565b610a02838383612996565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b33611bee6116ce565b6001600160a01b03161480611c095750611c09600233611da9565b611c255760405162461bcd60e51b815260040161082490614837565b610cd982826132af565b611c376124cd565b6001600160a01b038116611c9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610824565b610836816129cf565b6000611caf6122bf565b611cb7612318565b6114b68484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925082915061236e9050565b60006001600160e01b0319821663b5d2729f60e01b1480611d2a57506001600160e01b03198216639088c20760e01b145b806107de57506107de826133e4565b60006001600160e01b031982166380ac58cd60e01b14806107cf57506001600160e01b03198216635b5e139f60e01b14806107de57506107de825b60006001600160e01b03198216632a9f3abf60e11b14806107de57506301ffc9a760e01b6001600160e01b03198316146107de565b6001600160a01b03811660009081526001830160205260408120541515610fab565b6001600160a01b03811615801590611dec57506001600160a01b0381163014155b611e345760405162461bcd60e51b815260206004820152601960248201527821b0b73737ba10313630b1b5b634b9ba103cb7bab939b2b63360391b6044820152606401610824565b611e3f600c82611da9565b15611e875760405133906001600160a01b038316907fd19cf84cf0fec6bec9ddfa29c63adf83a55707c712f32c8285d6180a7890147990600090a3611e85600c8261252c565b505b611e92600e82611da9565b6108365760405133906001600160a01b038316907f05ac7bc5a606cd92a63365f9fda244499b9add0526b22d99937b6bd88181059c90600090a3610cd9600e826129ba565b611ee081611f6a565b6108365760405162461bcd60e51b815260040161082490614a36565b600081815260086020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611f318261128e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000908152600660205260409020546001600160a01b0316151590565b6060610fab82612c24565b600083118015611fa45750600a548311155b8015611fc157506000611fb68461207d565b6001600160a01b0316145b611fdd5760405162461bcd60e51b815260040161082490614a68565b6000838152601360205260409020610e79828483614aea565b61200284848484613495565b600085815260156020526040812061201991613f58565b61203884848484601560008b815260200190815260200160002061353a565b847fabb46fe0761d77584bde75697647804ffd8113abd4d8d06bc664150395eccdee8585858560405161206e9493929190614ba3565b60405180910390a25050505050565b600081815260066020526040812054600160a01b90046001600160601b0381169061ffff1682036120b15750600092915050565b61ffff166000908152601a60205260409020546001600160a01b031692915050565b6000806120df8361128e565b9050806001600160a01b0316846001600160a01b0316148061210657506121068185611bb7565b8061212a5750836001600160a01b031661211f846108cb565b6001600160a01b0316145b949350505050565b6000818152600660209081526040918290208251808401909352546001600160a01b03808216808552600160a01b9092046001600160601b03169284019290925290851681146121d25760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610824565b6001600160a01b0384166122345760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610824565b6020820151612245868686846135f5565b612250600085611efc565b6001600160a01b038087166000818152600760209081526040808320805460001901905593891680835284832080546001019055888352600690915283822080546001600160a01b031916821790559251879392916000805160206150ec83398151915291a45b505050505050565b6002600154036123115760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610824565b6002600155565b612323600c33611da9565b6113c55760405162461bcd60e51b815260206004820152601c60248201527b26bab9ba103132903932b3b4b9ba32b932b21032bc3a32b739b4b7b760211b6044820152606401610824565b60008160000361239157600a6000815461238790614982565b90915550600a5491505b61239b8583613601565b336000908152601960205260409020546123ce908690849061ffff16601087901b69ffffffffffffffff00001617613695565b8351156123ef5760008281526013602052604090206123ed8582614c21565b505b509392505050565b60008060008061240686612c24565b9150915060018251111561245b5760405162461bcd60e51b815260206004820152601c60248201527b26b7b932903a3430b71018903937bcb0b63a3c903932b1b2b4bb32b960211b6044820152606401610824565b815160000361247257306000935093505050610c79565b8160008151811061248557612485614956565b602002602001015161271086836000815181106124a4576124a4614956565b60200260200101516124b69190614cda565b6124c09190614cf1565b9350935050509250929050565b336124d66116ce565b6001600160a01b0316146113c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610824565b6000610fab836001600160a01b0384166136b0565b6000805260106020527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb01610a02828483614aea565b612581600e82611da9565b156108365760405162461bcd60e51b8152600401610824906148da565b60185461ffff908116106125ea5760405162461bcd60e51b8152602060048201526013602482015272546f6f206d616e7920657874656e73696f6e7360681b6044820152606401610824565b6001600160a01b03841660009081526019602052604081205461ffff16900361268f57601880546000906126219061ffff16614d13565b82546101009290920a61ffff818102199093169183160217909155601880546001600160a01b0387166000818152601960209081526040808320805495881661ffff199096169590951790945593549094168452601a90925290912080546001600160a01b03191690911790555b610e79848484846137a3565b60006107de825490565b6000610fab8383613894565b6126bd84848484613495565b6001600160a01b03851660009081526014602052604081206126de91613f58565b61270f84848484601460008b6001600160a01b03166001600160a01b0316815260200190815260200160002061353a565b6001600160a01b03851661275f577f2b6849d5976d799a5b0ca4dfd6b40a3d7afe9ea72c091fa01a958594f9a2659b848484846040516127529493929190614ba3565b60405180910390a1610af4565b846001600160a01b03167f535a93d2cb000582c0ebeaa9be4890ec6a287f98eb2df00c54c300612fd78d8f8585858560405161206e9493929190614ba3565b3360009081526010602052604090206127b8838583614aea565b50336000908152601160205260409020805460ff19169115159190911790555050565b60008181526006602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201839052909290919061282b90839086846135f5565b612836600085611efc565b6001600160a01b038216600081815260076020908152604080832080546000190190558783526006909152808220829055518692906000805160206150ec833981519152908390a4610e79565b6001600160a01b03811615612909576128a3816311686e4b60e21b6138be565b15612909576040516311686e4b60e21b81526001600160a01b038216906345a1b92c906128d690869086906004016142ff565b600060405180830381600087803b1580156128f057600080fd5b505af1158015612904573d6000803e3d6000fd5b505050505b600082815260136020526040902080546129229061487b565b159050610a02576000828152601360205260408120610a0291613f76565b600b80546001600160a01b0319166001600160a01b0383161790556040517f959c0e47a2fe3cf01e237ba4892e2cc3194d77cbfb33e434e40873225d6b595f9061298b9083906140c5565b60405180910390a150565b33611fb68461207d565b336000908152601260205260409020610a02828483614aea565b6000610fab836001600160a01b0384166138da565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081600003612a4257600a60008154612a3890614982565b90915550600a5491505b612a4e84836000613695565b825115612a6f576000828152601360205260409020612a6d8482614c21565b505b5092915050565b6000805260126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b610a02828483614aea565b816001600160a01b0316836001600160a01b031603612b085760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610824565b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612b86826345ffcdad60e01b6138be565b15610cd9576001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f072a7592283e2c2d1d56d21517ff6013325e0f55483f4828373ff4d98b0a1a36910160405180910390a25050565b612bf5848484612132565b612c0184848484613929565b610e795760405162461bcd60e51b815260040161082490614d34565b6060612a6f825b606080600060156000858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015612ca657600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101612c5c565b5050505090508051600003612df3576000612cc08561207d565b90506001600160a01b03811615612df157612ce281634e53ee3d60e11b6138be565b15612d6d57604051634e53ee3d60e11b81526001600160a01b03821690639ca7dc7a90612d1590309089906004016142ff565b600060405180830381865afa158015612d32573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d5a9190810190614e0f565b8151919550935015612d6d575050915091565b6001600160a01b038116600090815260146020908152604080832080548251818502810185019093528083529193909284015b82821015612dea57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101612da0565b5050505091505b505b8051600003612e96576000808052601460209081527f4f26c3876aa9f4b92579780beea1161a61f87ebf1ec6ee865b299e447ecba99c8054604080518285028101850190915281815293919290919084015b82821015612e8f57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101612e45565b5050505090505b805115612fcc5780516001600160401b03811115612eb657612eb6614628565b604051908082528060200260200182016040528015612edf578160200160208202803683370190505b50925080516001600160401b03811115612efb57612efb614628565b604051908082528060200260200182016040528015612f24578160200160208202803683370190505b50915060005b8151811015612fca57818181518110612f4557612f45614956565b602002602001015160000151848281518110612f6357612f63614956565b60200260200101906001600160a01b031690816001600160a01b031681525050818181518110612f9557612f95614956565b60200260200101516020015161ffff16838281518110612fb757612fb7614956565b6020908102919091010152600101612f2a565b505b50915091565b6060600082118015612fe65750600a548211155b6130025760405162461bcd60e51b815260040161082490614a68565b600061300d8361207d565b905061301a600e82611da9565b156130375760405162461bcd60e51b8152600401610824906148da565b600083815260136020526040902080546130509061487b565b15905061316a576001600160a01b0381166000908152601260205260409020805461307a9061487b565b1590506130cb576001600160a01b0381166000908152601260209081526040808320868452601383529281902090516130b4939201614f46565b604051602081830303815290604052915050919050565b600083815260136020526040902080546130e49061487b565b80601f01602080910402602001604051908101604052809291908181526020018280546131109061487b565b801561315d5780601f106131325761010080835404028352916020019161315d565b820191906000526020600020905b81548152906001019060200180831161314057829003601f168201915b5050505050915050919050565b61317b8163e9dc637560e01b6138be565b156131f35760405163e9dc637560e01b81526001600160a01b0382169063e9dc6375906131ae90309087906004016142ff565b600060405180830381865afa1580156131cb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fab9190810190614f5b565b6001600160a01b03811660009081526011602052604090205460ff16613245576001600160a01b038116600090815260106020526040902061323484613a2e565b6040516020016130b4929190614fc8565b6001600160a01b038116600090815260106020526040902080546130e49061487b565b50919050565b60405133906001600160a01b038316907fd19cf84cf0fec6bec9ddfa29c63adf83a55707c712f32c8285d6180a7890147990600090a3610cd9600c8261252c565b6132ba600c83611da9565b6133065760405162461bcd60e51b815260206004820152601e60248201527f43726561746f72436f72653a20496e76616c696420657874656e73696f6e00006044820152606401610824565b6001600160a01b0381161580613328575061332881631e05385b60e31b6138be565b6133665760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610824565b6001600160a01b03828116600090815260176020526040902054811690821614610cd9576001600160a01b0382811660008181526017602052604080822080546001600160a01b031916948616948517905551339392917f6a835c4fcf7e0d398db3762332fdaa1471814ad39f1e2d6d0b3fdabf8efee3e091a45050565b60006001600160e01b031982166314d9799760e21b148061341557506001600160e01b031982166328f10a2160e01b145b80613424575061342482611d39565b8061343f57506001600160e01b03198216635d9dd7eb60e11b145b8061345a57506001600160e01b03198216632dde656160e21b145b8061347557506001600160e01b031982166335681b5360e21b145b806107de57506001600160e01b0319821663152a902d60e11b1492915050565b8281146134b45760405162461bcd60e51b815260040161082490614a0f565b6000805b828110156134ee578383828181106134d2576134d2614956565b90506020020135826134e4919061499b565b91506001016134b8565b506127108110610af45760405162461bcd60e51b8152602060048201526017602482015276496e76616c696420746f74616c20726f79616c7469657360481b6044820152606401610824565b60005b828110156122b75781604051806040016040528088888581811061356357613563614956565b9050602002016020810190613578919061402c565b6001600160a01b0316815260200186868581811061359857613598614956565b61ffff602091820293909301358316909352508354600181810186556000958652948390208451910180549490930151909116600160a01b026001600160b01b03199093166001600160a01b03909116179190911790550161353d565b610e7984848484613ac0565b336000908152601760205260409020546001600160a01b031615610cd9573360008181526017602052604090819020549051631e05385b60e31b815260048101929092526001600160a01b03848116602484015260448301849052169063f029c2d890606401600060405180830381600087803b15801561368157600080fd5b505af11580156122b7573d6000803e3d6000fd5b610a0283838360405180602001604052806000815250613afb565b600081815260018301602052604081205480156137995760006136d4600183614fed565b85549091506000906136e890600190614fed565b905081811461374d57600086600001828154811061370857613708614956565b906000526020600020015490508087600001848154811061372b5761372b614956565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061375e5761375e615000565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107de565b60009150506107de565b6001600160a01b03841630148015906137c957506137c9846001600160a01b0316613c37565b6137ff5760405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b6044820152606401610824565b60405133906001600160a01b038616907fd8cb8ba4086944eabf43c5535b7712015e4d4c714b24bf812c040ea5b7a3e42a90600090a36001600160a01b0384166000908152601060205260409020613858838583614aea565b506001600160a01b0384166000908152601160205260409020805460ff1916821515179055613888600c856129ba565b50610e79846001612b75565b60008260000182815481106138ab576138ab614956565b9060005260206000200154905092915050565b60006138c983613c46565b8015610fab5750610fab8383613c79565b6000818152600183016020526040812054613921575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107de565b5060006107de565b600061393d846001600160a01b0316613c37565b15613a2657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613974903390899088908890600401615016565b6020604051808303816000875af19250505080156139af575060408051601f3d908101601f191682019092526139ac91810190615053565b60015b613a0c573d8080156139dd576040519150601f19603f3d011682016040523d82523d6000602084013e6139e2565b606091505b508051600003613a045760405162461bcd60e51b815260040161082490614d34565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061212a565b50600161212a565b60606000613a3b83613d02565b60010190506000816001600160401b03811115613a5a57613a5a614628565b6040519080825280601f01601f191660200182016040528015613a84576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613a8e57509392505050565b6001600160a01b03841615610e795761ffff81166000908152601a6020526040902054610e79908590859085906001600160a01b0316613dd8565b6001600160a01b038416613b515760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610824565b613b5a83611f6a565b15613ba65760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401610824565b613bb360008585856135f5565b6001600160a01b03808516600081815260076020908152604080832080546001019055805180820182528481526001600160601b038089168285019081528a865260069094528285209151935116600160a01b02929095169190911790935591518592906000805160206150ec833981519152908290a4612c016000858584613929565b6001600160a01b03163b151590565b6000613c59826301ffc9a760e01b613c79565b80156107de5750613c72826001600160e01b0319613c79565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015613ceb575060208210155b8015613cf75750600081115b979650505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613d415772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613d6b576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613d8957662386f26fc10000830492506010015b6305f5e1008310613da1576305f5e100830492506008015b6127108310613db557612710830492506004015b60648310613dc7576064830492506002015b600a83106107de5760010192915050565b6001600160a01b03841615610e79576001600160a01b03811615801590613e1757506001600160a01b03811660009081526016602052604090205460ff165b15613eb257604051632f3537c560e11b81526001600160a01b03821690635e6a6f8a90613e4e903390889088908890600401615070565b6020604051808303816000875af1158015613e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e91919061509a565b613ead5760405162461bcd60e51b8152600401610824906150b7565b610e79565b600b546001600160a01b031615610e7957600b54604051632f3537c560e11b81526001600160a01b0390911690635e6a6f8a90613ef9903390889088908890600401615070565b6020604051808303816000875af1158015613f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3c919061509a565b610e795760405162461bcd60e51b8152600401610824906150b7565b50805460008255906000526020600020908101906108369190613fb0565b508054613f829061487b565b6000825580601f10613f92575050565b601f0160209004906000526020600020908101906108369190613fcf565b5b80821115610e275780546001600160b01b0319168155600101613fb1565b5b80821115610e275760008155600101613fd0565b6001600160e01b03198116811461083657600080fd5b60006020828403121561400c57600080fd5b8135610fab81613fe4565b6001600160a01b038116811461083657600080fd5b60006020828403121561403e57600080fd5b8135610fab81614017565b60005b8381101561406457818101518382015260200161404c565b50506000910152565b60008151808452614085816020860160208601614049565b601f01601f19169290920160200192915050565b602081526000610fab602083018461406d565b6000602082840312156140be57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600080604083850312156140ec57600080fd5b82356140f781614017565b946020939093013593505050565b600081518084526020808501945080840160005b8381101561413557815187529582019590820190600101614119565b509495945050505050565b602081526000610fab6020830184614105565b60008083601f84011261416557600080fd5b5081356001600160401b0381111561417c57600080fd5b602083019150836020828501011115610c7957600080fd5b6000806000604084860312156141a957600080fd5b8335925060208401356001600160401b038111156141c657600080fd5b6141d286828701614153565b9497909650939450505050565b60008083601f8401126141f157600080fd5b5081356001600160401b0381111561420857600080fd5b6020830191508360208260051b8501011115610c7957600080fd5b60008060008060006060868803121561423b57600080fd5b8535945060208601356001600160401b038082111561425957600080fd5b61426589838a016141df565b9096509450604088013591508082111561427e57600080fd5b5061428b888289016141df565b969995985093965092949392505050565b6000806000606084860312156142b157600080fd5b83356142bc81614017565b925060208401356142cc81614017565b929592945050506040919091013590565b600080604083850312156142f057600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b6000806020838503121561432b57600080fd5b82356001600160401b0381111561434157600080fd5b61434d85828601614153565b90969095509350505050565b60008060006040848603121561436e57600080fd5b833561437981614017565b925060208401356001600160401b038111156141c657600080fd5b6020808252825182820181905260009190848201906040850190845b818110156143d55783516001600160a01b0316835292840192918401916001016143b0565b50909695505050505050565b600080600080604085870312156143f757600080fd5b84356001600160401b038082111561440e57600080fd5b61441a888389016141df565b9096509450602087013591508082111561443357600080fd5b50614440878288016141df565b95989497509550505050565b60008060006040848603121561446157600080fd5b833561446c81614017565b925060208401356001600160401b0381111561448757600080fd5b6141d2868287016141df565b801515811461083657600080fd5b600080600080606085870312156144b757600080fd5b84356144c281614017565b935060208501356001600160401b038111156144dd57600080fd5b6144e987828801614153565b90945092505060408501356144fd81614493565b939692955090935050565b60008060006040848603121561451d57600080fd5b83356001600160401b0381111561453357600080fd5b61453f86828701614153565b909450925050602084013561455381614493565b809150509250925092565b6000806040838503121561457157600080fd5b823561457c81614017565b9150602083013561458c81614493565b809150509250929050565b6000602082840312156145a957600080fd5b8135610fab81614493565b600080604083850312156145c757600080fd5b82356145d281614017565b9150602083013561ffff8116811461458c57600080fd5b60008060008060006060868803121561460157600080fd5b853561460c81614017565b945060208601356001600160401b038082111561425957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561466657614666614628565b604052919050565b60006001600160401b0382111561468757614687614628565b50601f01601f191660200190565b600080600080608085870312156146ab57600080fd5b84356146b681614017565b935060208501356146c681614017565b92506040850135915060608501356001600160401b038111156146e857600080fd5b8501601f810187136146f957600080fd5b803561470c6147078261466e565b61463e565b81815288602083850101111561472157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b600081518084526020808501945080840160005b838110156141355781516001600160a01b031687529582019590820190600101614757565b602081526000610fab6020830184614743565b6040815260006147a26040830185614743565b82810360208401526147b48185614105565b95945050505050565b80356001600160501b0381168114610ba457600080fd5b600080604083850312156147e757600080fd5b82356147f281614017565b9150614800602084016147bd565b90509250929050565b6000806040838503121561481c57600080fd5b823561482781614017565b9150602083013561458c81614017565b60208082526024908201527f41646d696e436f6e74726f6c3a204d757374206265206f776e6572206f7220616040820152633236b4b760e11b606082015260800190565b600181811c9082168061488f57607f821691505b60208210810361326857634e487b7160e01b600052602260045260246000fd5b6020808252601190820152702737b732bc34b9ba32b73a103a37b5b2b760791b604082015260600190565b602080825260159082015274115e1d195b9cda5bdb88189b1858dadb1a5cdd1959605a1b604082015260600190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016149945761499461496c565b5060010190565b808201808211156107de576107de61496c565b6000808335601e198436030181126149c557600080fd5b8301803591506001600160401b038211156149df57600080fd5b602001915036819003821315610c7957600080fd5b600060208284031215614a0657600080fd5b610fab826147bd565b6020808252600d908201526c125b9d985b1a59081a5b9c1d5d609a1b604082015260600190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6020808252600d908201526c24b73b30b634b2103a37b5b2b760991b604082015260600190565b601f821115610a0257600081815260208120601f850160051c81016020861015614ab65750805b601f850160051c820191505b818110156122b757828155600101614ac2565b600019600383901b1c191660019190911b1790565b6001600160401b03831115614b0157614b01614628565b614b1583614b0f835461487b565b83614a8f565b6000601f841160018114614b435760008515614b315750838201355b614b3b8682614ad5565b845550610af4565b600083815260209020601f19861690835b82811015614b745786850135825560209485019460019092019101614b54565b5086821015614b915760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6040808252810184905260008560608301825b87811015614be6578235614bc981614017565b6001600160a01b0316825260209283019290910190600101614bb6565b5083810360208501528481526001600160fb1b03851115614c0657600080fd5b8460051b915081866020830137016020019695505050505050565b81516001600160401b03811115614c3a57614c3a614628565b614c4e81614c48845461487b565b84614a8f565b602080601f831160018114614c7d5760008415614c6b5750858301515b614c758582614ad5565b8655506122b7565b600085815260208120601f198616915b82811015614cac57888601518255948401946001909101908401614c8d565b5085821015614cca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176107de576107de61496c565b600082614d0e57634e487b7160e01b600052601260045260246000fd5b500490565b600061ffff808316818103614d2a57614d2a61496c565b6001019392505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001600160401b03821115614d9f57614d9f614628565b5060051b60200190565b600082601f830112614dba57600080fd5b81516020614dca61470783614d86565b82815260059290921b84018101918181019086841115614de957600080fd5b8286015b84811015614e045780518352918301918301614ded565b509695505050505050565b60008060408385031215614e2257600080fd5b82516001600160401b0380821115614e3957600080fd5b818501915085601f830112614e4d57600080fd5b81516020614e5d61470783614d86565b82815260059290921b84018101918181019089841115614e7c57600080fd5b948201945b83861015614ea3578551614e9481614017565b82529482019490820190614e81565b91880151919650909350505080821115614ebc57600080fd5b50614ec985828601614da9565b9150509250929050565b60008154614ee08161487b565b60018281168015614ef85760018114614f0d57614f3c565b60ff1984168752821515830287019450614f3c565b8560005260208060002060005b85811015614f335781548a820152908401908201614f1a565b50505082870194505b5050505092915050565b600061212a614f558386614ed3565b84614ed3565b600060208284031215614f6d57600080fd5b81516001600160401b03811115614f8357600080fd5b8201601f81018413614f9457600080fd5b8051614fa26147078261466e565b818152856020838501011115614fb757600080fd5b6147b4826020830160208601614049565b6000614fd48285614ed3565b8351614fe4818360208801614049565b01949350505050565b818103818111156107de576107de61496c565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906150499083018461406d565b9695505050505050565b60006020828403121561506557600080fd5b8151610fab81613fe4565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6000602082840312156150ac57600080fd5b8151610fab81614493565b6020808252601a9082015279457874656e73696f6e20617070726f76616c206661696c75726560301b60408201526060019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b846108c86534dfdcb81a368169eb6dc0fdea08a5873b10ab74940e74a4ab55664736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102e45760003560e01c806370a0823111610189578063b4b5b48f116100df578063b4b5b48f14610663578063b88d4fde146106ae578063b9c4d9fb146106c1578063bb3bafd6146106e1578063c87b56dd14610702578063ce8aee9d14610715578063d397371914610728578063d5a06d4c146106e1578063e00aab4b1461073b578063e92a89f61461074e578063e985e9c514610761578063f0cdc49914610774578063f2fde38b14610787578063fe2e1f581461079a578063ffa1ad74146107ad57600080fd5b806370a0823114610572578063715018a61461058557806372ff03d31461058d5780637884af44146105a05780637aa15f16146105b357806382dcc0c8146105c657806383b7db63146105d95780638da5cb5b146105e157806395d89b41146105e957806399e0dd7c146105f1578063a22cb46514610604578063aafb2d4414610617578063ac0c8cfa1461062a578063ad2d0ddd1461063d578063b0fe87c91461065057600080fd5b806330176e131161023e57806330176e13146104535780633071a0f91461046657806331ae450b14610479578063332dd1ae1461048e57806338e52e78146104a15780633e6134b8146104b45780633f0f37f6146104c75780634278330e146104da57806342842e0e146104ed57806342966c6814610500578063596798ad1461051357806361e5bc6b146105265780636352211e1461053957806366d1e9d01461054c5780636d73e6691461055f57600080fd5b806301ffc9a7146102e957806302e7afb71461031157806306fdde0314610326578063081812fc1461033b578063095ea7b31461035b5780630ebd4c7f1461036e578063162094c41461038e57806320e4afe2146103a157806322f374d0146103b4578063239be317146103c557806323b872dd146103d857806324d7806c146103eb5780632928ca58146103fe5780632a55205a1461041f5780632d34567014610440575b600080fd5b6102fc6102f7366004613ffa565b6107b5565b60405190151581526020015b60405180910390f35b61032461031f36600461402c565b6107e4565b005b61032e610839565b6040516103089190614099565b61034e6103493660046140ac565b6108cb565b60405161030891906140c5565b6103246103693660046140d9565b6108f2565b61038161037c3660046140ac565b610a07565b6040516103089190614140565b61032461039c366004614194565b610a37565b6103246103af366004614223565b610a82565b600b546001600160a01b031661034e565b61034e6103d33660046140ac565b610afb565b6103246103e636600461429c565b610ba9565b6102fc6103f936600461402c565b610bda565b61041161040c36600461402c565b610c09565b604051908152602001610308565b61043261042d3660046142dd565b610c42565b6040516103089291906142ff565b61032461044e36600461402c565b610c80565b610324610461366004614318565b610cdd565b610324610474366004614359565b610d27565b610481610d7d565b6040516103089190614394565b61032461049c3660046143e1565b610e2b565b6103816104af36600461444c565b610e7f565b6103246104c2366004614318565b610fb2565b6103246104d53660046144a1565b610fc6565b6103816104e836600461444c565b61101b565b6103246104fb36600461429c565b611114565b61032461050e3660046140ac565b61112f565b61032461052136600461402c565b6111c6565b6103246105343660046143e1565b61120f565b61034e6105473660046140ac565b61128e565b61032461055a366004614318565b6112c3565b61032461056d36600461402c565b6112d5565b61041161058036600461402c565b61132d565b6103246113b3565b61041161059b36600461402c565b6113c7565b6104116105ae366004614359565b61142c565b6103816105c136600461444c565b6114c1565b6103246105d4366004614508565b61161b565b61048161162e565b61034e6116ce565b61032e6116dd565b6103246105ff366004614318565b6116ec565b61032461061236600461455e565b611736565b6103246106253660046143e1565b611741565b610324610638366004614597565b6117f8565b61038161064b3660046145b4565b61180a565b61032461065e3660046145e9565b61192a565b6106966106713660046140ac565b600090815260066020526040902054600160a01b900460101c6001600160501b031690565b6040516001600160501b039091168152602001610308565b6103246106bc366004614695565b611977565b6106d46106cf3660046140ac565b6119a9565b604051610308919061477c565b6106f46106ef3660046140ac565b6119d9565b60405161030892919061478f565b61032e6107103660046140ac565b611a13565b61032461072336600461402c565b611a43565b6104116107363660046147d4565b611a8c565b6103816107493660046145b4565b611ac5565b61032461075c366004614194565b611ba4565b6102fc61076f366004614809565b611bb7565b610324610782366004614809565b611be5565b61032461079536600461402c565b611c2f565b6104116107a8366004614359565b611ca5565b610411600381565b60006107c082611cf9565b806107cf57506107cf82611d39565b806107de57506107de82611d74565b92915050565b336107ed6116ce565b6001600160a01b031614806108085750610808600233611da9565b61082d5760405162461bcd60e51b815260040161082490614837565b60405180910390fd5b61083681611dcb565b50565b6060600480546108489061487b565b80601f01602080910402602001604051908101604052809291908181526020018280546108749061487b565b80156108c15780601f10610896576101008083540402835291602001916108c1565b820191906000526020600020905b8154815290600101906020018083116108a457829003601f168201915b5050505050905090565b60006108d682611ed7565b506000908152600860205260409020546001600160a01b031690565b60006108fd8261128e565b9050806001600160a01b0316836001600160a01b03160361096a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610824565b336001600160a01b038216148061098657506109868133611bb7565b6109f85760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610824565b610a028383611efc565b505050565b6060610a1282611f6a565b610a2e5760405162461bcd60e51b8152600401610824906148af565b6107de82611f87565b33610a406116ce565b6001600160a01b03161480610a5b5750610a5b600233611da9565b610a775760405162461bcd60e51b815260040161082490614837565b610a02838383611f92565b33610a8b6116ce565b6001600160a01b03161480610aa65750610aa6600233611da9565b610ac25760405162461bcd60e51b815260040161082490614837565b610acb85611f6a565b610ae75760405162461bcd60e51b8152600401610824906148af565b610af48585858585611ff6565b5050505050565b6000610b0682611f6a565b610b225760405162461bcd60e51b8152600401610824906148af565b610b2b8261207d565b90506001600160a01b038116610b7c5760405162461bcd60e51b815260206004820152601660248201527527379032bc3a32b739b4b7b7103337b9103a37b5b2b760511b6044820152606401610824565b610b87600e82611da9565b15610ba45760405162461bcd60e51b8152600401610824906148da565b919050565b610bb333826120d3565b610bcf5760405162461bcd60e51b815260040161082490614909565b610a02838383612132565b6000816001600160a01b0316610bee6116ce565b6001600160a01b031614806107de57506107de600283611da9565b6000610c136122bf565b610c1b612318565b610c37826040518060200160405280600081525060008061236e565b9050610ba460018055565b600080610c4e84611f6a565b610c6a5760405162461bcd60e51b8152600401610824906148af565b610c7484846123f7565b915091505b9250929050565b610c886124cd565b610c93600282611da9565b156108365760405133906001600160a01b038316907f7c0c3c84c67c85fcac635147348bfe374c24a1a93d0366d1cfe9d8853cbf89d590600090a3610cd960028261252c565b5050565b33610ce66116ce565b6001600160a01b03161480610d015750610d01600233611da9565b610d1d5760405162461bcd60e51b815260040161082490614837565b610cd98282612541565b33610d306116ce565b6001600160a01b03161480610d4b5750610d4b600233611da9565b610d675760405162461bcd60e51b815260040161082490614837565b610d7083612576565b610a02838383600061259e565b6060610d89600261269b565b6001600160401b03811115610da057610da0614628565b604051908082528060200260200182016040528015610dc9578160200160208202803683370190505b50905060005b610dd9600261269b565b811015610e2757610deb6002826126a5565b828281518110610dfd57610dfd614956565b6001600160a01b039092166020928302919091019091015280610e1f81614982565b915050610dcf565b5090565b33610e346116ce565b6001600160a01b03161480610e4f5750610e4f600233611da9565b610e6b5760405162461bcd60e51b815260040161082490614837565b610e796000858585856126b1565b50505050565b6060610e896122bf565b610e91612318565b816001600160401b03811115610ea957610ea9614628565b604051908082528060200260200182016040528015610ed2578160200160208202803683370190505b5090506000600a546001610ee6919061499b565b905083839050600a6000828254610efd919061499b565b90915550600090505b83811015610fa057610f7b86868684818110610f2457610f24614956565b9050602002810190610f3691906149ae565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250610f7691508690508761499b565b61236e565b838281518110610f8d57610f8d614956565b6020908102919091010152600101610f06565b5050610fab60018055565b9392505050565b610fba612318565b610cd98282600061279e565b33610fcf6116ce565b6001600160a01b03161480610fea5750610fea600233611da9565b6110065760405162461bcd60e51b815260040161082490614837565b61100f84612576565b610e798484848461259e565b60606110256122bf565b61102d612318565b816001600160401b0381111561104557611045614628565b60405190808252806020026020018201604052801561106e578160200160208202803683370190505b5090506000600a546001611082919061499b565b905083839050600a6000828254611099919061499b565b90915550600090505b83811015610fa0576110ef86604051806020016040528060008152508787858181106110d0576110d0614956565b90506020020160208101906110e591906149f4565b610f76858761499b565b83828151811061110157611101614956565b60209081029190910101526001016110a2565b610a0283838360405180602001604052806000815250611977565b6111376122bf565b61114133826120d3565b61118d5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206973206e6f74206f776e6572206f7220617070726f766564006044820152606401610824565b60006111988261128e565b905060006111a58361207d565b90506111b0836127db565b6111bb828483612883565b505061083660018055565b336111cf6116ce565b6001600160a01b031614806111ea57506111ea600233611da9565b6112065760405162461bcd60e51b815260040161082490614837565b61083681612940565b611217612318565b8281146112365760405162461bcd60e51b815260040161082490614a0f565b60005b83811015610af45761128685858381811061125657611256614956565b9050602002013584848481811061126f5761126f614956565b905060200281019061128191906149ae565b612996565b600101611239565b6000818152600660205260408120546001600160a01b0316806107de5760405162461bcd60e51b815260040161082490614a36565b6112cb612318565b610cd982826129a0565b6112dd6124cd565b6112e8600282611da9565b6108365760405133906001600160a01b038316907f7e1a1a08d52e4ba0e21554733d66165fd5151f99460116223d9e3a608eec5cb190600090a3610cd96002826129ba565b60006001600160a01b0382166113975760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610824565b506001600160a01b031660009081526007602052604090205490565b6113bb6124cd565b6113c560006129cf565b565b60006113d16122bf565b336113da6116ce565b6001600160a01b031614806113f557506113f5600233611da9565b6114115760405162461bcd60e51b815260040161082490614837565b610c3782604051806020016040528060008152506000612a1f565b60006114366122bf565b3361143f6116ce565b6001600160a01b0316148061145a575061145a600233611da9565b6114765760405162461bcd60e51b815260040161082490614837565b6114b68484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250612a1f915050565b9050610fab60018055565b60606114cb6122bf565b336114d46116ce565b6001600160a01b031614806114ef57506114ef600233611da9565b61150b5760405162461bcd60e51b815260040161082490614837565b816001600160401b0381111561152357611523614628565b60405190808252806020026020018201604052801561154c578160200160208202803683370190505b5090506000600a546001611560919061499b565b905083839050600a6000828254611577919061499b565b90915550600090505b83811015610fa0576115f68686868481811061159e5761159e614956565b90506020028101906115b091906149ae565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115f1925086915087905061499b565b612a1f565b83828151811061160857611608614956565b6020908102919091010152600101611580565b611623612318565b610a0283838361279e565b606061163a600c61269b565b6001600160401b0381111561165157611651614628565b60405190808252806020026020018201604052801561167a578160200160208202803683370190505b50905060005b61168a600c61269b565b811015610e275761169c600c826126a5565b8282815181106116ae576116ae614956565b6001600160a01b0390921660209283029190910190910152600101611680565b6000546001600160a01b031690565b6060600580546108489061487b565b336116f56116ce565b6001600160a01b031614806117105750611710600233611da9565b61172c5760405162461bcd60e51b815260040161082490614837565b610cd98282612a76565b610cd9338383612aab565b3361174a6116ce565b6001600160a01b031614806117655750611765600233611da9565b6117815760405162461bcd60e51b815260040161082490614837565b8281146117a05760405162461bcd60e51b815260040161082490614a0f565b60005b83811015610af4576117f08585838181106117c0576117c0614956565b905060200201358484848181106117d9576117d9614956565b90506020028101906117eb91906149ae565b611f92565b6001016117a3565b611800612318565b6108363382612b75565b60606118146122bf565b3361181d6116ce565b6001600160a01b031614806118385750611838600233611da9565b6118545760405162461bcd60e51b815260040161082490614837565b8161ffff166001600160401b0381111561187057611870614628565b604051908082528060200260200182016040528015611899578160200160208202803683370190505b5090506000600a5460016118ad919061499b565b90508261ffff16600a60008282546118c5919061499b565b90915550600090505b8361ffff1681101561191f576118fa856040518060200160405280600081525083856115f1919061499b565b83828151811061190c5761190c614956565b60209081029190910101526001016118ce565b50506107de60018055565b336119336116ce565b6001600160a01b0316148061194e575061194e600233611da9565b61196a5760405162461bcd60e51b815260040161082490614837565b610af485858585856126b1565b61198133836120d3565b61199d5760405162461bcd60e51b815260040161082490614909565b610e7984848484612bea565b60606119b482611f6a565b6119d05760405162461bcd60e51b8152600401610824906148af565b6107de82612c1d565b6060806119e583611f6a565b611a015760405162461bcd60e51b8152600401610824906148af565b611a0a83612c24565b91509150915091565b6060611a1e82611f6a565b611a3a5760405162461bcd60e51b8152600401610824906148af565b6107de82612fd2565b33611a4c6116ce565b6001600160a01b03161480611a675750611a67600233611da9565b611a835760405162461bcd60e51b815260040161082490614837565b6108368161326e565b6000611a966122bf565b611a9e612318565b611aba836040518060200160405280600081525084600061236e565b90506107de60018055565b6060611acf6122bf565b611ad7612318565b8161ffff166001600160401b03811115611af357611af3614628565b604051908082528060200260200182016040528015611b1c578160200160208202803683370190505b5090506000600a546001611b30919061499b565b90508261ffff16600a6000828254611b48919061499b565b90915550600090505b8361ffff1681101561191f57611b7f856040518060200160405280600081525060008486610f76919061499b565b838281518110611b9157611b91614956565b6020908102919091010152600101611b51565b611bac612318565b610a02838383612996565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b33611bee6116ce565b6001600160a01b03161480611c095750611c09600233611da9565b611c255760405162461bcd60e51b815260040161082490614837565b610cd982826132af565b611c376124cd565b6001600160a01b038116611c9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610824565b610836816129cf565b6000611caf6122bf565b611cb7612318565b6114b68484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925082915061236e9050565b60006001600160e01b0319821663b5d2729f60e01b1480611d2a57506001600160e01b03198216639088c20760e01b145b806107de57506107de826133e4565b60006001600160e01b031982166380ac58cd60e01b14806107cf57506001600160e01b03198216635b5e139f60e01b14806107de57506107de825b60006001600160e01b03198216632a9f3abf60e11b14806107de57506301ffc9a760e01b6001600160e01b03198316146107de565b6001600160a01b03811660009081526001830160205260408120541515610fab565b6001600160a01b03811615801590611dec57506001600160a01b0381163014155b611e345760405162461bcd60e51b815260206004820152601960248201527821b0b73737ba10313630b1b5b634b9ba103cb7bab939b2b63360391b6044820152606401610824565b611e3f600c82611da9565b15611e875760405133906001600160a01b038316907fd19cf84cf0fec6bec9ddfa29c63adf83a55707c712f32c8285d6180a7890147990600090a3611e85600c8261252c565b505b611e92600e82611da9565b6108365760405133906001600160a01b038316907f05ac7bc5a606cd92a63365f9fda244499b9add0526b22d99937b6bd88181059c90600090a3610cd9600e826129ba565b611ee081611f6a565b6108365760405162461bcd60e51b815260040161082490614a36565b600081815260086020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611f318261128e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000908152600660205260409020546001600160a01b0316151590565b6060610fab82612c24565b600083118015611fa45750600a548311155b8015611fc157506000611fb68461207d565b6001600160a01b0316145b611fdd5760405162461bcd60e51b815260040161082490614a68565b6000838152601360205260409020610e79828483614aea565b61200284848484613495565b600085815260156020526040812061201991613f58565b61203884848484601560008b815260200190815260200160002061353a565b847fabb46fe0761d77584bde75697647804ffd8113abd4d8d06bc664150395eccdee8585858560405161206e9493929190614ba3565b60405180910390a25050505050565b600081815260066020526040812054600160a01b90046001600160601b0381169061ffff1682036120b15750600092915050565b61ffff166000908152601a60205260409020546001600160a01b031692915050565b6000806120df8361128e565b9050806001600160a01b0316846001600160a01b0316148061210657506121068185611bb7565b8061212a5750836001600160a01b031661211f846108cb565b6001600160a01b0316145b949350505050565b6000818152600660209081526040918290208251808401909352546001600160a01b03808216808552600160a01b9092046001600160601b03169284019290925290851681146121d25760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610824565b6001600160a01b0384166122345760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610824565b6020820151612245868686846135f5565b612250600085611efc565b6001600160a01b038087166000818152600760209081526040808320805460001901905593891680835284832080546001019055888352600690915283822080546001600160a01b031916821790559251879392916000805160206150ec83398151915291a45b505050505050565b6002600154036123115760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610824565b6002600155565b612323600c33611da9565b6113c55760405162461bcd60e51b815260206004820152601c60248201527b26bab9ba103132903932b3b4b9ba32b932b21032bc3a32b739b4b7b760211b6044820152606401610824565b60008160000361239157600a6000815461238790614982565b90915550600a5491505b61239b8583613601565b336000908152601960205260409020546123ce908690849061ffff16601087901b69ffffffffffffffff00001617613695565b8351156123ef5760008281526013602052604090206123ed8582614c21565b505b509392505050565b60008060008061240686612c24565b9150915060018251111561245b5760405162461bcd60e51b815260206004820152601c60248201527b26b7b932903a3430b71018903937bcb0b63a3c903932b1b2b4bb32b960211b6044820152606401610824565b815160000361247257306000935093505050610c79565b8160008151811061248557612485614956565b602002602001015161271086836000815181106124a4576124a4614956565b60200260200101516124b69190614cda565b6124c09190614cf1565b9350935050509250929050565b336124d66116ce565b6001600160a01b0316146113c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610824565b6000610fab836001600160a01b0384166136b0565b6000805260106020527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb01610a02828483614aea565b612581600e82611da9565b156108365760405162461bcd60e51b8152600401610824906148da565b60185461ffff908116106125ea5760405162461bcd60e51b8152602060048201526013602482015272546f6f206d616e7920657874656e73696f6e7360681b6044820152606401610824565b6001600160a01b03841660009081526019602052604081205461ffff16900361268f57601880546000906126219061ffff16614d13565b82546101009290920a61ffff818102199093169183160217909155601880546001600160a01b0387166000818152601960209081526040808320805495881661ffff199096169590951790945593549094168452601a90925290912080546001600160a01b03191690911790555b610e79848484846137a3565b60006107de825490565b6000610fab8383613894565b6126bd84848484613495565b6001600160a01b03851660009081526014602052604081206126de91613f58565b61270f84848484601460008b6001600160a01b03166001600160a01b0316815260200190815260200160002061353a565b6001600160a01b03851661275f577f2b6849d5976d799a5b0ca4dfd6b40a3d7afe9ea72c091fa01a958594f9a2659b848484846040516127529493929190614ba3565b60405180910390a1610af4565b846001600160a01b03167f535a93d2cb000582c0ebeaa9be4890ec6a287f98eb2df00c54c300612fd78d8f8585858560405161206e9493929190614ba3565b3360009081526010602052604090206127b8838583614aea565b50336000908152601160205260409020805460ff19169115159190911790555050565b60008181526006602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201839052909290919061282b90839086846135f5565b612836600085611efc565b6001600160a01b038216600081815260076020908152604080832080546000190190558783526006909152808220829055518692906000805160206150ec833981519152908390a4610e79565b6001600160a01b03811615612909576128a3816311686e4b60e21b6138be565b15612909576040516311686e4b60e21b81526001600160a01b038216906345a1b92c906128d690869086906004016142ff565b600060405180830381600087803b1580156128f057600080fd5b505af1158015612904573d6000803e3d6000fd5b505050505b600082815260136020526040902080546129229061487b565b159050610a02576000828152601360205260408120610a0291613f76565b600b80546001600160a01b0319166001600160a01b0383161790556040517f959c0e47a2fe3cf01e237ba4892e2cc3194d77cbfb33e434e40873225d6b595f9061298b9083906140c5565b60405180910390a150565b33611fb68461207d565b336000908152601260205260409020610a02828483614aea565b6000610fab836001600160a01b0384166138da565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081600003612a4257600a60008154612a3890614982565b90915550600a5491505b612a4e84836000613695565b825115612a6f576000828152601360205260409020612a6d8482614c21565b505b5092915050565b6000805260126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b610a02828483614aea565b816001600160a01b0316836001600160a01b031603612b085760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610824565b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612b86826345ffcdad60e01b6138be565b15610cd9576001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f072a7592283e2c2d1d56d21517ff6013325e0f55483f4828373ff4d98b0a1a36910160405180910390a25050565b612bf5848484612132565b612c0184848484613929565b610e795760405162461bcd60e51b815260040161082490614d34565b6060612a6f825b606080600060156000858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015612ca657600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101612c5c565b5050505090508051600003612df3576000612cc08561207d565b90506001600160a01b03811615612df157612ce281634e53ee3d60e11b6138be565b15612d6d57604051634e53ee3d60e11b81526001600160a01b03821690639ca7dc7a90612d1590309089906004016142ff565b600060405180830381865afa158015612d32573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d5a9190810190614e0f565b8151919550935015612d6d575050915091565b6001600160a01b038116600090815260146020908152604080832080548251818502810185019093528083529193909284015b82821015612dea57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101612da0565b5050505091505b505b8051600003612e96576000808052601460209081527f4f26c3876aa9f4b92579780beea1161a61f87ebf1ec6ee865b299e447ecba99c8054604080518285028101850190915281815293919290919084015b82821015612e8f57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101612e45565b5050505090505b805115612fcc5780516001600160401b03811115612eb657612eb6614628565b604051908082528060200260200182016040528015612edf578160200160208202803683370190505b50925080516001600160401b03811115612efb57612efb614628565b604051908082528060200260200182016040528015612f24578160200160208202803683370190505b50915060005b8151811015612fca57818181518110612f4557612f45614956565b602002602001015160000151848281518110612f6357612f63614956565b60200260200101906001600160a01b031690816001600160a01b031681525050818181518110612f9557612f95614956565b60200260200101516020015161ffff16838281518110612fb757612fb7614956565b6020908102919091010152600101612f2a565b505b50915091565b6060600082118015612fe65750600a548211155b6130025760405162461bcd60e51b815260040161082490614a68565b600061300d8361207d565b905061301a600e82611da9565b156130375760405162461bcd60e51b8152600401610824906148da565b600083815260136020526040902080546130509061487b565b15905061316a576001600160a01b0381166000908152601260205260409020805461307a9061487b565b1590506130cb576001600160a01b0381166000908152601260209081526040808320868452601383529281902090516130b4939201614f46565b604051602081830303815290604052915050919050565b600083815260136020526040902080546130e49061487b565b80601f01602080910402602001604051908101604052809291908181526020018280546131109061487b565b801561315d5780601f106131325761010080835404028352916020019161315d565b820191906000526020600020905b81548152906001019060200180831161314057829003601f168201915b5050505050915050919050565b61317b8163e9dc637560e01b6138be565b156131f35760405163e9dc637560e01b81526001600160a01b0382169063e9dc6375906131ae90309087906004016142ff565b600060405180830381865afa1580156131cb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fab9190810190614f5b565b6001600160a01b03811660009081526011602052604090205460ff16613245576001600160a01b038116600090815260106020526040902061323484613a2e565b6040516020016130b4929190614fc8565b6001600160a01b038116600090815260106020526040902080546130e49061487b565b50919050565b60405133906001600160a01b038316907fd19cf84cf0fec6bec9ddfa29c63adf83a55707c712f32c8285d6180a7890147990600090a3610cd9600c8261252c565b6132ba600c83611da9565b6133065760405162461bcd60e51b815260206004820152601e60248201527f43726561746f72436f72653a20496e76616c696420657874656e73696f6e00006044820152606401610824565b6001600160a01b0381161580613328575061332881631e05385b60e31b6138be565b6133665760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610824565b6001600160a01b03828116600090815260176020526040902054811690821614610cd9576001600160a01b0382811660008181526017602052604080822080546001600160a01b031916948616948517905551339392917f6a835c4fcf7e0d398db3762332fdaa1471814ad39f1e2d6d0b3fdabf8efee3e091a45050565b60006001600160e01b031982166314d9799760e21b148061341557506001600160e01b031982166328f10a2160e01b145b80613424575061342482611d39565b8061343f57506001600160e01b03198216635d9dd7eb60e11b145b8061345a57506001600160e01b03198216632dde656160e21b145b8061347557506001600160e01b031982166335681b5360e21b145b806107de57506001600160e01b0319821663152a902d60e11b1492915050565b8281146134b45760405162461bcd60e51b815260040161082490614a0f565b6000805b828110156134ee578383828181106134d2576134d2614956565b90506020020135826134e4919061499b565b91506001016134b8565b506127108110610af45760405162461bcd60e51b8152602060048201526017602482015276496e76616c696420746f74616c20726f79616c7469657360481b6044820152606401610824565b60005b828110156122b75781604051806040016040528088888581811061356357613563614956565b9050602002016020810190613578919061402c565b6001600160a01b0316815260200186868581811061359857613598614956565b61ffff602091820293909301358316909352508354600181810186556000958652948390208451910180549490930151909116600160a01b026001600160b01b03199093166001600160a01b03909116179190911790550161353d565b610e7984848484613ac0565b336000908152601760205260409020546001600160a01b031615610cd9573360008181526017602052604090819020549051631e05385b60e31b815260048101929092526001600160a01b03848116602484015260448301849052169063f029c2d890606401600060405180830381600087803b15801561368157600080fd5b505af11580156122b7573d6000803e3d6000fd5b610a0283838360405180602001604052806000815250613afb565b600081815260018301602052604081205480156137995760006136d4600183614fed565b85549091506000906136e890600190614fed565b905081811461374d57600086600001828154811061370857613708614956565b906000526020600020015490508087600001848154811061372b5761372b614956565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061375e5761375e615000565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107de565b60009150506107de565b6001600160a01b03841630148015906137c957506137c9846001600160a01b0316613c37565b6137ff5760405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b6044820152606401610824565b60405133906001600160a01b038616907fd8cb8ba4086944eabf43c5535b7712015e4d4c714b24bf812c040ea5b7a3e42a90600090a36001600160a01b0384166000908152601060205260409020613858838583614aea565b506001600160a01b0384166000908152601160205260409020805460ff1916821515179055613888600c856129ba565b50610e79846001612b75565b60008260000182815481106138ab576138ab614956565b9060005260206000200154905092915050565b60006138c983613c46565b8015610fab5750610fab8383613c79565b6000818152600183016020526040812054613921575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107de565b5060006107de565b600061393d846001600160a01b0316613c37565b15613a2657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613974903390899088908890600401615016565b6020604051808303816000875af19250505080156139af575060408051601f3d908101601f191682019092526139ac91810190615053565b60015b613a0c573d8080156139dd576040519150601f19603f3d011682016040523d82523d6000602084013e6139e2565b606091505b508051600003613a045760405162461bcd60e51b815260040161082490614d34565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061212a565b50600161212a565b60606000613a3b83613d02565b60010190506000816001600160401b03811115613a5a57613a5a614628565b6040519080825280601f01601f191660200182016040528015613a84576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613a8e57509392505050565b6001600160a01b03841615610e795761ffff81166000908152601a6020526040902054610e79908590859085906001600160a01b0316613dd8565b6001600160a01b038416613b515760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610824565b613b5a83611f6a565b15613ba65760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401610824565b613bb360008585856135f5565b6001600160a01b03808516600081815260076020908152604080832080546001019055805180820182528481526001600160601b038089168285019081528a865260069094528285209151935116600160a01b02929095169190911790935591518592906000805160206150ec833981519152908290a4612c016000858584613929565b6001600160a01b03163b151590565b6000613c59826301ffc9a760e01b613c79565b80156107de5750613c72826001600160e01b0319613c79565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015613ceb575060208210155b8015613cf75750600081115b979650505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613d415772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613d6b576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613d8957662386f26fc10000830492506010015b6305f5e1008310613da1576305f5e100830492506008015b6127108310613db557612710830492506004015b60648310613dc7576064830492506002015b600a83106107de5760010192915050565b6001600160a01b03841615610e79576001600160a01b03811615801590613e1757506001600160a01b03811660009081526016602052604090205460ff165b15613eb257604051632f3537c560e11b81526001600160a01b03821690635e6a6f8a90613e4e903390889088908890600401615070565b6020604051808303816000875af1158015613e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e91919061509a565b613ead5760405162461bcd60e51b8152600401610824906150b7565b610e79565b600b546001600160a01b031615610e7957600b54604051632f3537c560e11b81526001600160a01b0390911690635e6a6f8a90613ef9903390889088908890600401615070565b6020604051808303816000875af1158015613f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3c919061509a565b610e795760405162461bcd60e51b8152600401610824906150b7565b50805460008255906000526020600020908101906108369190613fb0565b508054613f829061487b565b6000825580601f10613f92575050565b601f0160209004906000526020600020908101906108369190613fcf565b5b80821115610e275780546001600160b01b0319168155600101613fb1565b5b80821115610e275760008155600101613fd0565b6001600160e01b03198116811461083657600080fd5b60006020828403121561400c57600080fd5b8135610fab81613fe4565b6001600160a01b038116811461083657600080fd5b60006020828403121561403e57600080fd5b8135610fab81614017565b60005b8381101561406457818101518382015260200161404c565b50506000910152565b60008151808452614085816020860160208601614049565b601f01601f19169290920160200192915050565b602081526000610fab602083018461406d565b6000602082840312156140be57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600080604083850312156140ec57600080fd5b82356140f781614017565b946020939093013593505050565b600081518084526020808501945080840160005b8381101561413557815187529582019590820190600101614119565b509495945050505050565b602081526000610fab6020830184614105565b60008083601f84011261416557600080fd5b5081356001600160401b0381111561417c57600080fd5b602083019150836020828501011115610c7957600080fd5b6000806000604084860312156141a957600080fd5b8335925060208401356001600160401b038111156141c657600080fd5b6141d286828701614153565b9497909650939450505050565b60008083601f8401126141f157600080fd5b5081356001600160401b0381111561420857600080fd5b6020830191508360208260051b8501011115610c7957600080fd5b60008060008060006060868803121561423b57600080fd5b8535945060208601356001600160401b038082111561425957600080fd5b61426589838a016141df565b9096509450604088013591508082111561427e57600080fd5b5061428b888289016141df565b969995985093965092949392505050565b6000806000606084860312156142b157600080fd5b83356142bc81614017565b925060208401356142cc81614017565b929592945050506040919091013590565b600080604083850312156142f057600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b6000806020838503121561432b57600080fd5b82356001600160401b0381111561434157600080fd5b61434d85828601614153565b90969095509350505050565b60008060006040848603121561436e57600080fd5b833561437981614017565b925060208401356001600160401b038111156141c657600080fd5b6020808252825182820181905260009190848201906040850190845b818110156143d55783516001600160a01b0316835292840192918401916001016143b0565b50909695505050505050565b600080600080604085870312156143f757600080fd5b84356001600160401b038082111561440e57600080fd5b61441a888389016141df565b9096509450602087013591508082111561443357600080fd5b50614440878288016141df565b95989497509550505050565b60008060006040848603121561446157600080fd5b833561446c81614017565b925060208401356001600160401b0381111561448757600080fd5b6141d2868287016141df565b801515811461083657600080fd5b600080600080606085870312156144b757600080fd5b84356144c281614017565b935060208501356001600160401b038111156144dd57600080fd5b6144e987828801614153565b90945092505060408501356144fd81614493565b939692955090935050565b60008060006040848603121561451d57600080fd5b83356001600160401b0381111561453357600080fd5b61453f86828701614153565b909450925050602084013561455381614493565b809150509250925092565b6000806040838503121561457157600080fd5b823561457c81614017565b9150602083013561458c81614493565b809150509250929050565b6000602082840312156145a957600080fd5b8135610fab81614493565b600080604083850312156145c757600080fd5b82356145d281614017565b9150602083013561ffff8116811461458c57600080fd5b60008060008060006060868803121561460157600080fd5b853561460c81614017565b945060208601356001600160401b038082111561425957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561466657614666614628565b604052919050565b60006001600160401b0382111561468757614687614628565b50601f01601f191660200190565b600080600080608085870312156146ab57600080fd5b84356146b681614017565b935060208501356146c681614017565b92506040850135915060608501356001600160401b038111156146e857600080fd5b8501601f810187136146f957600080fd5b803561470c6147078261466e565b61463e565b81815288602083850101111561472157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b600081518084526020808501945080840160005b838110156141355781516001600160a01b031687529582019590820190600101614757565b602081526000610fab6020830184614743565b6040815260006147a26040830185614743565b82810360208401526147b48185614105565b95945050505050565b80356001600160501b0381168114610ba457600080fd5b600080604083850312156147e757600080fd5b82356147f281614017565b9150614800602084016147bd565b90509250929050565b6000806040838503121561481c57600080fd5b823561482781614017565b9150602083013561458c81614017565b60208082526024908201527f41646d696e436f6e74726f6c3a204d757374206265206f776e6572206f7220616040820152633236b4b760e11b606082015260800190565b600181811c9082168061488f57607f821691505b60208210810361326857634e487b7160e01b600052602260045260246000fd5b6020808252601190820152702737b732bc34b9ba32b73a103a37b5b2b760791b604082015260600190565b602080825260159082015274115e1d195b9cda5bdb88189b1858dadb1a5cdd1959605a1b604082015260600190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016149945761499461496c565b5060010190565b808201808211156107de576107de61496c565b6000808335601e198436030181126149c557600080fd5b8301803591506001600160401b038211156149df57600080fd5b602001915036819003821315610c7957600080fd5b600060208284031215614a0657600080fd5b610fab826147bd565b6020808252600d908201526c125b9d985b1a59081a5b9c1d5d609a1b604082015260600190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6020808252600d908201526c24b73b30b634b2103a37b5b2b760991b604082015260600190565b601f821115610a0257600081815260208120601f850160051c81016020861015614ab65750805b601f850160051c820191505b818110156122b757828155600101614ac2565b600019600383901b1c191660019190911b1790565b6001600160401b03831115614b0157614b01614628565b614b1583614b0f835461487b565b83614a8f565b6000601f841160018114614b435760008515614b315750838201355b614b3b8682614ad5565b845550610af4565b600083815260209020601f19861690835b82811015614b745786850135825560209485019460019092019101614b54565b5086821015614b915760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6040808252810184905260008560608301825b87811015614be6578235614bc981614017565b6001600160a01b0316825260209283019290910190600101614bb6565b5083810360208501528481526001600160fb1b03851115614c0657600080fd5b8460051b915081866020830137016020019695505050505050565b81516001600160401b03811115614c3a57614c3a614628565b614c4e81614c48845461487b565b84614a8f565b602080601f831160018114614c7d5760008415614c6b5750858301515b614c758582614ad5565b8655506122b7565b600085815260208120601f198616915b82811015614cac57888601518255948401946001909101908401614c8d565b5085821015614cca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176107de576107de61496c565b600082614d0e57634e487b7160e01b600052601260045260246000fd5b500490565b600061ffff808316818103614d2a57614d2a61496c565b6001019392505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001600160401b03821115614d9f57614d9f614628565b5060051b60200190565b600082601f830112614dba57600080fd5b81516020614dca61470783614d86565b82815260059290921b84018101918181019086841115614de957600080fd5b8286015b84811015614e045780518352918301918301614ded565b509695505050505050565b60008060408385031215614e2257600080fd5b82516001600160401b0380821115614e3957600080fd5b818501915085601f830112614e4d57600080fd5b81516020614e5d61470783614d86565b82815260059290921b84018101918181019089841115614e7c57600080fd5b948201945b83861015614ea3578551614e9481614017565b82529482019490820190614e81565b91880151919650909350505080821115614ebc57600080fd5b50614ec985828601614da9565b9150509250929050565b60008154614ee08161487b565b60018281168015614ef85760018114614f0d57614f3c565b60ff1984168752821515830287019450614f3c565b8560005260208060002060005b85811015614f335781548a820152908401908201614f1a565b50505082870194505b5050505092915050565b600061212a614f558386614ed3565b84614ed3565b600060208284031215614f6d57600080fd5b81516001600160401b03811115614f8357600080fd5b8201601f81018413614f9457600080fd5b8051614fa26147078261466e565b818152856020838501011115614fb757600080fd5b6147b4826020830160208601614049565b6000614fd48285614ed3565b8351614fe4818360208801614049565b01949350505050565b818103818111156107de576107de61496c565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906150499083018461406d565b9695505050505050565b60006020828403121561506557600080fd5b8151610fab81613fe4565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6000602082840312156150ac57600080fd5b8151610fab81614493565b6020808252601a9082015279457874656e73696f6e20617070726f76616c206661696c75726560301b60408201526060019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b846108c86534dfdcb81a368169eb6dc0fdea08a5873b10ab74940e74a4ab55664736f6c63430008130033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:4144:81",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:81",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "46:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "63:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "70:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "75:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "66:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "66:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "56:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "56:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "56:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "103:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "106:4:81",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "96:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "96:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "96:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "127:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "130:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "120:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "120:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "120:15:81"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "14:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "210:776:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "259:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "268:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "271:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "261:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "261:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "261:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "238:6:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "246:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "234:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "234:17:81"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "253:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "230:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "230:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "223:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "223:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "220:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "284:23:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "300:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "294:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "294:13:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "288:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "316:28:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "334:2:81",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "338:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "330:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "330:10:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "342:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "326:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "326:18:81"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "320:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "367:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "369:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "369:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "369:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "359:2:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "363:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "356:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "356:10:81"
                  },
                  "nodeType": "YulIf",
                  "src": "353:36:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "398:17:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "412:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "408:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "408:7:81"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "402:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "424:23:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "444:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "438:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "438:9:81"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "428:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "456:71:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "478:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "502:2:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "506:4:81",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "498:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "498:13:81"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "513:2:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "494:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "494:22:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "518:2:81",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "490:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "490:31:81"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "523:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "486:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "486:40:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "474:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "474:53:81"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "460:10:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "586:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "588:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "588:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "588:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "545:10:81"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "557:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "542:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "542:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "565:10:81"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "577:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "562:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "562:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "539:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "539:46:81"
                  },
                  "nodeType": "YulIf",
                  "src": "536:72:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "624:2:81",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "628:10:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "617:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "617:22:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "617:22:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "655:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "663:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "648:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "648:18:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "648:18:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "675:14:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "685:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "679:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "735:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "744:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "747:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "737:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "737:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "737:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "712:6:81"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "720:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "708:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "708:15:81"
                          },
                          {
                            "name": "_4",
                            "nodeType": "YulIdentifier",
                            "src": "725:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "704:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "704:24:81"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "730:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "701:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "701:33:81"
                  },
                  "nodeType": "YulIf",
                  "src": "698:53:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "760:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "769:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "764:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "825:87:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "memPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "854:6:81"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "862:1:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "850:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "850:14:81"
                                },
                                {
                                  "name": "_4",
                                  "nodeType": "YulIdentifier",
                                  "src": "866:2:81"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "846:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "846:23:81"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "885:6:81"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "893:1:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "881:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "881:14:81"
                                    },
                                    {
                                      "name": "_4",
                                      "nodeType": "YulIdentifier",
                                      "src": "897:2:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "877:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "877:23:81"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "871:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "871:30:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "839:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "839:63:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "839:63:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "790:1:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "793:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "787:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "787:9:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "797:19:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "799:15:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "808:1:81"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "811:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "804:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "804:10:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "799:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "783:3:81",
                    "statements": []
                  },
                  "src": "779:133:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "936:6:81"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "944:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "932:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "932:15:81"
                          },
                          {
                            "name": "_4",
                            "nodeType": "YulIdentifier",
                            "src": "949:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "928:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "928:24:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "954:1:81",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "921:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "921:35:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "921:35:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "965:15:81",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "974:6:81"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "965:5:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_string_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "184:6:81",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "192:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "200:5:81",
                "type": ""
              }
            ],
            "src": "146:840:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1109:444:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1155:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1164:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1167:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1157:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1157:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1157:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1130:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1139:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1126:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1126:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1151:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1122:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1122:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1119:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1180:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1200:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1194:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1194:16:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "1184:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1219:28:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1237:2:81",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1241:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "1233:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1233:10:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1245:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "1229:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1229:18:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "1223:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1274:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1283:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1286:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1276:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1276:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1276:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1262:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1270:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1259:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1259:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1256:34:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1299:71:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1342:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1353:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1338:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1338:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "1362:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "1309:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1309:61:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1299:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1379:41:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1405:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1416:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1401:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1401:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1395:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1395:25:81"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "1383:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1449:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1458:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1461:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1451:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1451:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1451:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "1435:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1445:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1432:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1432:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1429:36:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1474:73:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1517:9:81"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "1528:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1513:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1513:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "1539:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "1484:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1484:63:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1474:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1067:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1078:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1090:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1098:6:81",
                "type": ""
              }
            ],
            "src": "991:562:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1613:325:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1623:22:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1637:1:81",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "1640:4:81"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "1633:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1633:12:81"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "1623:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1654:38:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "1684:4:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1690:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "1680:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1680:12:81"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "1658:18:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1731:31:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1733:27:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "1747:6:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1755:4:81",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "1743:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1743:17:81"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "1733:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "1711:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1704:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1704:26:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1701:61:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1821:111:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1842:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1849:3:81",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1854:10:81",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "1845:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1845:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1835:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1835:31:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1835:31:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1886:1:81",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1889:4:81",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1879:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1879:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1879:15:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1914:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1917:4:81",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1907:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1907:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1907:15:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "1777:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "1800:6:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1808:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "1797:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1797:14:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "1774:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1774:38:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1771:161:81"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "1593:4:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1602:6:81",
                "type": ""
              }
            ],
            "src": "1558:380:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1999:65:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2016:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "2019:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2009:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2009:14:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2009:14:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2032:26:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2050:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2053:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nodeType": "YulIdentifier",
                      "src": "2040:9:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2040:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "2032:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "1982:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "1990:4:81",
                "type": ""
              }
            ],
            "src": "1943:121:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2150:464:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2183:425:81",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "2197:11:81",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "2207:1:81",
                          "type": "",
                          "value": "0"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nodeType": "YulTypedName",
                            "src": "2201:2:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "2228:2:81"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "2232:5:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "2221:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2221:17:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2221:17:81"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "2251:31:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "2273:2:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2277:4:81",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nodeType": "YulIdentifier",
                            "src": "2263:9:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2263:19:81"
                        },
                        "variables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2255:4:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "2295:57:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "2318:4:81"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2328:1:81",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "startIndex",
                                      "nodeType": "YulIdentifier",
                                      "src": "2335:10:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2347:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "2331:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2331:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nodeType": "YulIdentifier",
                                "src": "2324:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2324:27:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "2314:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2314:38:81"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nodeType": "YulTypedName",
                            "src": "2299:11:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2389:23:81",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2391:19:81",
                              "value": {
                                "name": "data",
                                "nodeType": "YulIdentifier",
                                "src": "2406:4:81"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nodeType": "YulIdentifier",
                                  "src": "2391:11:81"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nodeType": "YulIdentifier",
                              "src": "2371:10:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2383:4:81",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "2368:2:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2368:20:81"
                        },
                        "nodeType": "YulIf",
                        "src": "2365:47:81"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "2425:41:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "2439:4:81"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2449:1:81",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "2456:3:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2461:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "2452:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2452:12:81"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nodeType": "YulIdentifier",
                                "src": "2445:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2445:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "2435:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2435:31:81"
                        },
                        "variables": [
                          {
                            "name": "_2",
                            "nodeType": "YulTypedName",
                            "src": "2429:2:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "2479:24:81",
                        "value": {
                          "name": "deleteStart",
                          "nodeType": "YulIdentifier",
                          "src": "2492:11:81"
                        },
                        "variables": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "2483:5:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2577:21:81",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "2586:5:81"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2593:2:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2579:6:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2579:17:81"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2579:17:81"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "start",
                              "nodeType": "YulIdentifier",
                              "src": "2527:5:81"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "2534:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "2524:2:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2524:13:81"
                        },
                        "nodeType": "YulForLoop",
                        "post": {
                          "nodeType": "YulBlock",
                          "src": "2538:26:81",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2540:22:81",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "2553:5:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2560:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2549:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2549:13:81"
                              },
                              "variableNames": [
                                {
                                  "name": "start",
                                  "nodeType": "YulIdentifier",
                                  "src": "2540:5:81"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nodeType": "YulBlock",
                          "src": "2520:3:81",
                          "statements": []
                        },
                        "src": "2516:82:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "2166:3:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2171:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2163:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2163:11:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2160:448:81"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "2122:5:81",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "2129:3:81",
                "type": ""
              },
              {
                "name": "startIndex",
                "nodeType": "YulTypedName",
                "src": "2134:10:81",
                "type": ""
              }
            ],
            "src": "2069:545:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2704:81:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2714:65:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nodeType": "YulIdentifier",
                            "src": "2729:4:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2747:1:81",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "2750:3:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2743:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2743:11:81"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2760:1:81",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "2756:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2756:6:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2739:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2739:24:81"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "2735:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2735:29:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "2725:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2725:40:81"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2771:1:81",
                            "type": "",
                            "value": "1"
                          },
                          {
                            "name": "len",
                            "nodeType": "YulIdentifier",
                            "src": "2774:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "2767:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2767:11:81"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "2722:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2722:57:81"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nodeType": "YulIdentifier",
                      "src": "2714:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "2681:4:81",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "2687:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nodeType": "YulTypedName",
                "src": "2695:4:81",
                "type": ""
              }
            ],
            "src": "2619:166:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2886:1256:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2896:24:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "2916:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2910:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2910:10:81"
                  },
                  "variables": [
                    {
                      "name": "newLen",
                      "nodeType": "YulTypedName",
                      "src": "2900:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2963:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "2965:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2965:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2965:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "2935:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2951:2:81",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2955:1:81",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "2947:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2947:10:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2959:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2943:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2943:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2932:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2932:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2929:56:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "3038:4:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "3076:4:81"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nodeType": "YulIdentifier",
                              "src": "3070:5:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3070:11:81"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nodeType": "YulIdentifier",
                          "src": "3044:25:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3044:38:81"
                      },
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "3084:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nodeType": "YulIdentifier",
                      "src": "2994:43:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2994:97:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2994:97:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3100:18:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3117:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulTypedName",
                      "src": "3104:9:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3127:23:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3146:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "srcOffset_1",
                      "nodeType": "YulTypedName",
                      "src": "3131:11:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3159:24:81",
                  "value": {
                    "name": "srcOffset_1",
                    "nodeType": "YulIdentifier",
                    "src": "3172:11:81"
                  },
                  "variableNames": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulIdentifier",
                      "src": "3159:9:81"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3229:656:81",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "3243:35:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "3262:6:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "3274:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "3270:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "3270:7:81"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "3258:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3258:20:81"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nodeType": "YulTypedName",
                                "src": "3247:7:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "3291:49:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "3335:4:81"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nodeType": "YulIdentifier",
                                "src": "3305:29:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3305:35:81"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nodeType": "YulTypedName",
                                "src": "3295:6:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "3353:10:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3362:1:81",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "3357:1:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "3440:172:81",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3465:6:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "3483:3:81"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nodeType": "YulIdentifier",
                                                "src": "3488:9:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3479:3:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3479:19:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3473:5:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3473:26:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "3458:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3458:42:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "3458:42:81"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3517:24:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3531:6:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3539:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3527:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3527:14:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "3517:6:81"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3558:40:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3575:9:81"
                                      },
                                      {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3586:11:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3571:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3571:27:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nodeType": "YulIdentifier",
                                      "src": "3558:9:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "3387:1:81"
                                },
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "3390:7:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "3384:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3384:14:81"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "3399:28:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3401:24:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "3410:1:81"
                                      },
                                      {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3413:11:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3406:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3406:19:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "3401:1:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "3380:3:81",
                              "statements": []
                            },
                            "src": "3376:236:81"
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "3660:166:81",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "3678:43:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "3705:3:81"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "3710:9:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3701:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3701:19:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3695:5:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3695:26:81"
                                  },
                                  "variables": [
                                    {
                                      "name": "lastValue",
                                      "nodeType": "YulTypedName",
                                      "src": "3682:9:81",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3745:6:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "lastValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "3757:9:81"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3784:1:81",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "newLen",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3787:6:81"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3780:3:81"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3780:14:81"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3796:3:81",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3776:3:81"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3776:24:81"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3806:1:81",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3802:3:81"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3802:6:81"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3772:3:81"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3772:37:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "3768:3:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3768:42:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3753:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3753:58:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "3738:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3738:74:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "3738:74:81"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "3631:7:81"
                                },
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "3640:6:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "3628:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3628:19:81"
                            },
                            "nodeType": "YulIf",
                            "src": "3625:201:81"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "3846:4:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3860:1:81",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "3863:6:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "3856:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3856:14:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "3872:1:81",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "3852:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "3852:22:81"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "3839:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3839:36:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3839:36:81"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "3222:663:81",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3227:1:81",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3902:234:81",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "3916:14:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3929:1:81",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3920:5:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "3965:67:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3983:35:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "4002:3:81"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "4007:9:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3998:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3998:19:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3992:5:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3992:26:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "3983:5:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "newLen",
                              "nodeType": "YulIdentifier",
                              "src": "3946:6:81"
                            },
                            "nodeType": "YulIf",
                            "src": "3943:89:81"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "4052:4:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "4111:5:81"
                                    },
                                    {
                                      "name": "newLen",
                                      "nodeType": "YulIdentifier",
                                      "src": "4118:6:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nodeType": "YulIdentifier",
                                    "src": "4058:52:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "4058:67:81"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "4045:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4045:81:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "4045:81:81"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "3894:242:81",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "3202:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3210:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3199:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3199:14:81"
                  },
                  "nodeType": "YulSwitch",
                  "src": "3192:944:81"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "2871:4:81",
                "type": ""
              },
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "2877:3:81",
                "type": ""
              }
            ],
            "src": "2790:1352:81"
          }
        ]
      },
      "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        mstore(add(add(memPtr, _1), _4), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\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 array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}",
      "id": 81,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:42837:81",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:81",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "58:87:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "123:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "132:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "135:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "125:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "125:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "125:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "81:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "92:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "103:3:81",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "108:10:81",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:20:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "88:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "88:32:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "78:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "78:43:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "71:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "71:51:81"
                  },
                  "nodeType": "YulIf",
                  "src": "68:71:81"
                }
              ]
            },
            "name": "validator_revert_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "47:5:81",
                "type": ""
              }
            ],
            "src": "14:131:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "219:176:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "265:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "274:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "277:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "267:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "267:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "267:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "240:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "249:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "236:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "236:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "261:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "232:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "232:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "229:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "290:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "316:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "303:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "303:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "294:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "359:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bytes4",
                      "nodeType": "YulIdentifier",
                      "src": "335:23:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "335:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "335:30:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "374:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "384:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "374:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "185:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "196:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "208:6:81",
                "type": ""
              }
            ],
            "src": "150:245:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "495:92:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "505:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "517:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "528:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "513:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "513:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "505:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "547:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "572:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "565:6:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "565:14:81"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "558:6:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "558:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "540:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "540:41:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "540:41:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "464:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "475:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "486:4:81",
                "type": ""
              }
            ],
            "src": "400:187:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "637:86:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "701:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "710:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "713:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "703:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "703:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "703:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "660:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "671:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "686:3:81",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "691:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "682:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "682:11:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "695:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "678:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "678:19:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "667:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "667:31:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "657:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "657:42:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "650:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "650:50:81"
                  },
                  "nodeType": "YulIf",
                  "src": "647:70:81"
                }
              ]
            },
            "name": "validator_revert_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "626:5:81",
                "type": ""
              }
            ],
            "src": "592:131:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "798:177:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "844:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "853:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "856:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "846:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "846:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "846:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "819:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "828:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "815:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "815:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "840:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "811:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "811:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "808:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "869:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "895:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "882:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "882:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "873:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "939:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "914:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "914:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "914:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "954:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "964:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "954:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "764:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "775:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "787:6:81",
                "type": ""
              }
            ],
            "src": "728:247:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1046:184:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1056:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "1065:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "1060:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1125:63:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1150:3:81"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "1155:1:81"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1146:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1146:11:81"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "1169:3:81"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "1174:1:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1165:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1165:11:81"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "1159:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1159:18:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1139:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1139:39:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1139:39:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "1086:1:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1089:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "1083:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1083:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "1097:19:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1099:15:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "1108:1:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1111:2:81",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1104:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1104:10:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "1099:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "1079:3:81",
                    "statements": []
                  },
                  "src": "1075:113:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "1208:3:81"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "1213:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1204:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1204:16:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1222:1:81",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1197:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1197:27:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1197:27:81"
                }
              ]
            },
            "name": "copy_memory_to_memory_with_cleanup",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "1024:3:81",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "1029:3:81",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1034:6:81",
                "type": ""
              }
            ],
            "src": "980:250:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1285:221:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1295:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1315:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1309:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1309:12:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "1299:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "1337:3:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1342:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1330:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1330:19:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1330:19:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1397:5:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1404:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1393:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1393:16:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "1415:3:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1420:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1411:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1411:14:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1427:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "1358:34:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1358:76:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1358:76:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1443:57:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "1458:3:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1471:6:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1479:2:81",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1467:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1467:15:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1488:2:81",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1484:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1484:7:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1463:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1463:29:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1454:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1454:39:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1495:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1450:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1450:50:81"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "1443:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1262:5:81",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "1269:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1277:3:81",
                "type": ""
              }
            ],
            "src": "1235:271:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1632:99:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1649:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1660:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1642:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1642:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1642:21:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1672:53:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "1698:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1710:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1721:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1706:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1706:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "1680:17:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1680:45:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1672:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1601:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1612:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1623:4:81",
                "type": ""
              }
            ],
            "src": "1511:220:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1806:110:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1852:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1861:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1864:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1854:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1854:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1854:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1827:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1836:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1823:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1823:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1848:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1819:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1819:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1816:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1877:33:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1900:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1887:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1887:23:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1877:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1772:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1783:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1795:6:81",
                "type": ""
              }
            ],
            "src": "1736:180:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2022:102:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2032:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2044:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2055:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2040:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2040:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2032:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2074:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "2089:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2105:3:81",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2110:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "2101:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2101:11:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2114:1:81",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "2097:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2097:19:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "2085:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2085:32:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2067:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2067:51:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2067:51:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1991:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2002:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "2013:4:81",
                "type": ""
              }
            ],
            "src": "1921:203:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2216:228:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2262:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2271:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2274:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2264:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2264:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2264:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2237:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2246:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2233:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2233:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2258:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2229:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2229:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2226:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2287:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2313:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2300:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2300:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "2291:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2357:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "2332:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2332:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2332:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2372:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "2382:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2372:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2396:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2423:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2434:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2419:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2419:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2406:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2406:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2396:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2174:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2185:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2197:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2205:6:81",
                "type": ""
              }
            ],
            "src": "2129:315:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2510:374:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2520:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2540:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2534:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2534:12:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "2524:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2562:3:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2567:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2555:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2555:19:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2555:19:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2583:14:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "2593:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "2587:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2606:19:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2617:3:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2622:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2613:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2613:12:81"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "2606:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2634:28:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2652:5:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2659:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2648:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2648:14:81"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "2638:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2671:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "2680:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "2675:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2739:120:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "2760:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2771:6:81"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "2765:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2765:13:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "2753:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2753:26:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2753:26:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "2792:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "2803:3:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "2808:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "2799:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2799:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "2792:3:81"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "2824:25:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "2838:6:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "2846:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "2834:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2834:15:81"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "2824:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "2701:1:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2704:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "2698:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2698:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "2712:18:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "2714:14:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "2723:1:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2726:1:81",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "2719:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2719:9:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "2714:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "2694:3:81",
                    "statements": []
                  },
                  "src": "2690:169:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2868:10:81",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "2875:3:81"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "2868:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2487:5:81",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2494:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2502:3:81",
                "type": ""
              }
            ],
            "src": "2449:435:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3040:110:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3057:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3068:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3050:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3050:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3050:21:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3080:64:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "3117:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3129:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3140:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3125:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3125:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "3088:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3088:56:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3080:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3009:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3020:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3031:4:81",
                "type": ""
              }
            ],
            "src": "2889:261:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3228:275:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3277:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3286:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3289:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3279:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3279:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3279:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3256:6:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3264:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3252:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3252:17:81"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "3271:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "3248:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3248:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "3241:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3241:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "3238:55:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3302:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3325:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3312:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3312:20:81"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "3302:6:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3375:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3384:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3387:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3377:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3377:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3377:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3347:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3355:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3344:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3344:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "3341:50:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3400:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3416:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3424:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3412:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3412:17:81"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "3400:8:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3481:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3490:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3493:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3483:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3483:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3483:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3452:6:81"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "3460:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3448:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3448:19:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3469:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3444:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3444:30:81"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "3476:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3441:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3441:39:81"
                  },
                  "nodeType": "YulIf",
                  "src": "3438:59:81"
                }
              ]
            },
            "name": "abi_decode_string_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "3191:6:81",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "3199:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "3207:8:81",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "3217:6:81",
                "type": ""
              }
            ],
            "src": "3155:348:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3615:372:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3661:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3670:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3673:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3663:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3663:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3663:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3636:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3645:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3632:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3632:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3657:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3628:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3628:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "3625:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3686:33:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3709:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3696:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3696:23:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3686:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3728:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3759:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3770:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3755:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3755:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3742:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3742:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "3732:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3817:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3826:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3829:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3819:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3819:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3819:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3789:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3797:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3786:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3786:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "3783:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3842:85:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3899:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3910:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3895:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3895:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3919:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "3868:26:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3868:59:81"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "3846:8:81",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "3856:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3936:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "3946:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3936:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3963:18:81",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "3973:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "3963:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_string_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3565:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3576:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3588:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3596:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "3604:6:81",
                "type": ""
              }
            ],
            "src": "3508:479:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4084:283:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4133:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4142:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4145:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4135:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4135:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4135:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "4112:6:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4120:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4108:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4108:17:81"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "4127:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "4104:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4104:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "4097:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4097:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4094:55:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4158:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4181:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4168:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4168:20:81"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "4158:6:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4231:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4240:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4243:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4233:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4233:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4233:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "4203:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4211:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4200:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4200:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4197:50:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4256:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4272:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4280:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4268:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4268:17:81"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "4256:8:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4345:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4354:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4357:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4347:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4347:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4347:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "4308:6:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4320:1:81",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4323:6:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "4316:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4316:14:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4304:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4304:27:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4333:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4300:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4300:38:81"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "4340:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4297:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4297:47:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4294:67:81"
                }
              ]
            },
            "name": "abi_decode_array_address_payable_dyn_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "4047:6:81",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "4055:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "4063:8:81",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "4073:6:81",
                "type": ""
              }
            ],
            "src": "3992:375:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4554:683:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4600:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4609:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4612:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4602:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4602:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4602:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4575:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4584:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4571:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4571:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4596:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4567:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4567:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4564:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4625:33:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4648:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4635:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4635:23:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4625:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4667:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4698:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4709:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4694:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4694:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4681:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4681:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "4671:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4722:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "4732:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "4726:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4777:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4786:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4789:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4779:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4779:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4779:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4765:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4773:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4762:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4762:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4759:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4802:104:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4878:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4889:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4874:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4874:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4898:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_payable_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "4828:45:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4828:78:81"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "4806:8:81",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "4816:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4915:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "4925:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4915:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4942:18:81",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "4952:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "4942:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4969:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5002:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5013:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4998:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4998:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4985:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4985:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "4973:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5046:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5055:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5058:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5048:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5048:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5048:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "5032:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5042:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5029:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5029:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5026:36:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5071:106:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5147:9:81"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "5158:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5143:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5143:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5169:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_payable_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "5097:45:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5097:80:81"
                  },
                  "variables": [
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "5075:8:81",
                      "type": ""
                    },
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "5085:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5186:18:81",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "5196:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "5186:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5213:18:81",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "5223:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "5213:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4488:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4499:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4511:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4519:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "4527:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "4535:6:81",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "4543:6:81",
                "type": ""
              }
            ],
            "src": "4372:865:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5346:352:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5392:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5401:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5404:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5394:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5394:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5394:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5367:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5376:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5363:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5363:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5388:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5359:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5359:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5356:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5417:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5443:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5430:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5430:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "5421:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5487:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "5462:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5462:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5462:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5502:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "5512:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5502:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5526:47:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5558:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5569:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5554:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5554:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5541:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5541:32:81"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "5530:7:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "5607:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "5582:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5582:33:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5582:33:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5624:17:81",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "5634:7:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "5624:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5650:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5677:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5688:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5673:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5673:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5660:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5660:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "5650:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5296:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5307:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5319:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5327:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5335:6:81",
                "type": ""
              }
            ],
            "src": "5242:456:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5804:76:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5814:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5826:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5837:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5822:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5822:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5814:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5856:9:81"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5867:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5849:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5849:25:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5849:25:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5773:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5784:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5795:4:81",
                "type": ""
              }
            ],
            "src": "5703:177:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5972:161:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6018:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6027:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6030:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6020:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6020:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6020:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5993:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6002:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5989:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5989:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6014:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5985:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5985:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5982:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6043:33:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6066:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6053:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6053:23:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6043:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6085:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6112:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6123:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6108:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6108:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6095:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6095:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "6085:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5930:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5941:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5953:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5961:6:81",
                "type": ""
              }
            ],
            "src": "5885:248:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6267:145:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6277:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6289:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6300:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6285:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6285:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6277:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6319:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "6334:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6350:3:81",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6355:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "6346:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6346:11:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6359:1:81",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "6342:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6342:19:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "6330:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6330:32:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6312:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6312:51:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6312:51:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6383:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6394:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6379:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6379:18:81"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "6399:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6372:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6372:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6372:34:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6228:9:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6239:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6247:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6258:4:81",
                "type": ""
              }
            ],
            "src": "6138:274:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6507:321:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6553:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6562:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6565:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6555:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6555:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6555:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6528:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6537:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6524:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6524:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6549:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6520:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6520:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "6517:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6578:37:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6605:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6592:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6592:23:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "6582:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6658:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6667:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6670:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6660:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6660:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6660:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6630:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6638:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6627:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6627:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "6624:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6683:85:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6740:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "6751:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6736:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6736:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6760:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "6709:26:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6709:59:81"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nodeType": "YulTypedName",
                      "src": "6687:8:81",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "6697:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6777:18:81",
                  "value": {
                    "name": "value0_1",
                    "nodeType": "YulIdentifier",
                    "src": "6787:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6777:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6804:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "6814:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "6804:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6465:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6476:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6488:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6496:6:81",
                "type": ""
              }
            ],
            "src": "6417:411:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6940:439:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6986:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6995:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6998:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6988:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6988:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6988:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6961:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6970:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6957:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6957:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6982:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6953:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6953:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "6950:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7011:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7037:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7024:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7024:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7015:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7081:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "7056:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7056:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7056:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7096:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "7106:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7096:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7120:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7151:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7162:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7147:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7147:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7134:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7134:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "7124:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7209:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7218:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7221:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7211:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7211:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7211:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "7181:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7189:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7178:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7178:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "7175:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7234:85:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7291:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "7302:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7287:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7287:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7311:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "7260:26:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7260:59:81"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "7238:8:81",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "7248:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7328:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "7338:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "7328:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7355:18:81",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "7365:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "7355:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_string_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6890:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6901:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6913:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6921:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "6929:6:81",
                "type": ""
              }
            ],
            "src": "6833:546:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7535:507:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7545:12:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "7555:2:81",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "7549:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7566:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7584:9:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "7595:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7580:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7580:18:81"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "7570:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7614:9:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "7625:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7607:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7607:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7607:21:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7637:17:81",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "7648:6:81"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "7641:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7663:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "7683:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "7677:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7677:13:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "7667:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "7706:6:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "7714:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7699:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7699:22:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7699:22:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7730:25:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7741:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7752:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7737:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7737:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "7730:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7764:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "7782:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "7790:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7778:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7778:15:81"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "7768:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7802:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "7811:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "7806:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7870:146:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "7891:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "srcPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7906:6:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "7900:5:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "7900:13:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7923:3:81",
                                          "type": "",
                                          "value": "160"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7928:1:81",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "7919:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7919:11:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "7932:1:81",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "7915:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "7915:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "7896:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7896:39:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "7884:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7884:52:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7884:52:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7949:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "7960:3:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "7965:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "7956:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7956:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "7949:3:81"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7981:25:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "7995:6:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "8003:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "7991:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7991:15:81"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "7981:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "7832:1:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "7835:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "7829:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7829:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "7843:18:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "7845:14:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "7854:1:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7857:1:81",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "7850:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7850:9:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "7845:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "7825:3:81",
                    "statements": []
                  },
                  "src": "7821:195:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8025:11:81",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "8033:3:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8025:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7504:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7515:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7526:4:81",
                "type": ""
              }
            ],
            "src": "7384:658:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8212:632:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8258:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8267:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8270:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8260:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8260:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8260:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8233:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8242:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8229:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8229:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8254:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8225:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8225:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "8222:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8283:37:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8310:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8297:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8297:23:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "8287:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8329:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "8339:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "8333:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8384:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8393:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8396:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8386:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8386:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8386:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8372:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8380:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8369:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8369:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "8366:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8409:104:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8485:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "8496:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8481:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8481:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8505:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_payable_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "8435:45:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8435:78:81"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nodeType": "YulTypedName",
                      "src": "8413:8:81",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "8423:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8522:18:81",
                  "value": {
                    "name": "value0_1",
                    "nodeType": "YulIdentifier",
                    "src": "8532:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8522:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8549:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "8559:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8549:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8576:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8609:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8620:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8605:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8605:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8592:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8592:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "8580:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8653:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8662:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8665:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8655:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8655:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8655:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "8639:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8649:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8636:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8636:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "8633:36:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8678:106:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8754:9:81"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "8765:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8750:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8750:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8776:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_payable_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "8704:45:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8704:80:81"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "8682:8:81",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "8692:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8793:18:81",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "8803:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "8793:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8820:18:81",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "8830:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "8820:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8154:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8165:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8177:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8185:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "8193:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "8201:6:81",
                "type": ""
              }
            ],
            "src": "8047:797:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8983:458:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9029:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9038:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9041:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9031:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9031:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9031:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9004:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9013:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9000:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9000:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9025:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8996:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8996:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "8993:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9054:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9080:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9067:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9067:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "9058:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "9124:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "9099:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9099:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9099:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9139:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "9149:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9139:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9163:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9194:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9205:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9190:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9190:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9177:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9177:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "9167:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9252:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9261:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9264:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9254:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9254:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9254:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9224:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9232:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9221:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9221:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9218:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9277:104:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9353:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "9364:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9349:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9349:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9373:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_payable_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "9303:45:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9303:78:81"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "9281:8:81",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "9291:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9390:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "9400:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "9390:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9417:18:81",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "9427:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "9417:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8933:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8944:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8956:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8964:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "8972:6:81",
                "type": ""
              }
            ],
            "src": "8849:592:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9488:76:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9542:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9551:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9554:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9544:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9544:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9544:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "9511:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9532:5:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9525:6:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9525:13:81"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "9518:6:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9518:21:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "9508:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9508:32:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "9501:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9501:40:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9498:60:81"
                }
              ]
            },
            "name": "validator_revert_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "9477:5:81",
                "type": ""
              }
            ],
            "src": "9446:118:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9690:560:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9736:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9745:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9748:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9738:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9738:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9738:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9711:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9720:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9707:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9707:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9732:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9703:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9703:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9700:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9761:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9787:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9774:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9774:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "9765:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "9831:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "9806:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9806:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9806:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9846:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "9856:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9846:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9870:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9901:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9912:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9897:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9897:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9884:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9884:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "9874:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9959:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9968:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9971:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9961:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9961:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9961:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9931:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9939:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9928:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9928:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9925:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9984:85:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10041:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "10052:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10037:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10037:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10061:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "10010:26:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10010:59:81"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "9988:8:81",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "9998:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10078:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "10088:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "10078:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10105:18:81",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "10115:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "10105:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10132:47:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10164:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10175:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10160:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10160:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10147:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10147:32:81"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "10136:7:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "10210:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nodeType": "YulIdentifier",
                      "src": "10188:21:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10188:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10188:30:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10227:17:81",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "10237:7:81"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "10227:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_string_calldata_ptrt_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9632:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9643:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9655:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9663:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "9671:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "9679:6:81",
                "type": ""
              }
            ],
            "src": "9569:681:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10376:458:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10422:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10431:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10434:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10424:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10424:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10424:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "10397:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10406:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "10393:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10393:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10418:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "10389:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10389:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "10386:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10447:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10473:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10460:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10460:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "10451:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "10517:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "10492:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10492:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10492:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10532:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "10542:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "10532:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10556:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10587:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10598:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10583:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10583:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10570:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10570:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "10560:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10645:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10654:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10657:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10647:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10647:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10647:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "10617:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10625:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10614:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10614:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "10611:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10670:104:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10746:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "10757:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10742:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10742:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10766:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_payable_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "10696:45:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10696:78:81"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "10674:8:81",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "10684:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10783:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "10793:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "10783:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10810:18:81",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "10820:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "10810:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_array$_t_uint80_$dyn_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10326:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "10337:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10349:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "10357:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "10365:6:81",
                "type": ""
              }
            ],
            "src": "10255:579:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11008:632:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11054:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11063:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11066:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11056:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11056:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11056:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11029:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11038:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "11025:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11025:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11050:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "11021:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11021:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "11018:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11079:37:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11106:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11093:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11093:23:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "11083:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11125:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "11135:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "11129:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11180:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11189:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11192:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11182:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11182:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11182:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "11168:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "11176:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11165:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11165:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "11162:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11205:104:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11281:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "11292:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11277:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11277:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "11301:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_payable_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "11231:45:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11231:78:81"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nodeType": "YulTypedName",
                      "src": "11209:8:81",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "11219:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11318:18:81",
                  "value": {
                    "name": "value0_1",
                    "nodeType": "YulIdentifier",
                    "src": "11328:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "11318:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11345:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "11355:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "11345:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11372:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11405:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11416:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11401:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11401:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11388:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11388:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "11376:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11449:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11458:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11461:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11451:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11451:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11451:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "11435:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "11445:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11432:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11432:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "11429:36:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11474:106:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11550:9:81"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "11561:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11546:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11546:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "11572:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_payable_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "11500:45:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11500:80:81"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "11478:8:81",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "11488:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11589:18:81",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "11599:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "11589:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11616:18:81",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "11626:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "11616:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptrt_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10950:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "10961:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10973:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "10981:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "10989:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "10997:6:81",
                "type": ""
              }
            ],
            "src": "10839:801:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11749:436:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11795:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11804:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11807:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11797:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11797:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11797:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11770:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11779:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "11766:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11766:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11791:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "11762:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11762:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "11759:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11820:37:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11847:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11834:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11834:23:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "11824:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11900:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11909:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11912:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11902:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11902:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11902:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "11872:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11880:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11869:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11869:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "11866:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11925:85:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11982:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "11993:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11978:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11978:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "12002:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "11951:26:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11951:59:81"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nodeType": "YulTypedName",
                      "src": "11929:8:81",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "11939:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12019:18:81",
                  "value": {
                    "name": "value0_1",
                    "nodeType": "YulIdentifier",
                    "src": "12029:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "12019:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12046:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "12056:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "12046:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12073:45:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12103:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12114:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12099:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12099:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12086:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12086:32:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "12077:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "12149:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nodeType": "YulIdentifier",
                      "src": "12127:21:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12127:28:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12127:28:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12164:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "12174:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "12164:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11699:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "11710:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "11722:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "11730:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "11738:6:81",
                "type": ""
              }
            ],
            "src": "11645:540:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12274:298:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12320:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12329:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12332:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12322:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12322:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12322:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "12295:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12304:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "12291:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12291:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12316:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "12287:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12287:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "12284:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12345:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12371:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12358:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12358:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "12349:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "12415:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "12390:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12390:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12390:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12430:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "12440:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "12430:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12454:47:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12486:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12497:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12482:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12482:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12469:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12469:32:81"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "12458:7:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "12532:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nodeType": "YulIdentifier",
                      "src": "12510:21:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12510:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12510:30:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12549:17:81",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "12559:7:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "12549:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12232:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "12243:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12255:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "12263:6:81",
                "type": ""
              }
            ],
            "src": "12190:382:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12644:174:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12690:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12699:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12702:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12692:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12692:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12692:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "12665:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12674:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "12661:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12661:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12686:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "12657:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12657:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "12654:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12715:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12741:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12728:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12728:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "12719:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "12782:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nodeType": "YulIdentifier",
                      "src": "12760:21:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12760:28:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12760:28:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12797:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "12807:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "12797:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12610:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "12621:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12633:6:81",
                "type": ""
              }
            ],
            "src": "12577:241:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12909:329:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12955:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12964:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12967:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12957:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12957:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12957:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "12930:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12939:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "12926:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12926:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12951:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "12922:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12922:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "12919:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12980:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13006:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12993:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12993:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "12984:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "13050:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "13025:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13025:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13025:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13065:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "13075:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "13065:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13089:47:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13121:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13132:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13117:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13117:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "13104:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13104:32:81"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "13093:7:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13190:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13199:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13202:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13192:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13192:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13192:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_1",
                            "nodeType": "YulIdentifier",
                            "src": "13158:7:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "13171:7:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13180:6:81",
                                "type": "",
                                "value": "0xffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "13167:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13167:20:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "13155:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13155:33:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "13148:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13148:41:81"
                  },
                  "nodeType": "YulIf",
                  "src": "13145:61:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13215:17:81",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "13225:7:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "13215:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint16",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12867:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "12878:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12890:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "12898:6:81",
                "type": ""
              }
            ],
            "src": "12823:415:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13425:750:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13471:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13480:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13483:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13473:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13473:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13473:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "13446:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13455:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "13442:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13442:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13467:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "13438:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13438:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "13435:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13496:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13522:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "13509:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13509:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "13500:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "13566:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "13541:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13541:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13541:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13581:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "13591:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "13581:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13605:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13636:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13647:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13632:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13632:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "13619:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13619:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "13609:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13660:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "13670:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "13664:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13715:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13724:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13727:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13717:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13717:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13717:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "13703:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "13711:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "13700:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13700:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "13697:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13740:104:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13816:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "13827:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13812:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13812:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "13836:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_payable_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "13766:45:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13766:78:81"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "13744:8:81",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "13754:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13853:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "13863:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "13853:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13880:18:81",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "13890:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "13880:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13907:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13940:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13951:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13936:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13936:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "13923:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13923:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "13911:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13984:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13993:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13996:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13986:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13986:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13986:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "13970:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "13980:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "13967:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13967:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "13964:36:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14009:106:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14085:9:81"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "14096:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14081:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14081:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "14107:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_payable_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "14035:45:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14035:80:81"
                  },
                  "variables": [
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "14013:8:81",
                      "type": ""
                    },
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "14023:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14124:18:81",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "14134:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "14124:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14151:18:81",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "14161:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "14151:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13359:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "13370:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13382:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "13390:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "13398:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "13406:6:81",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "13414:6:81",
                "type": ""
              }
            ],
            "src": "13243:932:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14279:101:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "14289:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14301:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14312:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14297:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14297:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14289:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14331:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "14346:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14362:2:81",
                                    "type": "",
                                    "value": "80"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14366:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "14358:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14358:10:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14370:1:81",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "14354:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14354:18:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "14342:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14342:31:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14324:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14324:50:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14324:50:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint80__to_t_uint80__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14248:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14259:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14270:4:81",
                "type": ""
              }
            ],
            "src": "14180:200:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14417:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14434:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14441:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14446:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "14437:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14437:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14427:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14427:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14427:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14474:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14477:4:81",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14467:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14467:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14467:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14498:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14501:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "14491:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14491:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14491:15:81"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "14385:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14562:230:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "14572:19:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14588:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "14582:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14582:9:81"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "14572:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14600:58:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "14622:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "size",
                                "nodeType": "YulIdentifier",
                                "src": "14638:4:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14644:2:81",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14634:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14634:13:81"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14653:2:81",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "14649:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14649:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "14630:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14630:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14618:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14618:40:81"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "14604:10:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14733:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "14735:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14735:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14735:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "14676:10:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14688:18:81",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "14673:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14673:34:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "14712:10:81"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "14724:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "14709:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14709:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "14670:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14670:62:81"
                  },
                  "nodeType": "YulIf",
                  "src": "14667:88:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14771:2:81",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "14775:10:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14764:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14764:22:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14764:22:81"
                }
              ]
            },
            "name": "allocate_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "14542:4:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "14551:6:81",
                "type": ""
              }
            ],
            "src": "14517:275:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14854:129:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14898:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "14900:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14900:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14900:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "14870:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14878:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "14867:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14867:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "14864:56:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14929:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "14949:6:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14957:2:81",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14945:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14945:15:81"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14966:2:81",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "14962:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14962:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "14941:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14941:29:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14972:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14937:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14937:40:81"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "14929:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "14834:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "14845:4:81",
                "type": ""
              }
            ],
            "src": "14797:186:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15118:886:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15165:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15174:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15177:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "15167:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15167:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15167:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "15139:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15148:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "15135:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15135:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15160:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "15131:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15131:33:81"
                  },
                  "nodeType": "YulIf",
                  "src": "15128:53:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15190:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15216:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "15203:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15203:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "15194:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "15260:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "15235:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15235:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15235:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15275:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "15285:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "15275:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15299:47:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15331:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15342:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15327:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15327:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "15314:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15314:32:81"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "15303:7:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "15380:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "15355:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15355:33:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15355:33:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15397:17:81",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "15407:7:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "15397:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15423:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15450:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15461:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15446:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15446:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "15433:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15433:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "15423:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15474:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15505:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15516:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15501:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15501:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "15488:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15488:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "15478:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15563:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15572:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15575:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "15565:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15565:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15565:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "15535:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15543:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "15532:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15532:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "15529:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15588:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15602:9:81"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "15613:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15598:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15598:22:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "15592:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15668:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15677:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15680:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "15670:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15670:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15670:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "15647:2:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15651:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15643:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15643:13:81"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "15658:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "15639:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15639:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "15632:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15632:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "15629:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15693:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "15716:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "15703:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15703:16:81"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "15697:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15728:61:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "15785:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "15757:27:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15757:31:81"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "15741:15:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15741:48:81"
                  },
                  "variables": [
                    {
                      "name": "array",
                      "nodeType": "YulTypedName",
                      "src": "15732:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "15805:5:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "15812:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15798:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15798:17:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15798:17:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15861:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15870:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15873:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "15863:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15863:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15863:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "15838:2:81"
                              },
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "15842:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15834:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15834:11:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15847:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15830:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15830:20:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "15852:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "15827:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15827:33:81"
                  },
                  "nodeType": "YulIf",
                  "src": "15824:53:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "array",
                            "nodeType": "YulIdentifier",
                            "src": "15903:5:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15910:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15899:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15899:14:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "15919:2:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15923:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15915:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15915:11:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "15928:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "15886:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15886:45:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15886:45:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "15955:5:81"
                              },
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "15962:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15951:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15951:14:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15967:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15947:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15947:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15972:1:81",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15940:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15940:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15940:34:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15983:15:81",
                  "value": {
                    "name": "array",
                    "nodeType": "YulIdentifier",
                    "src": "15993:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "15983:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15060:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "15071:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "15083:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "15091:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "15099:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "15107:6:81",
                "type": ""
              }
            ],
            "src": "14988:1016:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16078:400:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16088:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "16108:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "16102:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16102:12:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "16092:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "16130:3:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "16135:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16123:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16123:19:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16123:19:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16151:14:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "16161:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "16155:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16174:19:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "16185:3:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "16190:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16181:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16181:12:81"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "16174:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16202:28:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "16220:5:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "16227:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16216:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16216:14:81"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "16206:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16239:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "16248:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "16243:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16307:146:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "16328:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "srcPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "16343:6:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "16337:5:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "16337:13:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16360:3:81",
                                          "type": "",
                                          "value": "160"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16365:1:81",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "16356:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16356:11:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "16369:1:81",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "16352:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "16352:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "16333:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16333:39:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "16321:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16321:52:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16321:52:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "16386:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "16397:3:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "16402:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "16393:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16393:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "16386:3:81"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "16418:25:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "16432:6:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "16440:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "16428:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16428:15:81"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "16418:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "16269:1:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "16272:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "16266:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16266:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "16280:18:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "16282:14:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "16291:1:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16294:1:81",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "16287:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16287:9:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "16282:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "16262:3:81",
                    "statements": []
                  },
                  "src": "16258:195:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16462:10:81",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "16469:3:81"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "16462:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_array_address_payable_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "16055:5:81",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "16062:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "16070:3:81",
                "type": ""
              }
            ],
            "src": "16009:469:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16650:118:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16667:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16678:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16660:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16660:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16660:21:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16690:72:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "16735:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16747:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16758:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16743:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16743:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_address_payable_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "16698:36:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16698:64:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16690:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_address_payable_$dyn_memory_ptr__to_t_array$_t_address_payable_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16619:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16630:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16641:4:81",
                "type": ""
              }
            ],
            "src": "16483:285:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17018:244:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17035:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17046:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17028:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17028:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17028:21:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17058:78:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "17109:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17121:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17132:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17117:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17117:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_address_payable_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "17072:36:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17072:64:81"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "17062:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17156:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17167:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17152:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17152:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "17176:6:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17184:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "17172:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17172:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17145:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17145:50:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17145:50:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17204:52:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "17241:6:81"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "17249:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "17212:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17212:44:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17204:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_address_payable_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_address_payable_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16979:9:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "16990:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16998:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17009:4:81",
                "type": ""
              }
            ],
            "src": "16773:489:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17315:123:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "17325:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "17347:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "17334:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17334:20:81"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "17325:5:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17416:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17425:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17428:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "17418:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17418:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17418:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "17376:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "17387:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17402:2:81",
                                        "type": "",
                                        "value": "80"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17406:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "17398:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17398:10:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17410:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "17394:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17394:18:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "17383:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "17383:30:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "17373:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17373:41:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "17366:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17366:49:81"
                  },
                  "nodeType": "YulIf",
                  "src": "17363:69:81"
                }
              ]
            },
            "name": "abi_decode_uint80",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "17294:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "17305:5:81",
                "type": ""
              }
            ],
            "src": "17267:171:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17529:233:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17575:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17584:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17587:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "17577:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17577:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17577:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "17550:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17559:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "17546:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17546:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17571:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "17542:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17542:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "17539:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17600:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17626:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "17613:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17613:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "17604:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "17670:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "17645:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17645:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17645:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17685:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "17695:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "17685:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17709:47:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17741:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17752:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17737:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17737:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint80",
                      "nodeType": "YulIdentifier",
                      "src": "17719:17:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17719:37:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "17709:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint80",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17487:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "17498:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17510:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "17518:6:81",
                "type": ""
              }
            ],
            "src": "17443:319:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17854:301:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17900:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17909:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17912:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "17902:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17902:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17902:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "17875:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17884:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "17871:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17871:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17896:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "17867:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17867:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "17864:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17925:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17951:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "17938:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17938:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "17929:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "17995:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "17970:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17970:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17970:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18010:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "18020:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "18010:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "18034:47:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18066:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18077:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18062:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18062:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "18049:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18049:32:81"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "18038:7:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "18115:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "18090:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18090:33:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18090:33:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18132:17:81",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "18142:7:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "18132:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17812:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "17823:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17835:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "17843:6:81",
                "type": ""
              }
            ],
            "src": "17767:388:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18334:226:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18351:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18362:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18344:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18344:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18344:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18385:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18396:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18381:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18381:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18401:2:81",
                        "type": "",
                        "value": "36"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18374:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18374:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18374:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18424:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18435:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18420:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18420:18:81"
                      },
                      {
                        "hexValue": "41646d696e436f6e74726f6c3a204d757374206265206f776e6572206f722061",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "18440:34:81",
                        "type": "",
                        "value": "AdminControl: Must be owner or a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18413:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18413:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18413:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18495:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18506:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18491:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18491:18:81"
                      },
                      {
                        "hexValue": "646d696e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "18511:6:81",
                        "type": "",
                        "value": "dmin"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18484:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18484:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18484:34:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18527:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18539:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18550:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18535:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18535:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18527:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ca6fc84f9a44d1110756284e5c56ff72cff80e2de6c9cfbe8379a88afa111687__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18311:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18325:4:81",
                "type": ""
              }
            ],
            "src": "18160:400:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18620:325:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "18630:22:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18644:1:81",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "18647:4:81"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "18640:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18640:12:81"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "18630:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "18661:38:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "18691:4:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18697:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "18687:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18687:12:81"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "18665:18:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "18738:31:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "18740:27:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "18754:6:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "18762:4:81",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "18750:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18750:17:81"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "18740:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "18718:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "18711:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18711:26:81"
                  },
                  "nodeType": "YulIf",
                  "src": "18708:61:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "18828:111:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "18849:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "18856:3:81",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "18861:10:81",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "18852:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "18852:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "18842:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18842:31:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "18842:31:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "18893:1:81",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "18896:4:81",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "18886:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18886:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "18886:15:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "18921:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "18924:4:81",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "18914:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18914:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "18914:15:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "18784:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "18807:6:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18815:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "18804:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18804:14:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "18781:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18781:38:81"
                  },
                  "nodeType": "YulIf",
                  "src": "18778:161:81"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "18600:4:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "18609:6:81",
                "type": ""
              }
            ],
            "src": "18565:380:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19124:223:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19141:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19152:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19134:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19134:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19134:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19175:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19186:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19171:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19171:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19191:2:81",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19164:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19164:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19164:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19214:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19225:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19210:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19210:18:81"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19230:34:81",
                        "type": "",
                        "value": "ERC721: approval to current owne"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19203:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19203:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19203:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19285:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19296:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19281:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19281:18:81"
                      },
                      {
                        "hexValue": "72",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19301:3:81",
                        "type": "",
                        "value": "r"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19274:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19274:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19274:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19314:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19326:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19337:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19322:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19322:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19314:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19101:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19115:4:81",
                "type": ""
              }
            ],
            "src": "18950:397:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19526:251:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19543:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19554:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19536:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19536:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19536:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19577:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19588:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19573:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19573:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19593:2:81",
                        "type": "",
                        "value": "61"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19566:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19566:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19566:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19616:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19627:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19612:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19612:18:81"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19632:34:81",
                        "type": "",
                        "value": "ERC721: approve caller is not to"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19605:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19605:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19605:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19687:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19698:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19683:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19683:18:81"
                      },
                      {
                        "hexValue": "6b656e206f776e6572206f7220617070726f76656420666f7220616c6c",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19703:31:81",
                        "type": "",
                        "value": "ken owner or approved for all"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19676:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19676:59:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19676:59:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19744:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19756:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19767:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19752:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19752:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19744:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19503:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19517:4:81",
                "type": ""
              }
            ],
            "src": "19352:425:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19956:167:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19973:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19984:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19966:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19966:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19966:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20007:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20018:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20003:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20003:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20023:2:81",
                        "type": "",
                        "value": "17"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19996:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19996:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19996:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20046:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20057:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20042:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20042:18:81"
                      },
                      {
                        "hexValue": "4e6f6e6578697374656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20062:19:81",
                        "type": "",
                        "value": "Nonexistent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20035:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20035:47:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20035:47:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20091:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20103:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20114:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20099:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20099:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20091:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19933:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19947:4:81",
                "type": ""
              }
            ],
            "src": "19782:341:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20302:172:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20319:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20330:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20312:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20312:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20312:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20353:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20364:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20349:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20349:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20369:2:81",
                        "type": "",
                        "value": "22"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20342:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20342:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20342:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20392:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20403:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20388:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20388:18:81"
                      },
                      {
                        "hexValue": "4e6f20657874656e73696f6e20666f7220746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20408:24:81",
                        "type": "",
                        "value": "No extension for token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20381:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20381:52:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20381:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20442:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20454:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20465:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20450:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20450:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20442:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9af8056f7bbf995e43fff5dc3ca8e50b237f8938603e7ec81cea349a49fd0fcd__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20279:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20293:4:81",
                "type": ""
              }
            ],
            "src": "20128:346:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20653:171:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20670:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20681:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20663:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20663:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20663:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20704:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20715:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20700:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20700:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20720:2:81",
                        "type": "",
                        "value": "21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20693:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20693:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20693:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20743:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20754:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20739:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20739:18:81"
                      },
                      {
                        "hexValue": "457874656e73696f6e20626c61636b6c6973746564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20759:23:81",
                        "type": "",
                        "value": "Extension blacklisted"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20732:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20732:51:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20732:51:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20792:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20804:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20815:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20800:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20800:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20792:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_4beb819a81c47e20a26775f9ad72b3da5e765415ddadbc3186b244e4bc01e621__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20630:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20644:4:81",
                "type": ""
              }
            ],
            "src": "20479:345:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21003:235:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21020:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21031:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21013:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21013:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21013:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21054:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21065:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21050:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21050:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21070:2:81",
                        "type": "",
                        "value": "45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21043:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21043:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21043:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21093:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21104:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21089:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21089:18:81"
                      },
                      {
                        "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21109:34:81",
                        "type": "",
                        "value": "ERC721: caller is not token owne"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21082:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21082:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21082:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21164:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21175:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21160:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21160:18:81"
                      },
                      {
                        "hexValue": "72206f7220617070726f766564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21180:15:81",
                        "type": "",
                        "value": "r or approved"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21153:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21153:43:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21153:43:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21205:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21217:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21228:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21213:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21213:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21205:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20980:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20994:4:81",
                "type": ""
              }
            ],
            "src": "20829:409:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21275:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21292:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21299:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21304:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "21295:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21295:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21285:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21285:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21285:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21332:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21335:4:81",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21325:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21325:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21325:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21356:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21359:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "21349:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21349:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21349:15:81"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nodeType": "YulFunctionDefinition",
            "src": "21243:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21407:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21424:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21431:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21436:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "21427:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21427:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21417:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21417:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21417:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21464:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21467:4:81",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21457:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21457:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21457:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21488:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21491:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "21481:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21481:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21481:15:81"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "21375:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21554:88:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "21585:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "21587:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "21587:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "21587:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "21570:5:81"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21581:1:81",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "21577:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21577:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "21567:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21567:17:81"
                  },
                  "nodeType": "YulIf",
                  "src": "21564:43:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21616:20:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "21627:5:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21634:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21623:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21623:13:81"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "21616:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "21536:5:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "21546:3:81",
                "type": ""
              }
            ],
            "src": "21507:135:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21695:77:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "21705:16:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "21716:1:81"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "21719:1:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21712:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21712:9:81"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "21705:3:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "21744:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "21746:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "21746:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "21746:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "21736:1:81"
                      },
                      {
                        "name": "sum",
                        "nodeType": "YulIdentifier",
                        "src": "21739:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "21733:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21733:10:81"
                  },
                  "nodeType": "YulIf",
                  "src": "21730:36:81"
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "21678:1:81",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "21681:1:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "21687:3:81",
                "type": ""
              }
            ],
            "src": "21647:125:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21872:427:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "21882:51:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nodeType": "YulIdentifier",
                        "src": "21921:11:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "21908:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21908:25:81"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nodeType": "YulTypedName",
                      "src": "21886:18:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "22022:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "22031:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "22034:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "22024:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "22024:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "22024:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nodeType": "YulIdentifier",
                            "src": "21956:18:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "21984:12:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21984:14:81"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "22000:8:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "21980:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21980:29:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22015:2:81",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "22011:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22011:7:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "21976:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "21976:43:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "21952:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21952:68:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "21945:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21945:76:81"
                  },
                  "nodeType": "YulIf",
                  "src": "21942:96:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "22047:47:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nodeType": "YulIdentifier",
                        "src": "22065:8:81"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nodeType": "YulIdentifier",
                        "src": "22075:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22061:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22061:33:81"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nodeType": "YulTypedName",
                      "src": "22051:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22103:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nodeType": "YulIdentifier",
                        "src": "22126:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "22113:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22113:20:81"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "22103:6:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "22176:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "22185:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "22188:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "22178:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "22178:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "22178:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "22148:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22156:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "22145:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22145:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "22142:50:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22201:25:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nodeType": "YulIdentifier",
                        "src": "22213:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22221:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22209:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22209:17:81"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nodeType": "YulIdentifier",
                      "src": "22201:4:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "22277:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "22286:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "22289:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "22279:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "22279:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "22279:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nodeType": "YulIdentifier",
                        "src": "22242:4:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nodeType": "YulIdentifier",
                              "src": "22252:12:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22252:14:81"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "22268:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "22248:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22248:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nodeType": "YulIdentifier",
                      "src": "22238:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22238:38:81"
                  },
                  "nodeType": "YulIf",
                  "src": "22235:58:81"
                }
              ]
            },
            "name": "access_calldata_tail_t_string_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nodeType": "YulTypedName",
                "src": "21829:8:81",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nodeType": "YulTypedName",
                "src": "21839:11:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nodeType": "YulTypedName",
                "src": "21855:4:81",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "21861:6:81",
                "type": ""
              }
            ],
            "src": "21777:522:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22373:115:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "22419:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "22428:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "22431:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "22421:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "22421:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "22421:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "22394:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22403:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "22390:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22390:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22415:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "22386:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22386:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "22383:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22444:38:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22472:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint80",
                      "nodeType": "YulIdentifier",
                      "src": "22454:17:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22454:28:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "22444:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint80",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22339:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "22350:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "22362:6:81",
                "type": ""
              }
            ],
            "src": "22304:184:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22667:181:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22684:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22695:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22677:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22677:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22677:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22718:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22729:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22714:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22714:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22734:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22707:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22707:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22707:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22757:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22768:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22753:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22753:18:81"
                      },
                      {
                        "hexValue": "43616c6c6572206973206e6f74206f776e6572206f7220617070726f766564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22773:33:81",
                        "type": "",
                        "value": "Caller is not owner or approved"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22746:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22746:61:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22746:61:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22816:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22828:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22839:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22824:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22824:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22816:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_603f4022c7c9bca46ef8304cd6a88dd2e6d49898b43e3a9ed7aea6d1839c2f9e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22644:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22658:4:81",
                "type": ""
              }
            ],
            "src": "22493:355:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23027:163:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23044:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23055:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23037:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23037:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23037:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23078:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23089:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23074:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23074:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23094:2:81",
                        "type": "",
                        "value": "13"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23067:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23067:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23067:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23117:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23128:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23113:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23113:18:81"
                      },
                      {
                        "hexValue": "496e76616c696420696e707574",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23133:15:81",
                        "type": "",
                        "value": "Invalid input"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23106:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23106:43:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23106:43:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23158:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23170:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23181:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23166:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23166:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23158:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_af39b50065ba9648c753f781fa674704d13ce8309cf446a262799d7aceba8e5b__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23004:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23018:4:81",
                "type": ""
              }
            ],
            "src": "22853:337:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23369:174:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23386:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23397:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23379:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23379:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23379:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23420:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23431:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23416:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23416:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23436:2:81",
                        "type": "",
                        "value": "24"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23409:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23409:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23409:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23459:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23470:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23455:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23455:18:81"
                      },
                      {
                        "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23475:26:81",
                        "type": "",
                        "value": "ERC721: invalid token ID"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23448:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23448:54:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23448:54:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23511:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23523:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23534:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23519:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23519:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23511:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23346:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23360:4:81",
                "type": ""
              }
            ],
            "src": "23195:348:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23722:231:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23739:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23750:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23732:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23732:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23732:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23773:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23784:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23769:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23769:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23789:2:81",
                        "type": "",
                        "value": "41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23762:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23762:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23762:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23812:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23823:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23808:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23808:18:81"
                      },
                      {
                        "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23828:34:81",
                        "type": "",
                        "value": "ERC721: address zero is not a va"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23801:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23801:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23801:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23883:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23894:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23879:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23879:18:81"
                      },
                      {
                        "hexValue": "6c6964206f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23899:11:81",
                        "type": "",
                        "value": "lid owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23872:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23872:39:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23872:39:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23920:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23932:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23943:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23928:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23928:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23920:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23699:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23713:4:81",
                "type": ""
              }
            ],
            "src": "23548:405:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24132:228:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24149:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24160:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24142:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24142:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24142:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24183:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24194:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24179:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24179:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24199:2:81",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24172:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24172:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24172:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24222:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24233:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24218:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24218:18:81"
                      },
                      {
                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24238:34:81",
                        "type": "",
                        "value": "Ownable: new owner is the zero a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24211:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24211:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24211:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24293:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24304:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24289:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24289:18:81"
                      },
                      {
                        "hexValue": "646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24309:8:81",
                        "type": "",
                        "value": "ddress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24282:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24282:36:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24282:36:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24327:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24339:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24350:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24335:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24335:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24327:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "24109:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24123:4:81",
                "type": ""
              }
            ],
            "src": "23958:402:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24539:175:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24556:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24567:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24549:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24549:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24549:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24590:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24601:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24586:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24586:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24606:2:81",
                        "type": "",
                        "value": "25"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24579:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24579:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24579:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24629:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24640:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24625:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24625:18:81"
                      },
                      {
                        "hexValue": "43616e6e6f7420626c61636b6c69737420796f757273656c66",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24645:27:81",
                        "type": "",
                        "value": "Cannot blacklist yourself"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24618:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24618:55:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24618:55:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24682:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24694:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24705:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24690:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24690:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24682:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0cc452069841e70d1cdcec58868ea025555fa12c1e760cb45ef052b3f01f1f1e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "24516:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24530:4:81",
                "type": ""
              }
            ],
            "src": "24365:349:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24893:163:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24910:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24921:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24903:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24903:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24903:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24944:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24955:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24940:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24940:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24960:2:81",
                        "type": "",
                        "value": "13"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24933:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24933:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24933:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24983:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24994:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24979:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24979:18:81"
                      },
                      {
                        "hexValue": "496e76616c696420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24999:15:81",
                        "type": "",
                        "value": "Invalid token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24972:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24972:43:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24972:43:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25024:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25036:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25047:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25032:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25032:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "25024:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_5e70ebd1d4072d337a7fabaa7bda70fa2633d6e3f89d5cb725a16b10d07e54c6__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "24870:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24884:4:81",
                "type": ""
              }
            ],
            "src": "24719:337:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25117:65:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25134:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "25137:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25127:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25127:14:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25127:14:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25150:26:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25168:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25171:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nodeType": "YulIdentifier",
                      "src": "25158:9:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25158:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "25150:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "25100:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "25108:4:81",
                "type": ""
              }
            ],
            "src": "25061:121:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25268:464:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "25301:425:81",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "25315:11:81",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "25325:1:81",
                          "type": "",
                          "value": "0"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nodeType": "YulTypedName",
                            "src": "25319:2:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "25346:2:81"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "25350:5:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "25339:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "25339:17:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "25339:17:81"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "25369:31:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "25391:2:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "25395:4:81",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nodeType": "YulIdentifier",
                            "src": "25381:9:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "25381:19:81"
                        },
                        "variables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "25373:4:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "25413:57:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "25436:4:81"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "25446:1:81",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "startIndex",
                                      "nodeType": "YulIdentifier",
                                      "src": "25453:10:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "25465:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "25449:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "25449:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nodeType": "YulIdentifier",
                                "src": "25442:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "25442:27:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "25432:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "25432:38:81"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nodeType": "YulTypedName",
                            "src": "25417:11:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25507:23:81",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "25509:19:81",
                              "value": {
                                "name": "data",
                                "nodeType": "YulIdentifier",
                                "src": "25524:4:81"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nodeType": "YulIdentifier",
                                  "src": "25509:11:81"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nodeType": "YulIdentifier",
                              "src": "25489:10:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "25501:4:81",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "25486:2:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "25486:20:81"
                        },
                        "nodeType": "YulIf",
                        "src": "25483:47:81"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "25543:41:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "25557:4:81"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "25567:1:81",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "25574:3:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "25579:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "25570:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "25570:12:81"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nodeType": "YulIdentifier",
                                "src": "25563:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "25563:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "25553:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "25553:31:81"
                        },
                        "variables": [
                          {
                            "name": "_2",
                            "nodeType": "YulTypedName",
                            "src": "25547:2:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "25597:24:81",
                        "value": {
                          "name": "deleteStart",
                          "nodeType": "YulIdentifier",
                          "src": "25610:11:81"
                        },
                        "variables": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "25601:5:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25695:21:81",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "25704:5:81"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25711:2:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25697:6:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25697:17:81"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25697:17:81"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "start",
                              "nodeType": "YulIdentifier",
                              "src": "25645:5:81"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "25652:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "25642:2:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "25642:13:81"
                        },
                        "nodeType": "YulForLoop",
                        "post": {
                          "nodeType": "YulBlock",
                          "src": "25656:26:81",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "25658:22:81",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "25671:5:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25678:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25667:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25667:13:81"
                              },
                              "variableNames": [
                                {
                                  "name": "start",
                                  "nodeType": "YulIdentifier",
                                  "src": "25658:5:81"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nodeType": "YulBlock",
                          "src": "25638:3:81",
                          "statements": []
                        },
                        "src": "25634:82:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "25284:3:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25289:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "25281:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25281:11:81"
                  },
                  "nodeType": "YulIf",
                  "src": "25278:448:81"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "25240:5:81",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "25247:3:81",
                "type": ""
              },
              {
                "name": "startIndex",
                "nodeType": "YulTypedName",
                "src": "25252:10:81",
                "type": ""
              }
            ],
            "src": "25187:545:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25822:81:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "25832:65:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nodeType": "YulIdentifier",
                            "src": "25847:4:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25865:1:81",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "25868:3:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "25861:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25861:11:81"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25878:1:81",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "25874:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25874:6:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "25857:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25857:24:81"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "25853:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "25853:29:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "25843:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25843:40:81"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25889:1:81",
                            "type": "",
                            "value": "1"
                          },
                          {
                            "name": "len",
                            "nodeType": "YulIdentifier",
                            "src": "25892:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "25885:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25885:11:81"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "25840:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25840:57:81"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nodeType": "YulIdentifier",
                      "src": "25832:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "25799:4:81",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "25805:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nodeType": "YulTypedName",
                "src": "25813:4:81",
                "type": ""
              }
            ],
            "src": "25737:166:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26011:1103:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "26052:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "26054:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26054:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26054:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "26027:3:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26032:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "26024:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26024:27:81"
                  },
                  "nodeType": "YulIf",
                  "src": "26021:53:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "26127:4:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "26165:4:81"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nodeType": "YulIdentifier",
                              "src": "26159:5:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "26159:11:81"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nodeType": "YulIdentifier",
                          "src": "26133:25:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26133:38:81"
                      },
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "26173:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nodeType": "YulIdentifier",
                      "src": "26083:43:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26083:94:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26083:94:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "26186:18:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "26203:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulTypedName",
                      "src": "26190:9:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "26247:609:81",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "26261:32:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "len",
                                  "nodeType": "YulIdentifier",
                                  "src": "26280:3:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "26289:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "26285:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "26285:7:81"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "26276:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "26276:17:81"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nodeType": "YulTypedName",
                                "src": "26265:7:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "26306:49:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "26350:4:81"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nodeType": "YulIdentifier",
                                "src": "26320:29:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "26320:35:81"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nodeType": "YulTypedName",
                                "src": "26310:6:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "26368:18:81",
                            "value": {
                              "name": "srcOffset",
                              "nodeType": "YulIdentifier",
                              "src": "26377:9:81"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "26372:1:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "26456:172:81",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "26481:6:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "26506:3:81"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nodeType": "YulIdentifier",
                                                "src": "26511:9:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "26502:3:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26502:19:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nodeType": "YulIdentifier",
                                          "src": "26489:12:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "26489:33:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "26474:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26474:49:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "26474:49:81"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "26540:24:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "26554:6:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26562:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26550:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26550:14:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "26540:6:81"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "26581:33:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "26598:9:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26609:4:81",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26594:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26594:20:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nodeType": "YulIdentifier",
                                      "src": "26581:9:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "26410:1:81"
                                },
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "26413:7:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "26407:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "26407:14:81"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "26422:21:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "26424:17:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "26433:1:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26436:4:81",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26429:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26429:12:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "26424:1:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "26403:3:81",
                              "statements": []
                            },
                            "src": "26399:229:81"
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "26673:127:81",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "26698:6:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "src",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "26727:3:81"
                                                  },
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "26732:9:81"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26723:3:81"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "26723:19:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "calldataload",
                                              "nodeType": "YulIdentifier",
                                              "src": "26710:12:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26710:33:81"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "26761:1:81",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "len",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "26764:3:81"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "26757:3:81"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "26757:11:81"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "26770:3:81",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "26753:3:81"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "26753:21:81"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "26780:1:81",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "26776:3:81"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "26776:6:81"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26749:3:81"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "26749:34:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "26745:3:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26745:39:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "26706:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "26706:79:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "26691:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26691:95:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "26691:95:81"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "26647:7:81"
                                },
                                {
                                  "name": "len",
                                  "nodeType": "YulIdentifier",
                                  "src": "26656:3:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "26644:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "26644:16:81"
                            },
                            "nodeType": "YulIf",
                            "src": "26641:159:81"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "26820:4:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26834:1:81",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "len",
                                          "nodeType": "YulIdentifier",
                                          "src": "26837:3:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "26830:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26830:11:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "26843:1:81",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "26826:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "26826:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "26813:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "26813:33:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "26813:33:81"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "26240:616:81",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26245:1:81",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "26873:235:81",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "26887:14:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26900:1:81",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "26891:5:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "26933:74:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "26951:42:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "26977:3:81"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "26982:9:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "26973:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "26973:19:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "26960:12:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26960:33:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "26951:5:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "len",
                              "nodeType": "YulIdentifier",
                              "src": "26917:3:81"
                            },
                            "nodeType": "YulIf",
                            "src": "26914:93:81"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "27027:4:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "27086:5:81"
                                    },
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "27093:3:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nodeType": "YulIdentifier",
                                    "src": "27033:52:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "27033:64:81"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "27020:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "27020:78:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "27020:78:81"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "26865:243:81",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "26223:3:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26228:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "26220:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26220:11:81"
                  },
                  "nodeType": "YulSwitch",
                  "src": "26213:895:81"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "25991:4:81",
                "type": ""
              },
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "25997:3:81",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "26002:3:81",
                "type": ""
              }
            ],
            "src": "25908:1206:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27384:810:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27394:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "27412:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27423:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "27408:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27408:18:81"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "27398:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "27442:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27453:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27435:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27435:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27435:21:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27465:17:81",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "27476:6:81"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "27469:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "27498:6:81"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "27506:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27491:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27491:22:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27491:22:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "27522:25:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "27533:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27544:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "27529:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27529:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "27522:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27556:20:81",
                  "value": {
                    "name": "value0",
                    "nodeType": "YulIdentifier",
                    "src": "27570:6:81"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "27560:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27585:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "27594:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "27589:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27653:255:81",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "27667:33:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "27693:6:81"
                            }
                          ],
                          "functionName": {
                            "name": "calldataload",
                            "nodeType": "YulIdentifier",
                            "src": "27680:12:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27680:20:81"
                        },
                        "variables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "27671:5:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "27738:5:81"
                            }
                          ],
                          "functionName": {
                            "name": "validator_revert_address",
                            "nodeType": "YulIdentifier",
                            "src": "27713:24:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27713:31:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27713:31:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "27764:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "27773:5:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27788:3:81",
                                          "type": "",
                                          "value": "160"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27793:1:81",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "27784:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27784:11:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "27797:1:81",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "27780:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "27780:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "27769:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "27769:31:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "27757:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27757:44:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27757:44:81"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "27814:14:81",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "27824:4:81",
                          "type": "",
                          "value": "0x20"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nodeType": "YulTypedName",
                            "src": "27818:2:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "27841:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "27852:3:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "27857:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "27848:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27848:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "27841:3:81"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "27873:25:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "27887:6:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "27895:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "27883:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27883:15:81"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "27873:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "27615:1:81"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "27618:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "27612:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27612:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "27626:18:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "27628:14:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "27637:1:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27640:1:81",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "27633:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27633:9:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "27628:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "27608:3:81",
                    "statements": []
                  },
                  "src": "27604:304:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "27928:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27939:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27924:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27924:20:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "27950:3:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "27955:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "27946:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27946:19:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27917:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27917:49:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27917:49:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "27982:3:81"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "27987:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27975:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27975:19:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27975:19:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "28038:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "28047:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "28050:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "28040:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "28040:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "28040:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "28009:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "28025:3:81",
                                "type": "",
                                "value": "251"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "28030:1:81",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "28021:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "28021:11:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28034:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "28017:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28017:19:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "28006:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28006:31:81"
                  },
                  "nodeType": "YulIf",
                  "src": "28003:51:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "28063:28:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28081:1:81",
                        "type": "",
                        "value": "5"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "28084:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "28077:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28077:14:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "28067:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "28117:3:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28122:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28113:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28113:14:81"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "28129:6:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "28137:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "28100:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28100:44:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28100:44:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "28153:35:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "28169:3:81"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "28174:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28165:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28165:16:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28183:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "28161:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28161:27:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "28153:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_address_payable_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_array$_t_address_payable_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "27329:9:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "27340:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "27348:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "27356:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "27364:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "27375:4:81",
                "type": ""
              }
            ],
            "src": "27119:1075:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28373:227:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28390:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28401:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28383:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28383:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28383:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28424:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28435:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28420:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28420:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28440:2:81",
                        "type": "",
                        "value": "37"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28413:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28413:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28413:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28463:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28474:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28459:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28459:18:81"
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "28479:34:81",
                        "type": "",
                        "value": "ERC721: transfer from incorrect "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28452:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28452:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28452:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28534:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28545:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28530:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28530:18:81"
                      },
                      {
                        "hexValue": "6f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "28550:7:81",
                        "type": "",
                        "value": "owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28523:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28523:35:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28523:35:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "28567:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28579:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28590:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "28575:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28575:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "28567:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "28350:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "28364:4:81",
                "type": ""
              }
            ],
            "src": "28199:401:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28779:226:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28796:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28807:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28789:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28789:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28789:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28830:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28841:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28826:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28826:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28846:2:81",
                        "type": "",
                        "value": "36"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28819:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28819:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28819:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28869:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28880:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28865:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28865:18:81"
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "28885:34:81",
                        "type": "",
                        "value": "ERC721: transfer to the zero add"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28858:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28858:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28858:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28940:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28951:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28936:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28936:18:81"
                      },
                      {
                        "hexValue": "72657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "28956:6:81",
                        "type": "",
                        "value": "ress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28929:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28929:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28929:34:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "28972:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28984:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28995:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "28980:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28980:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "28972:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "28756:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "28770:4:81",
                "type": ""
              }
            ],
            "src": "28605:400:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29184:181:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "29201:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29212:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "29194:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29194:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29194:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "29235:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "29246:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "29231:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29231:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29251:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "29224:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29224:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29224:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "29274:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "29285:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "29270:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29270:18:81"
                      },
                      {
                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "29290:33:81",
                        "type": "",
                        "value": "ReentrancyGuard: reentrant call"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "29263:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29263:61:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29263:61:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "29333:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "29345:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29356:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "29341:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29341:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "29333:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "29161:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "29175:4:81",
                "type": ""
              }
            ],
            "src": "29010:355:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29544:178:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "29561:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29572:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "29554:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29554:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29554:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "29595:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "29606:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "29591:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29591:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29611:2:81",
                        "type": "",
                        "value": "28"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "29584:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29584:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29584:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "29634:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "29645:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "29630:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29630:18:81"
                      },
                      {
                        "hexValue": "4d757374206265207265676973746572656420657874656e73696f6e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "29650:30:81",
                        "type": "",
                        "value": "Must be registered extension"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "29623:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29623:58:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29623:58:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "29690:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "29702:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29713:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "29698:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29698:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "29690:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_5feba5446d49a024c011d96fb2b4cea222ce6e949e033fe53cd137156df8a35f__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "29521:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "29535:4:81",
                "type": ""
              }
            ],
            "src": "29370:352:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29823:1256:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "29833:24:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "29853:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "29847:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29847:10:81"
                  },
                  "variables": [
                    {
                      "name": "newLen",
                      "nodeType": "YulTypedName",
                      "src": "29837:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "29900:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "29902:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "29902:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "29902:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "29872:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29880:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "29869:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29869:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "29866:56:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "29975:4:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "30013:4:81"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nodeType": "YulIdentifier",
                              "src": "30007:5:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "30007:11:81"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nodeType": "YulIdentifier",
                          "src": "29981:25:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29981:38:81"
                      },
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "30021:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nodeType": "YulIdentifier",
                      "src": "29931:43:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29931:97:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29931:97:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "30037:18:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "30054:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulTypedName",
                      "src": "30041:9:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "30064:23:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "30083:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "srcOffset_1",
                      "nodeType": "YulTypedName",
                      "src": "30068:11:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "30096:24:81",
                  "value": {
                    "name": "srcOffset_1",
                    "nodeType": "YulIdentifier",
                    "src": "30109:11:81"
                  },
                  "variableNames": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulIdentifier",
                      "src": "30096:9:81"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "30166:656:81",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "30180:35:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "30199:6:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "30211:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "30207:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "30207:7:81"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "30195:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "30195:20:81"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nodeType": "YulTypedName",
                                "src": "30184:7:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "30228:49:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "30272:4:81"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nodeType": "YulIdentifier",
                                "src": "30242:29:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "30242:35:81"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nodeType": "YulTypedName",
                                "src": "30232:6:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "30290:10:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "30299:1:81",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "30294:1:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "30377:172:81",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30402:6:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "30420:3:81"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nodeType": "YulIdentifier",
                                                "src": "30425:9:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "30416:3:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30416:19:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "30410:5:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30410:26:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "30395:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30395:42:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "30395:42:81"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "30454:24:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30468:6:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30476:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30464:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30464:14:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "30454:6:81"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "30495:40:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "30512:9:81"
                                      },
                                      {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "30523:11:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30508:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30508:27:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nodeType": "YulIdentifier",
                                      "src": "30495:9:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "30324:1:81"
                                },
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "30327:7:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "30321:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "30321:14:81"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "30336:28:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "30338:24:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "30347:1:81"
                                      },
                                      {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "30350:11:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30343:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30343:19:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "30338:1:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "30317:3:81",
                              "statements": []
                            },
                            "src": "30313:236:81"
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "30597:166:81",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "30615:43:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "30642:3:81"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "30647:9:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "30638:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30638:19:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "30632:5:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30632:26:81"
                                  },
                                  "variables": [
                                    {
                                      "name": "lastValue",
                                      "nodeType": "YulTypedName",
                                      "src": "30619:9:81",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30682:6:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "lastValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "30694:9:81"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "30721:1:81",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "newLen",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "30724:6:81"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "30717:3:81"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "30717:14:81"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "30733:3:81",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "30713:3:81"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "30713:24:81"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "30743:1:81",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "30739:3:81"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "30739:6:81"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30709:3:81"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "30709:37:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "30705:3:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30705:42:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "30690:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30690:58:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "30675:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30675:74:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "30675:74:81"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "30568:7:81"
                                },
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "30577:6:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "30565:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "30565:19:81"
                            },
                            "nodeType": "YulIf",
                            "src": "30562:201:81"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "30783:4:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30797:1:81",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "30800:6:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "30793:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30793:14:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "30809:1:81",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "30789:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "30789:22:81"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "30776:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "30776:36:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "30776:36:81"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "30159:663:81",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30164:1:81",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "30839:234:81",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "30853:14:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "30866:1:81",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "30857:5:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "30902:67:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "30920:35:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "30939:3:81"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "30944:9:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "30935:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30935:19:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "30929:5:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30929:26:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "30920:5:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "newLen",
                              "nodeType": "YulIdentifier",
                              "src": "30883:6:81"
                            },
                            "nodeType": "YulIf",
                            "src": "30880:89:81"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "30989:4:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "31048:5:81"
                                    },
                                    {
                                      "name": "newLen",
                                      "nodeType": "YulIdentifier",
                                      "src": "31055:6:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nodeType": "YulIdentifier",
                                    "src": "30995:52:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "30995:67:81"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "30982:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "30982:81:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "30982:81:81"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "30831:242:81",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "30139:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30147:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "30136:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30136:14:81"
                  },
                  "nodeType": "YulSwitch",
                  "src": "30129:944:81"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "29808:4:81",
                "type": ""
              },
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "29814:3:81",
                "type": ""
              }
            ],
            "src": "29727:1352:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "31258:178:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "31275:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31286:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "31268:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31268:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "31268:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "31309:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "31320:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "31305:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "31305:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31325:2:81",
                        "type": "",
                        "value": "28"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "31298:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31298:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "31298:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "31348:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "31359:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "31344:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "31344:18:81"
                      },
                      {
                        "hexValue": "4d6f7265207468616e203120726f79616c7479207265636569766572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "31364:30:81",
                        "type": "",
                        "value": "More than 1 royalty receiver"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "31337:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31337:58:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "31337:58:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "31404:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "31416:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31427:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "31412:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31412:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "31404:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_74694d19c1b4be9a45fa733d1aaae2782afce905305cd809636e222af28aa3f3__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "31235:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "31249:4:81",
                "type": ""
              }
            ],
            "src": "31084:352:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "31493:116:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "31503:20:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "31518:1:81"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "31521:1:81"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nodeType": "YulIdentifier",
                      "src": "31514:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31514:9:81"
                  },
                  "variableNames": [
                    {
                      "name": "product",
                      "nodeType": "YulIdentifier",
                      "src": "31503:7:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "31581:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "31583:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "31583:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "31583:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "x",
                                "nodeType": "YulIdentifier",
                                "src": "31552:1:81"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "31545:6:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "31545:9:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "y",
                                "nodeType": "YulIdentifier",
                                "src": "31559:1:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "product",
                                    "nodeType": "YulIdentifier",
                                    "src": "31566:7:81"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "31575:1:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "31562:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31562:15:81"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nodeType": "YulIdentifier",
                              "src": "31556:2:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "31556:22:81"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nodeType": "YulIdentifier",
                          "src": "31542:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "31542:37:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "31535:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31535:45:81"
                  },
                  "nodeType": "YulIf",
                  "src": "31532:71:81"
                }
              ]
            },
            "name": "checked_mul_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "31472:1:81",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "31475:1:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "product",
                "nodeType": "YulTypedName",
                "src": "31481:7:81",
                "type": ""
              }
            ],
            "src": "31441:168:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "31646:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31663:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "31670:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "31675:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "31666:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "31666:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "31656:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31656:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "31656:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31703:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31706:4:81",
                        "type": "",
                        "value": "0x12"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "31696:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31696:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "31696:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31727:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31730:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "31720:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31720:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "31720:15:81"
                }
              ]
            },
            "name": "panic_error_0x12",
            "nodeType": "YulFunctionDefinition",
            "src": "31614:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "31792:171:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "31823:111:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "31844:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "31851:3:81",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "31856:10:81",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "31847:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "31847:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "31837:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "31837:31:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "31837:31:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "31888:1:81",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "31891:4:81",
                              "type": "",
                              "value": "0x12"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "31881:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "31881:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "31881:15:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "31916:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "31919:4:81",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "31909:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "31909:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "31909:15:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "31812:1:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "31805:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31805:9:81"
                  },
                  "nodeType": "YulIf",
                  "src": "31802:132:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "31943:14:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "31952:1:81"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "31955:1:81"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "31948:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31948:9:81"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nodeType": "YulIdentifier",
                      "src": "31943:1:81"
                    }
                  ]
                }
              ]
            },
            "name": "checked_div_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "31777:1:81",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "31780:1:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nodeType": "YulTypedName",
                "src": "31786:1:81",
                "type": ""
              }
            ],
            "src": "31746:217:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "32142:182:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "32159:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "32170:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "32152:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32152:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "32152:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "32193:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "32204:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "32189:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "32189:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "32209:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "32182:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32182:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "32182:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "32232:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "32243:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "32228:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "32228:18:81"
                      },
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "32248:34:81",
                        "type": "",
                        "value": "Ownable: caller is not the owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "32221:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32221:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "32221:62:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "32292:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "32304:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "32315:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "32300:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32300:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "32292:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "32119:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "32133:4:81",
                "type": ""
              }
            ],
            "src": "31968:356:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "32503:169:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "32520:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "32531:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "32513:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32513:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "32513:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "32554:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "32565:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "32550:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "32550:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "32570:2:81",
                        "type": "",
                        "value": "19"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "32543:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32543:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "32543:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "32593:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "32604:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "32589:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "32589:18:81"
                      },
                      {
                        "hexValue": "546f6f206d616e7920657874656e73696f6e73",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "32609:21:81",
                        "type": "",
                        "value": "Too many extensions"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "32582:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32582:49:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "32582:49:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "32640:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "32652:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "32663:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "32648:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32648:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "32640:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_21f6ef9796c821924c8451552637a275db9d13fc80db87bcd51e231390e84cc3__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "32480:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "32494:4:81",
                "type": ""
              }
            ],
            "src": "32329:343:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "32723:151:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "32733:16:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "32743:6:81",
                    "type": "",
                    "value": "0xffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "32737:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "32758:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "32777:5:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "32784:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "32773:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32773:14:81"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "32762:7:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "32815:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "32817:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "32817:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "32817:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "32802:7:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "32811:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "32799:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32799:15:81"
                  },
                  "nodeType": "YulIf",
                  "src": "32796:41:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "32846:22:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "32857:7:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "32866:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "32853:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32853:15:81"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "32846:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint16",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "32705:5:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "32715:3:81",
                "type": ""
              }
            ],
            "src": "32677:197:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "33053:175:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "33070:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33081:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "33063:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33063:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33063:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "33104:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "33115:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "33100:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33100:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33120:2:81",
                        "type": "",
                        "value": "25"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "33093:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33093:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33093:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "33143:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "33154:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "33139:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33139:18:81"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "33159:27:81",
                        "type": "",
                        "value": "ERC721: approve to caller"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "33132:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33132:55:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33132:55:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "33196:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "33208:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33219:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "33204:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33204:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "33196:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "33030:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "33044:4:81",
                "type": ""
              }
            ],
            "src": "32879:349:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "33407:240:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "33424:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33435:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "33417:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33417:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33417:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "33458:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "33469:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "33454:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33454:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33474:2:81",
                        "type": "",
                        "value": "50"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "33447:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33447:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33447:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "33497:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "33508:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "33493:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33493:18:81"
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "33513:34:81",
                        "type": "",
                        "value": "ERC721: transfer to non ERC721Re"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "33486:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33486:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33486:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "33568:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "33579:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "33564:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33564:18:81"
                      },
                      {
                        "hexValue": "63656976657220696d706c656d656e746572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "33584:20:81",
                        "type": "",
                        "value": "ceiver implementer"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "33557:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33557:48:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33557:48:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "33614:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "33626:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33637:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "33622:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33622:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "33614:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "33384:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "33398:4:81",
                "type": ""
              }
            ],
            "src": "33233:414:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "33729:114:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "33773:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "33775:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "33775:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "33775:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "33745:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33753:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "33742:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33742:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "33739:56:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "33804:33:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "33820:1:81",
                            "type": "",
                            "value": "5"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "33823:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "33816:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33816:14:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33832:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "33812:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33812:25:81"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "33804:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_array_address_payable_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "33709:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "33720:4:81",
                "type": ""
              }
            ],
            "src": "33652:191:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "33923:592:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "33972:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "33981:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "33984:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "33974:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "33974:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "33974:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "33951:6:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "33959:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "33947:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "33947:17:81"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "33966:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "33943:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33943:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "33936:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33936:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "33933:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "33997:23:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "34013:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "34007:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34007:13:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "34001:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "34029:14:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "34039:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "34033:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "34052:79:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "34127:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_array_address_payable_dyn",
                          "nodeType": "YulIdentifier",
                          "src": "34079:47:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "34079:51:81"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "34063:15:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34063:68:81"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "34056:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "34140:16:81",
                  "value": {
                    "name": "dst",
                    "nodeType": "YulIdentifier",
                    "src": "34153:3:81"
                  },
                  "variables": [
                    {
                      "name": "dst_1",
                      "nodeType": "YulTypedName",
                      "src": "34144:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "34172:3:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "34177:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "34165:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34165:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "34165:15:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "34189:19:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "34200:3:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "34205:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "34196:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34196:12:81"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "34189:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "34217:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "34239:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34251:1:81",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "34254:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "34247:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "34247:10:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "34235:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "34235:23:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "34260:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "34231:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34231:32:81"
                  },
                  "variables": [
                    {
                      "name": "srcEnd",
                      "nodeType": "YulTypedName",
                      "src": "34221:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "34291:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "34300:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "34303:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "34293:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "34293:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "34293:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "34278:6:81"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "34286:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "34275:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34275:15:81"
                  },
                  "nodeType": "YulIf",
                  "src": "34272:35:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "34316:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "34331:6:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "34339:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "34327:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34327:15:81"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "34320:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "34407:79:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "34428:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "34439:3:81"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "34433:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "34433:10:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "34421:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "34421:23:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "34421:23:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "34457:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "34468:3:81"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "34473:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "34464:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "34464:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "34457:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "34362:3:81"
                      },
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "34367:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "34359:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34359:15:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "34375:23:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "34377:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "34388:3:81"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "34393:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "34384:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "34384:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "34377:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "34355:3:81",
                    "statements": []
                  },
                  "src": "34351:135:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "34495:14:81",
                  "value": {
                    "name": "dst_1",
                    "nodeType": "YulIdentifier",
                    "src": "34504:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "34495:5:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_array_uint256_dyn_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "33897:6:81",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "33905:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "33913:5:81",
                "type": ""
              }
            ],
            "src": "33848:667:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "34676:1069:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "34722:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "34731:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "34734:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "34724:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "34724:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "34724:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "34697:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "34706:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "34693:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "34693:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "34718:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "34689:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34689:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "34686:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "34747:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "34767:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "34761:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34761:16:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "34751:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "34786:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "34796:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "34790:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "34841:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "34850:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "34853:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "34843:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "34843:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "34843:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "34829:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "34837:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "34826:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34826:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "34823:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "34866:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "34880:9:81"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "34891:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "34876:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34876:22:81"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "34870:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "34946:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "34955:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "34958:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "34948:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "34948:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "34948:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "34925:2:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34929:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "34921:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "34921:13:81"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "34936:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "34917:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "34917:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "34910:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34910:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "34907:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "34971:19:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "34987:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "34981:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34981:9:81"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "34975:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "34999:14:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "35009:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "35003:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "35022:79:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "35097:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_array_address_payable_dyn",
                          "nodeType": "YulIdentifier",
                          "src": "35049:47:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "35049:51:81"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "35033:15:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35033:68:81"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "35026:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "35110:16:81",
                  "value": {
                    "name": "dst",
                    "nodeType": "YulIdentifier",
                    "src": "35123:3:81"
                  },
                  "variables": [
                    {
                      "name": "dst_1",
                      "nodeType": "YulTypedName",
                      "src": "35114:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "35142:3:81"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "35147:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "35135:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35135:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "35135:15:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "35159:19:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "35170:3:81"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "35175:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "35166:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35166:12:81"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "35159:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "35187:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "35209:2:81"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "35217:1:81",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "35220:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "35213:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "35213:10:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "35205:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "35205:19:81"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "35226:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "35201:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35201:28:81"
                  },
                  "variables": [
                    {
                      "name": "srcEnd",
                      "nodeType": "YulTypedName",
                      "src": "35191:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "35261:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "35270:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "35273:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "35263:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "35263:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "35263:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "35244:6:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "35252:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "35241:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35241:19:81"
                  },
                  "nodeType": "YulIf",
                  "src": "35238:39:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "35286:22:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "35301:2:81"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "35305:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "35297:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35297:11:81"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "35290:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "35373:154:81",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "35387:23:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "35406:3:81"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "35400:5:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "35400:10:81"
                        },
                        "variables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "35391:5:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "35448:5:81"
                            }
                          ],
                          "functionName": {
                            "name": "validator_revert_address",
                            "nodeType": "YulIdentifier",
                            "src": "35423:24:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "35423:31:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "35423:31:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "35474:3:81"
                            },
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "35479:5:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "35467:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "35467:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "35467:18:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "35498:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "35509:3:81"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "35514:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "35505:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "35505:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "35498:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "35328:3:81"
                      },
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "35333:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "35325:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35325:15:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "35341:23:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "35343:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "35354:3:81"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "35359:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "35350:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "35350:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "35343:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "35321:3:81",
                    "statements": []
                  },
                  "src": "35317:210:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "35536:15:81",
                  "value": {
                    "name": "dst_1",
                    "nodeType": "YulIdentifier",
                    "src": "35546:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "35536:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "35560:41:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "35586:9:81"
                          },
                          {
                            "name": "_4",
                            "nodeType": "YulIdentifier",
                            "src": "35597:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "35582:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "35582:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "35576:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35576:25:81"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "35564:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "35630:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "35639:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "35642:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "35632:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "35632:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "35632:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "35616:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "35626:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "35613:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35613:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "35610:36:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "35655:84:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "35709:9:81"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "35720:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "35705:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "35705:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "35731:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "35665:39:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35665:74:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "35655:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_address_payable_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "34634:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "34645:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "34657:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "34665:6:81",
                "type": ""
              }
            ],
            "src": "34520:1225:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "35808:664:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "35818:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "35841:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "sload",
                      "nodeType": "YulIdentifier",
                      "src": "35835:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35835:12:81"
                  },
                  "variables": [
                    {
                      "name": "slotValue",
                      "nodeType": "YulTypedName",
                      "src": "35822:9:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "35856:50:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nodeType": "YulIdentifier",
                        "src": "35896:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "extract_byte_array_length",
                      "nodeType": "YulIdentifier",
                      "src": "35870:25:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35870:36:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "35860:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "35915:11:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "35925:1:81",
                    "type": "",
                    "value": "1"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "35919:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "35976:126:81",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "35997:3:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "slotValue",
                                      "nodeType": "YulIdentifier",
                                      "src": "36006:9:81"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "36021:3:81",
                                          "type": "",
                                          "value": "255"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "not",
                                        "nodeType": "YulIdentifier",
                                        "src": "36017:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "36017:8:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "and",
                                    "nodeType": "YulIdentifier",
                                    "src": "36002:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "36002:24:81"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "35990:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "35990:37:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "35990:37:81"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "36040:52:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "36051:3:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "length",
                                      "nodeType": "YulIdentifier",
                                      "src": "36060:6:81"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "36082:6:81"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "36075:6:81"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "36075:14:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "36068:6:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "36068:22:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mul",
                                    "nodeType": "YulIdentifier",
                                    "src": "36056:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "36056:35:81"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "36047:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "36047:45:81"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "36040:3:81"
                              }
                            ]
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "35969:133:81",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "35974:1:81",
                        "type": "",
                        "value": "0"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "36118:348:81",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "36139:1:81",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "36142:5:81"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "36132:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "36132:16:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "36132:16:81"
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "36161:14:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "36171:4:81",
                              "type": "",
                              "value": "0x20"
                            },
                            "variables": [
                              {
                                "name": "_2",
                                "nodeType": "YulTypedName",
                                "src": "36165:2:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "36188:31:81",
                            "value": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "36213:1:81",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "name": "_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "36216:2:81"
                                }
                              ],
                              "functionName": {
                                "name": "keccak256",
                                "nodeType": "YulIdentifier",
                                "src": "36203:9:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "36203:16:81"
                            },
                            "variables": [
                              {
                                "name": "dataPos",
                                "nodeType": "YulTypedName",
                                "src": "36192:7:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "36232:10:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "36241:1:81",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "36236:1:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "36309:111:81",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "36338:3:81"
                                          },
                                          {
                                            "name": "i",
                                            "nodeType": "YulIdentifier",
                                            "src": "36343:1:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "36334:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "36334:11:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulIdentifier",
                                            "src": "36353:7:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "36347:5:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "36347:14:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "36327:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36327:35:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "36327:35:81"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "36379:27:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dataPos",
                                        "nodeType": "YulIdentifier",
                                        "src": "36394:7:81"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36403:2:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36390:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36390:16:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dataPos",
                                      "nodeType": "YulIdentifier",
                                      "src": "36379:7:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "36266:1:81"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "36269:6:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "36263:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "36263:13:81"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "36277:19:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "36279:15:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "36288:1:81"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "36291:2:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36284:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36284:10:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "36279:1:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "36259:3:81",
                              "statements": []
                            },
                            "src": "36255:165:81"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "36433:23:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "36444:3:81"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "36449:6:81"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "36440:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "36440:16:81"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "36433:3:81"
                              }
                            ]
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "36111:355:81",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "36116:1:81",
                        "type": "",
                        "value": "1"
                      }
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nodeType": "YulIdentifier",
                        "src": "35946:9:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "35957:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "35942:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35942:18:81"
                  },
                  "nodeType": "YulSwitch",
                  "src": "35935:531:81"
                }
              ]
            },
            "name": "abi_encode_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "35785:5:81",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "35792:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "35800:3:81",
                "type": ""
              }
            ],
            "src": "35750:722:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "36658:96:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "36668:80:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "36701:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "36735:6:81"
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "36743:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_string_storage",
                          "nodeType": "YulIdentifier",
                          "src": "36709:25:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "36709:38:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_storage",
                      "nodeType": "YulIdentifier",
                      "src": "36675:25:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36675:73:81"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "36668:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_storage_t_string_storage__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "36626:3:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "36631:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "36639:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "36650:3:81",
                "type": ""
              }
            ],
            "src": "36477:277:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "36850:557:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "36896:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "36905:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "36908:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "36898:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "36898:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "36898:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "36871:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "36880:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "36867:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "36867:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "36892:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "36863:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36863:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "36860:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "36921:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "36941:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "36935:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36935:16:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "36925:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "36994:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "37003:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "37006:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "36996:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "36996:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "36996:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "36966:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "36974:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "36963:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36963:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "36960:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "37019:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "37033:9:81"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "37044:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "37029:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37029:22:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "37023:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "37099:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "37108:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "37111:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "37101:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "37101:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "37101:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "37078:2:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37082:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "37074:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "37074:13:81"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "37089:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "37070:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "37070:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "37063:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37063:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "37060:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "37124:19:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "37140:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "37134:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37134:9:81"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "37128:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "37152:61:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "37209:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "37181:27:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "37181:31:81"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "37165:15:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37165:48:81"
                  },
                  "variables": [
                    {
                      "name": "array",
                      "nodeType": "YulTypedName",
                      "src": "37156:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "37229:5:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "37236:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "37222:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37222:17:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "37222:17:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "37285:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "37294:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "37297:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "37287:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "37287:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "37287:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "37262:2:81"
                              },
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "37266:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "37258:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "37258:11:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "37271:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "37254:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "37254:20:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "37276:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "37251:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37251:33:81"
                  },
                  "nodeType": "YulIf",
                  "src": "37248:53:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "37349:2:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "37353:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "37345:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "37345:11:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "array",
                            "nodeType": "YulIdentifier",
                            "src": "37362:5:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "37369:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "37358:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "37358:14:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "37374:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "37310:34:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37310:67:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "37310:67:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "37386:15:81",
                  "value": {
                    "name": "array",
                    "nodeType": "YulIdentifier",
                    "src": "37396:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "37386:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "36816:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "36827:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "36839:6:81",
                "type": ""
              }
            ],
            "src": "36759:648:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "37596:205:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "37606:48:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "37642:6:81"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "37650:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_storage",
                      "nodeType": "YulIdentifier",
                      "src": "37616:25:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37616:38:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "37610:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "37663:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "37683:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "37677:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37677:13:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "37667:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "37738:6:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "37746:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "37734:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "37734:17:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "37753:2:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "37757:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "37699:34:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37699:65:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "37699:65:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "37773:22:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "37784:2:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "37788:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "37780:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37780:15:81"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "37773:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "37564:3:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "37569:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "37577:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "37588:3:81",
                "type": ""
              }
            ],
            "src": "37412:389:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "37980:180:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "37997:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38008:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "37990:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37990:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "37990:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38031:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "38042:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "38027:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38027:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38047:2:81",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "38020:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38020:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38020:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38070:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "38081:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "38066:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38066:18:81"
                      },
                      {
                        "hexValue": "43726561746f72436f72653a20496e76616c696420657874656e73696f6e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "38086:32:81",
                        "type": "",
                        "value": "CreatorCore: Invalid extension"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "38059:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38059:60:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38059:60:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "38128:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "38140:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38151:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "38136:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38136:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "38128:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_2d7d7215e277fb812fad4601df1b9ac85cd358bdd281ae38c601df8cd0f402b5__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "37957:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "37971:4:81",
                "type": ""
              }
            ],
            "src": "37806:354:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "38339:165:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "38356:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38367:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "38349:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38349:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38349:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38390:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "38401:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "38386:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38386:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38406:2:81",
                        "type": "",
                        "value": "15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "38379:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38379:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38379:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38429:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "38440:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "38425:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38425:18:81"
                      },
                      {
                        "hexValue": "496e76616c69642061646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "38445:17:81",
                        "type": "",
                        "value": "Invalid address"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "38418:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38418:45:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38418:45:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "38472:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "38484:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38495:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "38480:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38480:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "38472:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "38316:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "38330:4:81",
                "type": ""
              }
            ],
            "src": "38165:339:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "38683:173:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "38700:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38711:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "38693:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38693:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38693:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38734:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "38745:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "38730:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38730:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38750:2:81",
                        "type": "",
                        "value": "23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "38723:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38723:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38723:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38773:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "38784:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "38769:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38769:18:81"
                      },
                      {
                        "hexValue": "496e76616c696420746f74616c20726f79616c74696573",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "38789:25:81",
                        "type": "",
                        "value": "Invalid total royalties"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "38762:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38762:53:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38762:53:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "38824:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "38836:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38847:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "38832:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38832:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "38824:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_bdeae8abc7e2f0e6881f3618c066b1b8be917729ca4a34e4ef407f79dd9f7a90__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "38660:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "38674:4:81",
                "type": ""
              }
            ],
            "src": "38509:347:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "38939:177:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "38985:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "38994:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "38997:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "38987:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "38987:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "38987:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "38960:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38969:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "38956:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38956:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38981:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "38952:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38952:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "38949:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "39010:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "39036:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "39023:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39023:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "39014:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "39080:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "39055:24:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39055:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "39055:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "39095:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "39105:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "39095:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_payable",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "38905:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "38916:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "38928:6:81",
                "type": ""
              }
            ],
            "src": "38861:255:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "39278:218:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "39288:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "39300:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "39311:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "39296:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39296:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "39288:4:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "39323:29:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "39341:3:81",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "39346:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "39337:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "39337:11:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "39350:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "39333:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39333:19:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "39327:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "39368:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "39383:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "39391:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "39379:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "39379:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "39361:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39361:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "39361:34:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "39415:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "39426:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "39411:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "39411:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "39435:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "39443:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "39431:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "39431:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "39404:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39404:43:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "39404:43:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "39467:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "39478:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "39463:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "39463:18:81"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "39483:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "39456:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39456:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "39456:34:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "39231:9:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "39242:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "39250:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "39258:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "39269:4:81",
                "type": ""
              }
            ],
            "src": "39121:375:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "39550:79:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "39560:17:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "39572:1:81"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "39575:1:81"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "39568:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39568:9:81"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nodeType": "YulIdentifier",
                      "src": "39560:4:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "39601:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "39603:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "39603:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "39603:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nodeType": "YulIdentifier",
                        "src": "39592:4:81"
                      },
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "39598:1:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "39589:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39589:11:81"
                  },
                  "nodeType": "YulIf",
                  "src": "39586:37:81"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "39532:1:81",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "39535:1:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nodeType": "YulTypedName",
                "src": "39541:4:81",
                "type": ""
              }
            ],
            "src": "39501:128:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "39666:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "39683:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "39690:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "39695:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "39686:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "39686:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "39676:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39676:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "39676:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "39723:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "39726:4:81",
                        "type": "",
                        "value": "0x31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "39716:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39716:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "39716:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "39747:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "39750:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "39740:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39740:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "39740:15:81"
                }
              ]
            },
            "name": "panic_error_0x31",
            "nodeType": "YulFunctionDefinition",
            "src": "39634:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "39940:156:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "39957:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "39968:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "39950:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39950:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "39950:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "39991:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "40002:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "39987:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "39987:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "40007:1:81",
                        "type": "",
                        "value": "7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "39980:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "39980:29:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "39980:29:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "40029:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "40040:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "40025:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "40025:18:81"
                      },
                      {
                        "hexValue": "496e76616c6964",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "40045:9:81",
                        "type": "",
                        "value": "Invalid"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "40018:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40018:37:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "40018:37:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "40064:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "40076:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "40087:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "40072:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40072:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "40064:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "39917:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "39931:4:81",
                "type": ""
              }
            ],
            "src": "39766:330:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "40304:286:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "40314:29:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "40332:3:81",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "40337:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "40328:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "40328:11:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "40341:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "40324:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40324:19:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "40318:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "40359:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "40374:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "40382:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "40370:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "40370:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "40352:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40352:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "40352:34:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "40406:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "40417:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "40402:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "40402:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "40426:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "40434:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "40422:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "40422:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "40395:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40395:43:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "40395:43:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "40458:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "40469:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "40454:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "40454:18:81"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "40474:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "40447:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40447:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "40447:34:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "40501:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "40512:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "40497:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "40497:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "40517:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "40490:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40490:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "40490:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "40530:54:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "40556:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "40568:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "40579:3:81",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "40564:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "40564:19:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "40538:17:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40538:46:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "40530:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "40249:9:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "40260:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "40268:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "40276:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "40284:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "40295:4:81",
                "type": ""
              }
            ],
            "src": "40101:489:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "40675:169:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "40721:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "40730:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "40733:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "40723:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "40723:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "40723:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "40696:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "40705:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "40692:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "40692:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "40717:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "40688:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40688:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "40685:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "40746:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "40765:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "40759:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40759:16:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "40750:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "40808:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bytes4",
                      "nodeType": "YulIdentifier",
                      "src": "40784:23:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "40784:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "40784:30:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "40823:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "40833:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "40823:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "40641:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "40652:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "40664:6:81",
                "type": ""
              }
            ],
            "src": "40595:249:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "41023:182:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "41040:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "41051:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "41033:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41033:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "41033:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "41074:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "41085:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "41070:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "41070:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "41090:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "41063:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41063:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "41063:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "41113:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "41124:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "41109:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "41109:18:81"
                      },
                      {
                        "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "41129:34:81",
                        "type": "",
                        "value": "ERC721: mint to the zero address"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "41102:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41102:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "41102:62:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "41173:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "41185:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "41196:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "41181:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41181:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "41173:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "41000:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "41014:4:81",
                "type": ""
              }
            ],
            "src": "40849:356:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "41384:178:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "41401:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "41412:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "41394:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41394:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "41394:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "41435:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "41446:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "41431:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "41431:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "41451:2:81",
                        "type": "",
                        "value": "28"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "41424:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41424:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "41424:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "41474:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "41485:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "41470:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "41470:18:81"
                      },
                      {
                        "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "41490:30:81",
                        "type": "",
                        "value": "ERC721: token already minted"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "41463:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41463:58:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "41463:58:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "41530:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "41542:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "41553:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "41538:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41538:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "41530:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "41361:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "41375:4:81",
                "type": ""
              }
            ],
            "src": "41210:352:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "41666:103:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "41676:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "41688:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "41699:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "41684:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41684:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "41676:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "41718:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "41733:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "41745:3:81",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "41750:10:81",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "41741:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "41741:20:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "41729:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "41729:33:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "41711:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41711:52:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "41711:52:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "41635:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "41646:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "41657:4:81",
                "type": ""
              }
            ],
            "src": "41567:202:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "41959:271:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "41969:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "41981:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "41992:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "41977:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "41977:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "41969:4:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "42005:29:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "42023:3:81",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "42028:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "42019:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "42019:11:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "42032:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "42015:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42015:19:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "42009:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "42050:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "42065:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "42073:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "42061:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "42061:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "42043:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42043:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "42043:34:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "42097:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "42108:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "42093:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "42093:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "42117:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "42125:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "42113:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "42113:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "42086:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42086:43:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "42086:43:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "42149:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "42160:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "42145:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "42145:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nodeType": "YulIdentifier",
                            "src": "42169:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "42177:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "42165:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "42165:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "42138:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42138:43:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "42138:43:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "42201:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "42212:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "42197:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "42197:18:81"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "42217:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "42190:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42190:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "42190:34:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "41904:9:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "41915:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "41923:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "41931:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "41939:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "41950:4:81",
                "type": ""
              }
            ],
            "src": "41774:456:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "42313:167:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "42359:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "42368:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "42371:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "42361:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "42361:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "42361:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "42334:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "42343:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "42330:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "42330:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "42355:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "42326:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42326:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "42323:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "42384:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "42403:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "42397:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42397:16:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "42388:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "42444:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nodeType": "YulIdentifier",
                      "src": "42422:21:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42422:28:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "42422:28:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "42459:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "42469:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "42459:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "42279:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "42290:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "42302:6:81",
                "type": ""
              }
            ],
            "src": "42235:245:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "42659:176:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "42676:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "42687:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "42669:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42669:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "42669:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "42710:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "42721:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "42706:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "42706:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "42726:2:81",
                        "type": "",
                        "value": "26"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "42699:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42699:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "42699:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "42749:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "42760:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "42745:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "42745:18:81"
                      },
                      {
                        "hexValue": "457874656e73696f6e20617070726f76616c206661696c757265",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "42765:28:81",
                        "type": "",
                        "value": "Extension approval failure"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "42738:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42738:56:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "42738:56:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "42803:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "42815:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "42826:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "42811:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "42811:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "42803:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_c3d60d7a20407b9f19afe96408b04a4d7e66044de3966b3dad84a73681c556f2__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "42636:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "42650:4:81",
                "type": ""
              }
            ],
            "src": "42485:350:81"
          }
        ]
      },
      "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\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 validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\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_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_array_uint256_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 := 0\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_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n    }\n    function abi_decode_string_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_array_address_payable_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_address_payable_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(0, 0) }\n        let value3_1, value4_1 := abi_decode_array_address_payable_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\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_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_string_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_addresst_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$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        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_address_payable_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_address_payable_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_addresst_array$_t_string_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_address_payable_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_string_calldata_ptrt_bool(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_bool(value_1)\n        value3 := value_1\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint80_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_address_payable_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptrt_array$_t_string_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_address_payable_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_address_payable_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_bool(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value2 := value\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_uint16(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, 0xffff))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_address_payable_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(0, 0) }\n        let value3_1, value4_1 := abi_decode_array_address_payable_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_encode_tuple_t_uint80__to_t_uint80__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(80, 1), 1)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := calldataload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, 32), add(_1, 32), _2)\n        mstore(add(add(array, _2), 32), 0)\n        value3 := array\n    }\n    function abi_encode_array_address_payable_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 := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_array$_t_address_payable_$dyn_memory_ptr__to_t_array$_t_address_payable_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_array_address_payable_dyn(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_address_payable_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_address_payable_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_array_address_payable_dyn(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn(value1, tail_1)\n    }\n    function abi_decode_uint80(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(80, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint80(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := abi_decode_uint80(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_stringliteral_ca6fc84f9a44d1110756284e5c56ff72cff80e2de6c9cfbe8379a88afa111687__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"AdminControl: Must be owner or a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\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 abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 61)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner or approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Nonexistent token\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9af8056f7bbf995e43fff5dc3ca8e50b237f8938603e7ec81cea349a49fd0fcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"No extension for token\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_4beb819a81c47e20a26775f9ad72b3da5e765415ddadbc3186b244e4bc01e621__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), \"Extension blacklisted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r or approved\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function access_calldata_tail_t_string_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(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint80(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint80(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_603f4022c7c9bca46ef8304cd6a88dd2e6d49898b43e3a9ed7aea6d1839c2f9e__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), \"Caller is not owner or approved\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_af39b50065ba9648c753f781fa674704d13ce8309cf446a262799d7aceba8e5b__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), \"Invalid input\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__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), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\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_0cc452069841e70d1cdcec58868ea025555fa12c1e760cb45ef052b3f01f1f1e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Cannot blacklist yourself\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5e70ebd1d4072d337a7fabaa7bda70fa2633d6e3f89d5cb725a16b10d07e54c6__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), \"Invalid token\")\n        tail := add(headStart, 96)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(slot, src, len)\n    {\n        if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n        let srcOffset := 0\n        switch gt(len, 31)\n        case 1 {\n            let loopEnd := and(len, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := srcOffset\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, calldataload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, len)\n            {\n                sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, len), 1))\n        }\n        default {\n            let value := 0\n            if len\n            {\n                value := calldataload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n        }\n    }\n    function abi_encode_tuple_t_array$_t_address_payable_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_array$_t_address_payable_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 64)\n        mstore(headStart, 64)\n        let pos := tail_1\n        mstore(tail_1, value1)\n        pos := add(headStart, 96)\n        let srcPtr := value0\n        let i := 0\n        for { } lt(i, value1) { i := add(i, 1) }\n        {\n            let value := calldataload(srcPtr)\n            validator_revert_address(value)\n            mstore(pos, and(value, sub(shl(160, 1), 1)))\n            let _1 := 0x20\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        mstore(add(headStart, 0x20), sub(pos, headStart))\n        mstore(pos, value3)\n        if gt(value3, sub(shl(251, 1), 1)) { revert(0, 0) }\n        let length := shl(5, value3)\n        calldatacopy(add(pos, 0x20), value2, length)\n        tail := add(add(pos, length), 0x20)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__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), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5feba5446d49a024c011d96fb2b4cea222ce6e949e033fe53cd137156df8a35f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"Must be registered extension\")\n        tail := add(headStart, 96)\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_74694d19c1b4be9a45fa733d1aaae2782afce905305cd809636e222af28aa3f3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"More than 1 royalty receiver\")\n        tail := add(headStart, 96)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\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_21f6ef9796c821924c8451552637a275db9d13fc80db87bcd51e231390e84cc3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Too many extensions\")\n        tail := add(headStart, 96)\n    }\n    function increment_t_uint16(value) -> ret\n    {\n        let _1 := 0xffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function array_allocation_size_array_address_payable_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_uint256_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_payable_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_array$_t_address_payable_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let _4 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_payable_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _4)\n        let srcEnd := add(add(_2, shl(5, _3)), _4)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_2, _4)\n        for { } lt(src, srcEnd) { src := add(src, _4) }\n        {\n            let value := mload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, _4)\n        }\n        value0 := dst_1\n        let offset_1 := mload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_string_storage(value, pos) -> ret\n    {\n        let slotValue := sload(value)\n        let length := extract_byte_array_length(slotValue)\n        let _1 := 1\n        switch and(slotValue, _1)\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, mul(length, iszero(iszero(length))))\n        }\n        case 1 {\n            mstore(0, value)\n            let _2 := 0x20\n            let dataPos := keccak256(0, _2)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _2) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, length)\n        }\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_string_storage__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        end := abi_encode_string_storage(value1, abi_encode_string_storage(value0, pos))\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := mload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let _1 := abi_encode_string_storage(value0, pos)\n        let length := mload(value1)\n        copy_memory_to_memory_with_cleanup(add(value1, 0x20), _1, length)\n        end := add(_1, length)\n    }\n    function abi_encode_tuple_t_stringliteral_2d7d7215e277fb812fad4601df1b9ac85cd358bdd281ae38c601df8cd0f402b5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"CreatorCore: Invalid extension\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"Invalid address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_bdeae8abc7e2f0e6881f3618c066b1b8be917729ca4a34e4ef407f79dd9f7a90__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"Invalid total royalties\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function panic_error_0x31()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x31)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345__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), \"Invalid\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__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), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_c3d60d7a20407b9f19afe96408b04a4d7e66044de3966b3dad84a73681c556f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Extension approval failure\")\n        tail := add(headStart, 96)\n    }\n}",
      "id": 81,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "286:13226:27:-:0;;;899:1:32;868:32;;417:86:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;485:5;492:7;936:32:7;719:10:17;936:18:7;:32::i;:::-;1716:1:8;1821:22;;423:5:77;:13;431:5;423;:13;:::i;:::-;-1:-1:-1;446:7:77;:17;456:7;446;:17;:::i;:::-;;357:113;;417:86:27;;286:13226;;2433:187:7;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:7;;;-1:-1:-1;;;;;;2541:17:7;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:127:81:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:81;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:81;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:81:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:81;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:81;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:81;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:81;;;3992:26;3943:89;-1:-1:-1;;2747:1:81;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:81;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:81;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:81;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:81:o;:::-;286:13226:27;;;;;;",
  "deployedSourceMap": "286:13226:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;570:300;;;;;;:::i;:::-;;:::i;:::-;;;565:14:81;;558:22;540:41;;528:2;513:18;570:300:27;;;;;;;;1918:126;;;;;;:::i;:::-;;:::i;:::-;;2243:98:78;;;:::i;:::-;;;;;;;:::i;3031:167::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2564:406::-;;;;;;:::i;:::-;;:::i;12106:194:27:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3882:134::-;;;;;;:::i;:::-;;:::i;10617:260::-;;;;;;:::i;:::-;;:::i;13281:115:32:-;13369:20;;-1:-1:-1;;;;;13369:20:32;13281:115;;9523:362:27;;;;;;:::i;:::-;;:::i;3706:324:78:-;;;;;;:::i;:::-;;:::i;1980:137:0:-;;;;;;:::i;:::-;;:::i;6601:169:27:-;;;;;;:::i;:::-;;:::i;:::-;;;5849:25:81;;;5837:2;5822:18;6601:169:27;5703:177:81;12370:222:27;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1712:205:0:-;;;;;;:::i;:::-;;:::i;3502:116:27:-;;;;;;:::i;:::-;;:::i;1126:205::-;;;;;;:::i;:::-;;:::i;1111:261:0:-;;;:::i;:::-;;;;;;;:::i;10351:199:27:-;;;;;;:::i;:::-;;:::i;7876:457::-;;;;;;:::i;:::-;;:::i;2123:155::-;;;;;;:::i;:::-;;:::i;1403:239::-;;;;;;:::i;:::-;;:::i;8412:458::-;;;;;;:::i;:::-;;:::i;4096:179:78:-;;;;;;:::i;:::-;;:::i;9950:334:27:-;;;;;;:::i;:::-;;:::i;12918:130::-;;;;;;:::i;:::-;;:::i;3087:345::-;;;;;;:::i;:::-;;:::i;1954:227:78:-;;;;;;:::i;:::-;;:::i;2613:158:27:-;;;;;;:::i;:::-;;:::i;1440:205:0:-;;;;;;:::i;:::-;;:::i;1693:204:78:-;;;;;;:::i;:::-;;:::i;1831:101:7:-;;;:::i;4697:142:27:-;;;;;;:::i;:::-;;:::i;4908:164::-;;;;;;:::i;:::-;;:::i;5617:430::-;;;;;;:::i;:::-;;:::i;2357:175::-;;;;;;:::i;:::-;;:::i;3998:316:32:-;;;:::i;1201:85:7:-;;;:::i;2405:102:78:-;;;:::i;3690:126:27:-;;;;;;:::i;:::-;;:::i;3265:151:78:-;;;;;;:::i;:::-;;:::i;4082:313:27:-;;;;;;:::i;:::-;;:::i;4915:163:32:-;;;;;;:::i;:::-;;:::i;5146:397:27:-;;;;;;:::i;:::-;;:::i;10953:226::-;;;;;;:::i;:::-;;:::i;13381:129::-;;;;;;:::i;:::-;13440:6;13472:19;;;:10;:19;;;;;:24;-1:-1:-1;;;13472:24:27;;13500:2;13472:30;-1:-1:-1;;;;;13472:30:27;;13381:129;;;;-1:-1:-1;;;;;14342:31:81;;;14324:50;;14312:2;14297:18;13381:129:27;14180:200:81;4341:312:78;;;;;;:::i;:::-;;:::i;11824:218:27:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11246:225::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;12659:186::-;;;;;;:::i;:::-;;:::i;1717:128::-;;;;;;:::i;:::-;;:::i;7109:185::-;;;;;;:::i;:::-;;:::i;7373:424::-;;;;;;:::i;:::-;;:::i;2846:166::-;;;;;;:::i;:::-;;:::i;3482:162:78:-;;;;;;:::i;:::-;;:::i;4468:160:27:-;;;;;;:::i;:::-;;:::i;2081:198:7:-;;;;;;:::i;:::-;;:::i;6844:191:27:-;;;;;;:::i;:::-;;:::i;552:35:34:-;;586:1;552:35;;570:300:27;700:4;723:48;759:11;723:35;:48::i;:::-;:93;;;;775:41;804:11;775:28;:41::i;:::-;723:140;;;;820:43;851:11;820:30;:43::i;:::-;716:147;570:300;-1:-1:-1;;570:300:27:o;1918:126::-;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;;;;;;;;;2007:30:27::1;2027:9;2007:19;:30::i;:::-;1918:126:::0;:::o;2243:98:78:-;2297:13;2329:5;2322:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2243:98;:::o;3031:167::-;3107:7;3126:23;3141:7;3126:14;:23::i;:::-;-1:-1:-1;3167:24:78;;;;:15;:24;;;;;;-1:-1:-1;;;;;3167:24:78;;3031:167::o;2564:406::-;2644:13;2660:27;2679:7;2660:18;:27::i;:::-;2644:43;;2711:5;-1:-1:-1;;;;;2705:11:78;:2;-1:-1:-1;;;;;2705:11:78;;2697:57;;;;-1:-1:-1;;;2697:57:78;;19152:2:81;2697:57:78;;;19134:21:81;19191:2;19171:18;;;19164:30;19230:34;19210:18;;;19203:62;-1:-1:-1;;;19281:18:81;;;19274:31;19322:19;;2697:57:78;18950:397:81;2697:57:78;2786:10;-1:-1:-1;;;;;2786:19:78;;;;:58;;;2809:35;2826:5;2833:10;2809:16;:35::i;:::-;2765:166;;;;-1:-1:-1;;;2765:166:78;;19554:2:81;2765:166:78;;;19536:21:81;19593:2;19573:18;;;19566:30;19632:34;19612:18;;;19605:62;19703:31;19683:18;;;19676:59;19752:19;;2765:166:78;19352:425:81;2765:166:78;2942:21;2951:2;2955:7;2942:8;:21::i;:::-;2634:336;2564:406;;:::o;12106:194:27:-;12182:13;12215:16;12223:7;12215;:16::i;:::-;12207:46;;;;-1:-1:-1;;;12207:46:27;;;;;;;:::i;:::-;12270:23;12285:7;12270:14;:23::i;3882:134::-;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;3983:26:27::1;3996:7;4005:3;;3983:12;:26::i;10617:260::-:0;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;10776:16:27::1;10784:7;10776;:16::i;:::-;10768:46;;;;-1:-1:-1::0;;;10768:46:27::1;;;;;;;:::i;:::-;10824;10838:7;10847:9;;10858:11;;10824:13;:46::i;:::-;10617:260:::0;;;;;:::o;9523:362::-;9602:17;9639:16;9647:7;9639;:16::i;:::-;9631:46;;;;-1:-1:-1;;;9631:46:27;;;;;;;:::i;:::-;9699:24;9715:7;9699:15;:24::i;:::-;9687:36;-1:-1:-1;;;;;;9741:23:27;;9733:58;;;;-1:-1:-1;;;9733:58:27;;20330:2:81;9733:58:27;;;20312:21:81;20369:2;20349:18;;;20342:30;-1:-1:-1;;;20388:18:81;;;20381:52;20450:18;;9733:58:27;20128:346:81;9733:58:27;9810:42;:22;9842:9;9810:31;:42::i;:::-;9809:43;9801:77;;;;-1:-1:-1;;;9801:77:27;;;;;;;:::i;:::-;9523:362;;;:::o;3706:324:78:-;3895:39;3914:10;3926:7;3895:18;:39::i;:::-;3887:97;;;;-1:-1:-1;;;3887:97:78;;;;;;;:::i;:::-;3995:28;4005:4;4011:2;4015:7;3995:9;:28::i;1980:137:0:-;2042:4;2077:5;-1:-1:-1;;;;;2066:16:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2066:16:0;;:43;;;-1:-1:-1;2086:23:0;:7;2103:5;2086:16;:23::i;6601:169:27:-;6681:7;2261:21:8;:19;:21::i;:::-;6700:18:27::1;:16;:18::i;:::-;6735:28;6750:2;6735:28;;;;;;;;;;;::::0;6758:1:::1;6761::::0;6735:14:::1;:28::i;:::-;6728:35;;2303:20:8::0;1716:1;2809:22;;2629:209;12370:222:27;12463:7;12472;12499:16;12507:7;12499;:16::i;:::-;12491:46;;;;-1:-1:-1;;;12491:46:27;;;;;;;:::i;:::-;12554:31;12570:7;12579:5;12554:15;:31::i;:::-;12547:38;;;;12370:222;;;;;;:::o;1712:205:0:-;1094:13:7;:11;:13::i;:::-;1790:23:0::1;:7;1807:5:::0;1790:16:::1;:23::i;:::-;1786:125;;;1834:31;::::0;1854:10:::1;::::0;-1:-1:-1;;;;;1834:31:0;::::1;::::0;::::1;::::0;;;::::1;1879:21;:7;1894:5:::0;1879:14:::1;:21::i;:::-;;1712:205:::0;:::o;3502:116:27:-;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;3590:21:27::1;3607:3;;3590:16;:21::i;1126:205::-:0;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;1239:30:27::1;1259:9;1239:19;:30::i;:::-;1279:45;1298:9;1309:7;;1318:5;1279:18;:45::i;1111:261:0:-:0;1164:23;1222:16;:7;:14;:16::i;:::-;-1:-1:-1;;;;;1208:31:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1208:31:0;;1199:40;;1254:6;1249:94;1270:16;:7;:14;:16::i;:::-;1266:1;:20;1249:94;;;1319:13;:7;1330:1;1319:10;:13::i;:::-;1307:6;1314:1;1307:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1307:25:0;;;:9;;;;;;;;;;;:25;1288:3;;;;:::i;:::-;;;;1249:94;;;;1111:261;:::o;10351:199:27:-;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;10485:58:27::1;10516:1;10520:9;;10531:11;;10485:22;:58::i;:::-;10351:199:::0;;;;:::o;7876:457::-;7985:25;2261:21:8;:19;:21::i;:::-;8022:18:27::1;:16;:18::i;:::-;8075:4:::0;-1:-1:-1;;;;;8061:26:27;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;8061:26:27::1;;8050:37;;8097:20;8120:11;;8132:1;8120:13;;;;:::i;:::-;8097:36;;8158:4;;:11;;8143;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;8185:6:27::1;::::0;-1:-1:-1;8180:147:27::1;8193:15:::0;;::::1;8180:147;;;8239:46;8254:2;8258:4;;8263:1;8258:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;8239:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;8239:46:27;-1:-1:-1;8270:14:27::1;::::0;-1:-1:-1;8283:1:27;;-1:-1:-1;8270:12:27;:14:::1;:::i;:::-;8239;:46::i;:::-;8225:8;8234:1;8225:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:60;8311:3:::1;;8180:147;;;;8012:321;2303:20:8::0;1716:1;2809:22;;2629:209;2303:20;7876:457:27;;;;;:::o;2123:155::-;2206:18;:16;:18::i;:::-;2234:37;2260:3;;2265:5;2234:25;:37::i;1403:239::-;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;1539:30:27::1;1559:9;1539:19;:30::i;:::-;1579:56;1598:9;1609:7;;1618:16;1579:18;:56::i;8412:458::-:0;8521:25;2261:21:8;:19;:21::i;:::-;8558:18:27::1;:16;:18::i;:::-;8611:4:::0;-1:-1:-1;;;;;8597:26:27;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;8597:26:27::1;;8586:37;;8633:20;8656:11;;8668:1;8656:13;;;;:::i;:::-;8633:36;;8694:4;;:11;;8679;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;8721:6:27::1;::::0;-1:-1:-1;8716:148:27::1;8729:15:::0;;::::1;8716:148;;;8775:47;8790:2;8775:47;;;;;;;;;;;::::0;8798:4:::1;;8803:1;8798:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8807:14;8820:1:::0;8807:12;:14:::1;:::i;8775:47::-;8761:8;8770:1;8761:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:61;8848:3:::1;;8716:148;;4096:179:78::0;4229:39;4246:4;4252:2;4256:7;4229:39;;;;;;;;;;;;:16;:39::i;9950:334:27:-;2261:21:8;:19;:21::i;:::-;10036:39:27::1;10055:10;10067:7;10036:18;:39::i;:::-;10028:83;;;::::0;-1:-1:-1;;;10028:83:27;;22695:2:81;10028:83:27::1;::::0;::::1;22677:21:81::0;22734:2;22714:18;;;22707:30;22773:33;22753:18;;;22746:61;22824:18;;10028:83:27::1;22493:355:81::0;10028:83:27::1;10121:13;10137:16;10145:7;10137;:16::i;:::-;10121:32;;10163:17;10183:24;10199:7;10183:15;:24::i;:::-;10163:44;;10217:14;10223:7;10217:5;:14::i;:::-;10241:36;10251:5;10258:7;10267:9;10241;:36::i;:::-;10018:266;;2303:20:8::0;1716:1;2809:22;;2629:209;12918:130:27;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;13007:34:27::1;13031:9;13007:23;:34::i;3087:345::-:0;3198:18;:16;:18::i;:::-;3234:30;;;3226:56;;;;-1:-1:-1;;;3226:56:27;;;;;;;:::i;:::-;3297:6;3292:134;3305:19;;;3292:134;;;3341:43;3363:8;;3372:1;3363:11;;;;;;;:::i;:::-;;;;;;;3376:4;;3381:1;3376:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;3341:21;:43::i;:::-;3410:3;;3292:134;;1954:227:78;2026:7;2061:19;;;:10;:19;;;;;:25;-1:-1:-1;;;;;2061:25:78;;2096:56;;;;-1:-1:-1;;;2096:56:78;;;;;;;:::i;2613:158:27:-;2701:18;:16;:18::i;:::-;2729:35;2757:6;;2729:27;:35::i;1440:205:0:-;1094:13:7;:11;:13::i;:::-;1520:23:0::1;:7;1537:5:::0;1520:16:::1;:23::i;:::-;1515:124;;1564:32;::::0;1585:10:::1;::::0;-1:-1:-1;;;;;1564:32:0;::::1;::::0;::::1;::::0;;;::::1;1610:18;:7;1622:5:::0;1610:11:::1;:18::i;1693:204:78:-:0;1765:7;-1:-1:-1;;;;;1792:19:78;;1784:73;;;;-1:-1:-1;;;1784:73:78;;23750:2:81;1784:73:78;;;23732:21:81;23789:2;23769:18;;;23762:30;23828:34;23808:18;;;23801:62;-1:-1:-1;;;23879:18:81;;;23872:39;23928:19;;1784:73:78;23548:405:81;1784:73:78;-1:-1:-1;;;;;;1874:16:78;;;;;:9;:16;;;;;;;1693:204::o;1831:101:7:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;4697:142:27:-;4786:7;2261:21:8;:19;:21::i;:::-;942:10:0::1;931:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;931:21:0::1;;:53;;;-1:-1:-1::0;956:28:0::1;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1::0;;;923:102:0::1;;;;;;;:::i;:::-;4812:20:27::2;4822:2;4812:20;;;;;;;;;;;::::0;4830:1:::2;4812:9;:20::i;4908:164::-:0;5018:7;2261:21:8;:19;:21::i;:::-;942:10:0::1;931:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;931:21:0::1;;:53;;;-1:-1:-1::0;956:28:0::1;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1::0;;;923:102:0::1;;;;;;;:::i;:::-;5044:21:27::2;5054:2;5058:3;;5044:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;-1:-1:-1;5044:21:27;-1:-1:-1;5044:9:27::2;::::0;-1:-1:-1;;5044:21:27:i:2;:::-;5037:28;;2303:20:8::0;1716:1;2809:22;;2629:209;5617:430:27;5735:25;2261:21:8;:19;:21::i;:::-;942:10:0::1;931:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;931:21:0::1;;:53;;;-1:-1:-1::0;956:28:0::1;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1::0;;;923:102:0::1;;;;;;;:::i;:::-;5797:4:27::0;-1:-1:-1;;;;;5783:26:27;::::2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;5783:26:27::2;;5772:37;;5819:20;5842:11;;5854:1;5842:13;;;;:::i;:::-;5819:36;;5880:4;;:11;;5865;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;5907:6:27::2;::::0;-1:-1:-1;5902:139:27::2;5915:15:::0;;::::2;5902:139;;;5961:38;5971:2;5975:4;;5980:1;5975:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;5961:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;5984:14:27::2;::::0;-1:-1:-1;5997:1:27;;-1:-1:-1;5984:12:27;;-1:-1:-1;5984:14:27::2;:::i;:::-;5961:9;:38::i;:::-;5947:8;5956:1;5947:11;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;:52;6025:3:::2;;5902:139;;2357:175:::0;2456:18;:16;:18::i;:::-;2484:41;2510:3;;2515:9;2484:25;:41::i;3998:316:32:-;4055:27;4121:20;:11;:18;:20::i;:::-;-1:-1:-1;;;;;4107:35:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4107:35:32;;4094:48;;4157:6;4152:129;4169:20;:11;:18;:20::i;:::-;4165:1;:24;4152:129;;;4222:17;:11;4237:1;4222:14;:17::i;:::-;4206:10;4217:1;4206:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4206:33:32;;;:13;;;;;;;;;;;:33;4265:3;;4152:129;;1201:85:7;1247:7;1273:6;-1:-1:-1;;;;;1273:6:7;;1201:85::o;2405:102:78:-;2461:13;2493:7;2486:14;;;;;:::i;3690:126:27:-;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;3783:26:27::1;3802:6;;3783:18;:26::i;3265:151:78:-:0;3359:50;3378:10;3390:8;3400;3359:18;:50::i;4082:313:27:-;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;4206:30:27;;::::1;4198:56;;;;-1:-1:-1::0;;;4198:56:27::1;;;;;;;:::i;:::-;4269:6;4264:125;4277:19:::0;;::::1;4264:125;;;4313:34;4326:8;;4335:1;4326:11;;;;;;;:::i;:::-;;;;;;;4339:4;;4344:1;4339:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;4313:12;:34::i;:::-;4373:3;;4264:125;;4915:163:32::0;4994:18;:16;:18::i;:::-;5022:49;5051:10;5063:7;5022:28;:49::i;5146:397:27:-;5254:25;2261:21:8;:19;:21::i;:::-;942:10:0::1;931:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;931:21:0::1;;:53;;;-1:-1:-1::0;956:28:0::1;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1::0;;;923:102:0::1;;;;;;;:::i;:::-;5316:5:27::2;5302:20;;-1:-1:-1::0;;;;;5302:20:27::2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;5302:20:27::2;;5291:31;;5332:20;5355:11;;5367:1;5355:13;;;;:::i;:::-;5332:36;;5393:5;5378:20;;:11;;:20;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;5414:6:27::2;::::0;-1:-1:-1;5409:128:27::2;5426:5;5422:9;;:1;:9;5409:128;;;5462:33;5472:2;5462:33;;;;;;;;;;;::::0;5493:1:::2;5480:12;:14;;;;:::i;5462:33::-;5448:8;5457:1;5448:11;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;:47;5521:3:::2;;5409:128;;;;5281:262;2303:20:8::0;1716:1;2809:22;;2629:209;10953:226:27;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;11115:57:27::1;11138:9;11149;;11160:11;;11115:22;:57::i;4341:312:78:-:0;4509:39;4528:10;4540:7;4509:18;:39::i;:::-;4501:97;;;;-1:-1:-1;;;4501:97:78;;;;;;;:::i;:::-;4608:38;4622:4;4628:2;4632:7;4641:4;4608:13;:38::i;11824:218:27:-;11907:24;11951:16;11959:7;11951;:16::i;:::-;11943:46;;;;-1:-1:-1;;;11943:46:27;;;;;;;:::i;:::-;12006:29;12027:7;12006:20;:29::i;11246:225::-;11325:24;11351:16;11387;11395:7;11387;:16::i;:::-;11379:46;;;;-1:-1:-1;;;11379:46:27;;;;;;;:::i;:::-;11442:22;11456:7;11442:13;:22::i;:::-;11435:29;;;;11246:225;;;:::o;12659:186::-;12732:13;12765:16;12773:7;12765;:16::i;:::-;12757:46;;;;-1:-1:-1;;;12757:46:27;;;;;;;:::i;:::-;12820:18;12830:7;12820:9;:18::i;1717:128::-;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;1807:31:27::1;1828:9;1807:20;:31::i;7109:185::-:0;7202:7;2261:21:8;:19;:21::i;:::-;7221:18:27::1;:16;:18::i;:::-;7256:31;7271:2;7256:31;;;;;;;;;;;::::0;7279:4:::1;7285:1;7256:14;:31::i;:::-;7249:38;;2303:20:8::0;1716:1;2809:22;;2629:209;7373:424:27;7472:25;2261:21:8;:19;:21::i;:::-;7509:18:27::1;:16;:18::i;:::-;7562:5;7548:20;;-1:-1:-1::0;;;;;7548:20:27::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;7548:20:27::1;;7537:31;;7578:20;7601:11;;7613:1;7601:13;;;;:::i;:::-;7578:36;;7639:5;7624:20;;:11;;:20;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;7660:6:27::1;::::0;-1:-1:-1;7655:136:27::1;7672:5;7668:9;;:1;:9;7655:136;;;7708:41;7723:2;7708:41;;;;;;;;;;;::::0;7731:1:::1;7747;7734:12;:14;;;;:::i;7708:41::-;7694:8;7703:1;7694:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:55;7775:3:::1;;7655:136;;2846:166:::0;2942:18;:16;:18::i;:::-;2970:35;2992:7;3001:3;;2970:21;:35::i;3482:162:78:-;-1:-1:-1;;;;;3602:25:78;;;3579:4;3602:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3482:162::o;4468:160:27:-;942:10:0;931:7;:5;:7::i;:::-;-1:-1:-1;;;;;931:21:0;;:53;;;-1:-1:-1;956:28:0;:7;973:10;956:16;:28::i;:::-;923:102;;;;-1:-1:-1;;;923:102:0;;;;;;;:::i;:::-;4578:43:27::1;4598:9;4609:11;4578:19;:43::i;2081:198:7:-:0;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:7;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:7;;24160:2:81;2161:73:7::1;::::0;::::1;24142:21:81::0;24199:2;24179:18;;;24172:30;24238:34;24218:18;;;24211:62;-1:-1:-1;;;24289:18:81;;;24282:36;24335:19;;2161:73:7::1;23958:402:81::0;2161:73:7::1;2244:28;2263:8;2244:18;:28::i;6844:191:27:-:0;6945:7;2261:21:8;:19;:21::i;:::-;6964:18:27::1;:16;:18::i;:::-;6999:29;7014:2;7018:3;;6999:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;6999:29:27;-1:-1:-1;6999:29:27;;-1:-1:-1;6999:14:27::1;::::0;-1:-1:-1;6999:29:27:i:1;1151:270:34:-:0;1258:4;-1:-1:-1;;;;;;1281:51:34;;-1:-1:-1;;;1281:51:34;;:93;;-1:-1:-1;;;;;;;1336:38:34;;-1:-1:-1;;;1336:38:34;1281:93;:133;;;;1378:36;1402:11;1378:23;:36::i;1334:300:78:-;1436:4;-1:-1:-1;;;;;;1471:40:78;;-1:-1:-1;;;1471:40:78;;:104;;-1:-1:-1;;;;;;;1527:48:78;;-1:-1:-1;;;1527:48:78;1471:156;;;;1591:36;1615:11;565:230:0;667:4;-1:-1:-1;;;;;;690:46:0;;-1:-1:-1;;;690:46:0;;:98;;-1:-1:-1;;;;;;;;;;937:40:19;;;752:36:0;829:155:19;8852:165:23;-1:-1:-1;;;;;8985:23:23;;8932:4;4343:19;;;:12;;;:19;;;;;;:24;;8955:55;4247:127;5571:501:32;-1:-1:-1;;;;;5645:23:32;;;;;;:53;;-1:-1:-1;;;;;;5672:26:32;;5693:4;5672:26;;5645:53;5637:91;;;;-1:-1:-1;;;5637:91:32;;24567:2:81;5637:91:32;;;24549:21:81;24606:2;24586:18;;;24579:30;-1:-1:-1;;;24625:18:81;;;24618:55;24690:18;;5637:91:32;24365:349:81;5637:91:32;5741:31;:11;5762:9;5741:20;:31::i;:::-;5737:151;;;5792:44;;5825:10;;-1:-1:-1;;;;;5792:44:32;;;;;;;;5849:29;:11;5868:9;5849:18;:29::i;:::-;;5737:151;5901:42;:22;5933:9;5901:31;:42::i;:::-;5896:170;;5963:43;;5995:10;;-1:-1:-1;;;;;5963:43:32;;;;;;;;6019:37;:22;6046:9;6019:26;:37::i;11742:133:78:-;11823:16;11831:7;11823;:16::i;:::-;11815:53;;;;-1:-1:-1;;;11815:53:78;;;;;;;:::i;11040:175::-;11114:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11114:29:78;-1:-1:-1;;;;;11114:29:78;;;;;;;;:24;;11167:27;11114:24;11167:18;:27::i;:::-;-1:-1:-1;;;;;11158:50:78;;;;;;;;;;;11040:175;;:::o;6122:134::-;6187:4;6210:19;;;:10;:19;;;;;:25;-1:-1:-1;;;;;6210:25:78;:39;;;6122:134::o;10341:135:32:-;10405:20;10447:22;10461:7;10447:13;:22::i;7275:226::-;7372:1;7362:7;:11;:37;;;;;7388:11;;7377:7;:22;;7362:37;:79;;;;-1:-1:-1;7439:1:32;7403:24;7419:7;7403:15;:24::i;:::-;-1:-1:-1;;;;;7403:38:32;;7362:79;7354:105;;;;-1:-1:-1;;;7354:105:32;;;;;;;:::i;:::-;7469:19;;;;:10;:19;;;;;:25;7491:3;;7469:19;:25;:::i;10968:348::-;11096:39;11112:9;;11123:11;;11096:15;:39::i;:::-;11152:22;;;;:13;:22;;;;;11145:29;;;:::i;:::-;11184:61;11198:9;;11209:11;;11222:13;:22;11236:7;11222:22;;;;;;;;;;;11184:13;:61::i;:::-;11277:7;11260:49;11286:9;;11297:11;;11260:49;;;;;;;;;:::i;:::-;;;;;;;;10968:348;;;;;:::o;13054:257:27:-;13127:7;13177:19;;;:10;:19;;;;;:24;-1:-1:-1;;;13177:24:27;;-1:-1:-1;;;;;13177:24:27;;;13216:19;;;;13212:42;;-1:-1:-1;13252:1:27;;13054:257;-1:-1:-1;;13054:257:27:o;13212:42::-;13271:33;;;;;;:17;:33;;;;;;-1:-1:-1;;;;;13271:33:27;;13054:257;-1:-1:-1;;13054:257:27:o;6414:265:78:-;6507:4;6523:13;6539:27;6558:7;6539:18;:27::i;:::-;6523:43;;6595:5;-1:-1:-1;;;;;6584:16:78;:7;-1:-1:-1;;;;;6584:16:78;;:52;;;;6604:32;6621:5;6628:7;6604:16;:32::i;:::-;6584:87;;;;6664:7;-1:-1:-1;;;;;6640:31:78;:20;6652:7;6640:11;:20::i;:::-;-1:-1:-1;;;;;6640:31:78;;6584:87;6576:96;6414:265;-1:-1:-1;;;;6414:265:78:o;9735:1193::-;9854:26;9883:19;;;:10;:19;;;;;;;;;9854:48;;;;;;;;;-1:-1:-1;;;;;9854:48:78;;;;;;-1:-1:-1;;;9854:48:78;;;-1:-1:-1;;;;;9854:48:78;;;;;;;;;9961:13;;;;9953:63;;;;-1:-1:-1;;;9953:63:78;;28401:2:81;9953:63:78;;;28383:21:81;28440:2;28420:18;;;28413:30;28479:34;28459:18;;;28452:62;-1:-1:-1;;;28530:18:81;;;28523:35;28575:19;;9953:63:78;28199:401:81;9953:63:78;-1:-1:-1;;;;;10034:16:78;;10026:65;;;;-1:-1:-1;;;10026:65:78;;28807:2:81;10026:65:78;;;28789:21:81;28846:2;28826:18;;;28819:30;28885:34;28865:18;;;28858:62;-1:-1:-1;;;28936:18:81;;;28929:34;28980:19;;10026:65:78;28605:400:81;10026:65:78;10116:14;;;;10141:45;10162:4;10168:2;10172:7;10116:14;10141:20;:45::i;:::-;10248:29;10265:1;10269:7;10248:8;:29::i;:::-;-1:-1:-1;;;;;10721:15:78;;;;;;;:9;:15;;;;;;;;:20;;-1:-1:-1;;10721:20:78;;;10755:13;;;;;;;;;:18;;10740:1;10755:18;;;10793:19;;;:10;:19;;;;;;:30;;-1:-1:-1;;;;;;10793:30:78;;;;;10839:27;;10804:7;;10755:13;10721:15;-1:-1:-1;;;;;;;;;;;10839:27:78;;10877:44;9844:1084;;;9735:1193;;;:::o;2336:287:8:-;1759:1;2468:7;;:19;2460:63;;;;-1:-1:-1;;;2460:63:8;;29212:2:81;2460:63:8;;;29194:21:81;29251:2;29231:18;;;29224:30;29290:33;29270:18;;;29263:61;29341:18;;2460:63:8;29010:355:81;2460:63:8;1759:1;2598:7;:18;2336:287::o;3566:132:32:-;3626:32;:11;3647:10;3626:20;:32::i;:::-;3618:73;;;;-1:-1:-1;;;3618:73:32;;29572:2:81;3618:73:32;;;29554:21:81;29611:2;29591:18;;;29584:30;-1:-1:-1;;;29630:18:81;;;29623:58;29698:18;;3618:73:32;29370:352:81;8929:525:27;9039:7;9062;9073:1;9062:12;9058:91;;9092:11;;9090:13;;;;;:::i;:::-;;;;-1:-1:-1;9127:11:27;;;-1:-1:-1;9058:91:27;9159:34;9181:2;9185:7;9159:21;:34::i;:::-;9323:10;9305:29;;;;:17;:29;;;;;;9269:66;;9279:2;;9283:7;;9305:29;;9300:2;9292:10;;;9269:66;;;:9;:66::i;:::-;9350:17;;:21;9346:77;;9387:19;;;;:10;:19;;;;;:25;9409:3;9387:19;:25;:::i;:::-;;9346:77;-1:-1:-1;9440:7:27;8929:525;-1:-1:-1;;;8929:525:27:o;10482:431:32:-;10562:16;10580:14;10606:34;10642:20;10666:22;10680:7;10666:13;:22::i;:::-;10605:83;;;;10726:1;10706:9;:16;:21;;10698:62;;;;-1:-1:-1;;;10698:62:32;;31286:2:81;10698:62:32;;;31268:21:81;31325:2;31305:18;;;31298:30;-1:-1:-1;;;31344:18:81;;;31337:58;31412:18;;10698:62:32;31084:352:81;10698:62:32;10783:9;:16;10803:1;10783:21;10779:77;;10836:4;10843:1;10820:25;;;;;;;;10779:77;10873:9;10883:1;10873:12;;;;;;;;:::i;:::-;;;;;;;10900:5;10894;10887:3;10891:1;10887:6;;;;;;;;:::i;:::-;;;;;;;:12;;;;:::i;:::-;:18;;;;:::i;:::-;10865:41;;;;;;10482:431;;;;;:::o;1359:130:7:-;719:10:17;1422:7:7;:5;:7::i;:::-;-1:-1:-1;;;;;1422:23:7;;1414:68;;;;-1:-1:-1;;;1414:68:7;;32170:2:81;1414:68:7;;;32152:21:81;;;32189:18;;;32182:30;32248:34;32228:18;;;32221:62;32300:18;;1414:68:7;31968:356:81;8615:156:23;8688:4;8711:53;8719:3;-1:-1:-1;;;;;8739:23:23;;8711:7;:53::i;6886:108:32:-;6952:29;;;:17;:29;;;:35;6984:3;;6952:29;:35;:::i;3771:156::-;3852:42;:22;3884:9;3852:31;:42::i;:::-;3851:43;3843:77;;;;-1:-1:-1;;;3843:77:32;;;;;;;:::i;5078:476:34:-;5209:17;;5229:6;5209:17;;;:26;5201:58;;;;-1:-1:-1;;;5201:58:34;;32531:2:81;5201:58:34;;;32513:21:81;32570:2;32550:18;;;32543:30;-1:-1:-1;;;32589:18:81;;;32582:49;32648:18;;5201:58:34;32329:343:81;5201:58:34;-1:-1:-1;;;;;5273:28:34;;;;;;:17;:28;;;;;;;;:33;;5269:207;;5324:17;5322:19;;5324:17;;5322:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;5386:17;;;-1:-1:-1;;;;;5355:28:34;;-1:-1:-1;5355:28:34;;;:17;:28;;;;;;;;:48;;5386:17;;;-1:-1:-1;;5355:48:34;;;;;;;;;;5435:17;;;;;5417:36;;:17;:36;;;;;;:48;;-1:-1:-1;;;;;;5417:48:34;;;;;;5269:207;5485:62;5510:9;5521:7;;5530:16;5485:24;:62::i;9098:115:23:-;9161:7;9187:19;9195:3;4537:18;;4455:107;9555:156;9629:7;9679:22;9683:3;9695:5;9679:3;:22::i;11390:519:32:-;11530:39;11546:9;;11557:11;;11530:15;:39::i;:::-;-1:-1:-1;;;;;11586:28:32;;;;;;:17;:28;;;;;11579:35;;;:::i;:::-;11624:67;11638:9;;11649:11;;11662:17;:28;11680:9;-1:-1:-1;;;;;11662:28:32;-1:-1:-1;;;;;11662:28:32;;;;;;;;;;;;11624:13;:67::i;:::-;-1:-1:-1;;;;;11705:23:32;;11701:202;;11749:47;11773:9;;11784:11;;11749:47;;;;;;;;;:::i;:::-;;;;;;;;11701:202;;;11858:9;-1:-1:-1;;;;;11832:60:32;;11869:9;;11880:11;;11832:60;;;;;;;;;:::i;6142:193::-;6251:10;6233:29;;;;:17;:29;;;;;:35;6265:3;;6233:29;:35;:::i;:::-;-1:-1:-1;6305:10:32;6278:38;;;;:26;:38;;;;;:50;;-1:-1:-1;;6278:50:32;;;;;;;;;;-1:-1:-1;;6142:193:32:o;8687:724:78:-;8746:26;8775:19;;;:10;:19;;;;;;;;8746:48;;;;;;;;;-1:-1:-1;;;;;8746:48:78;;;;;-1:-1:-1;;;8746:48:78;;;-1:-1:-1;;;;;8746:48:78;;;;;;;;;;;;8884:54;;8746:48;;8775:19;8746:48;8884:20;:54::i;:::-;8976:29;8993:1;8997:7;8976:8;:29::i;:::-;-1:-1:-1;;;;;9221:16:78;;;;;;:9;:16;;;;;;;;:21;;-1:-1:-1;;9221:21:78;;;9269:19;;;:10;:19;;;;;;9262:26;;;9304:36;9280:7;;9221:16;-1:-1:-1;;;;;;;;;;;9304:36:78;9221:16;;9304:36;9351:53;10351:199:27;3271:545:34;-1:-1:-1;;;;;3427:23:34;;;3423:247;;3469:93;3501:9;-1:-1:-1;;;3469:31:34;:93::i;:::-;3465:195;;;3581:65;;-1:-1:-1;;;3581:65:34;;-1:-1:-1;;;;;3581:49:34;;;;;:65;;3631:5;;3638:7;;3581:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3465:195;3724:19;;;;:10;:19;;;;;3718:33;;;;;:::i;:::-;:38;;-1:-1:-1;3714:95:34;;3779:19;;;;:10;:19;;;;;3772:26;;;:::i;13050:158:32:-;13121:20;:32;;-1:-1:-1;;;;;;13121:32:32;-1:-1:-1;;;;;13121:32:32;;;;;13168:33;;;;;;13121:32;;13168:33;:::i;:::-;;;;;;;;13050:158;:::o;6610:194::-;6734:10;6706:24;6722:7;6706:15;:24::i;6407:127::-;6507:10;6487:31;;;;:19;:31;;;;;:40;6521:6;;6487:31;:40;:::i;8297:150:23:-;8367:4;8390:50;8395:3;-1:-1:-1;;;;;8415:23:23;;8390:4;:50::i;2433:187:7:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:7;;;-1:-1:-1;;;;;;2541:17:7;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;6110:417:27:-;6202:7;6225;6236:1;6225:12;6221:91;;6255:11;;6253:13;;;;;:::i;:::-;;;;-1:-1:-1;6290:11:27;;;-1:-1:-1;6221:91:27;6383:25;6393:2;6397:7;6406:1;6383:9;:25::i;:::-;6423:17;;:21;6419:77;;6460:19;;;;:10;:19;;;;;:25;6482:3;6460:19;:25;:::i;:::-;;6419:77;-1:-1:-1;6513:7:27;6110:417;-1:-1:-1;;6110:417:27:o;7078:118:32:-;7149:31;;;:19;:31;;;:40;7183:6;;7149:31;:40;:::i;11351:307:78:-;11501:8;-1:-1:-1;;;;;11492:17:78;:5;-1:-1:-1;;;;;11492:17:78;;11484:55;;;;-1:-1:-1;;;11484:55:78;;33081:2:81;11484:55:78;;;33063:21:81;33120:2;33100:18;;;33093:30;-1:-1:-1;;;33139:18:81;;;33132:55;33204:18;;11484:55:78;32879:349:81;11484:55:78;-1:-1:-1;;;;;11549:25:78;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11549:46:78;;;;;;;;;;11610:41;;540::81;;;11610::78;;513:18:81;11610:41:78;;;;;;;11351:307;;;:::o;1502:353:34:-;1605:100;1637:9;-1:-1:-1;;;1605:31:34;:100::i;:::-;1601:248;;;-1:-1:-1;;;;;1721:37:34;;;;;;:26;:37;;;;;;;;;:47;;-1:-1:-1;;1721:47:34;;;;;;;;;;1787:51;;540:41:81;;;1787:51:34;;513:18:81;1787:51:34;;;;;;;1502:353;;:::o;5514:305:78:-;5664:28;5674:4;5680:2;5684:7;5664:9;:28::i;:::-;5710:47;5733:4;5739:2;5743:7;5752:4;5710:22;:47::i;:::-;5702:110;;;;-1:-1:-1;;;5702:110:78;;;;;;;:::i;10104:161:32:-;10174:34;10236:22;10250:7;8639:1392;8702:34;8738:20;8808:32;8843:13;:22;8857:7;8843:22;;;;;;;;;;;8808:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8808:57:32;;;;-1:-1:-1;;;8808:57:32;;;;;;;;;;;;;;;;;;;;;;;;;8879:9;:16;8899:1;8879:21;8875:642;;8964:17;8984:24;9000:7;8984:15;:24::i;:::-;8964:44;-1:-1:-1;;;;;;9026:23:32;;;9022:485;;9073:88;9105:9;-1:-1:-1;;;9073:31:32;:88::i;:::-;9069:366;;;9204:74;;-1:-1:-1;;;9204:74:32;;-1:-1:-1;;;;;9204:50:32;;;;;:74;;9263:4;;9270:7;;9204:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9204:74:32;;;;;;;;;;;;:::i;:::-;9371:16;;9185:93;;-1:-1:-1;9185:93:32;-1:-1:-1;9371:20:32;9367:49;;9393:23;;8639:1392;;;:::o;9367:49::-;-1:-1:-1;;;;;9464:28:32;;;;;;:17;:28;;;;;;;;9452:40;;;;;;;;;;;;;;;;;;;9464:28;;9452:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9452:40:32;;;;-1:-1:-1;;;9452:40:32;;;;;;;;;;;;;;;;;;;;;;;;;9022:485;8902:615;8875:642;9530:9;:16;9550:1;9530:21;9526:132;;9618:29;;;;:17;:29;;;;;9606:41;;9618:29;9606:41;;;;;;;;;;;;;;;;9618:29;;9606:41;;9618:29;9606:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9606:41:32;;;;-1:-1:-1;;;9606:41:32;;;;;;;;;;;;;;;;;;;;;;;;;9526:132;9680:16;;:20;9676:349;;9750:9;:16;-1:-1:-1;;;;;9728:39:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9728:39:32;;9716:51;;9801:9;:16;-1:-1:-1;;;;;9787:31:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9787:31:32;;9781:37;;9837:6;9832:183;9849:9;:16;9845:1;:20;9832:183;;;9901:9;9911:1;9901:12;;;;;;;;:::i;:::-;;;;;;;:21;;;9886:9;9896:1;9886:12;;;;;;;;:::i;:::-;;;;;;:36;-1:-1:-1;;;;;9886:36:32;;;-1:-1:-1;;;;;9886:36:32;;;;;9949:9;9959:1;9949:12;;;;;;;;:::i;:::-;;;;;;;:16;;;9940:25;;:3;9944:1;9940:6;;;;;;;;:::i;:::-;;;;;;;;;;:25;9995:3;;9832:183;;;;9676:349;8760:1271;8639:1392;;;:::o;7558:1016::-;7617:13;7660:1;7650:7;:11;:37;;;;;7676:11;;7665:7;:22;;7650:37;7642:63;;;;-1:-1:-1;;;7642:63:32;;;;;;;:::i;:::-;7716:17;7736:24;7752:7;7736:15;:24::i;:::-;7716:44;-1:-1:-1;7779:42:32;:22;7716:44;7779:31;:42::i;:::-;7778:43;7770:77;;;;-1:-1:-1;;;7770:77:32;;;;;;;:::i;:::-;7868:19;;;;:10;:19;;;;;7862:33;;;;;:::i;:::-;:38;;-1:-1:-1;7858:280:32;;-1:-1:-1;;;;;7926:30:32;;;;;;:19;:30;;;;;7920:44;;;;;:::i;:::-;:49;;-1:-1:-1;7916:172:32;;-1:-1:-1;;;;;8020:30:32;;;;;;:19;:30;;;;;;;;8052:19;;;:10;:19;;;;;;8003:69;;;;8020:30;8003:69;;:::i;:::-;;;;;;;;;;;;;7989:84;;;7558:1016;;;:::o;7916:172::-;8108:19;;;;:10;:19;;;;;8101:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7558:1016;;;:::o;7858:280::-;8152:87;8184:9;-1:-1:-1;;;8152:31:32;:87::i;:::-;8148:194;;;8262:69;;-1:-1:-1;;;8262:69:32;;-1:-1:-1;;;;;8262:45:32;;;;;:69;;8316:4;;8323:7;;8262:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8262:69:32;;;;;;;;;;;;:::i;8148:194::-;-1:-1:-1;;;;;8357:37:32;;;;;;:26;:37;;;;;;;;8352:216;;-1:-1:-1;;;;;8441:28:32;;;;;;:17;:28;;;;;8471:18;:7;:16;:18::i;:::-;8424:66;;;;;;;;;:::i;8352:216::-;-1:-1:-1;;;;;8529:28:32;;;;;;:17;:28;;;;;8522:35;;;;;:::i;8352:216::-;7632:942;7558:1016;;;:::o;5351:163::-;5424:44;;5457:10;;-1:-1:-1;;;;;5424:44:32;;;;;;;;5478:29;:11;5497:9;5478:18;:29::i;1927:539:34:-;2023:31;:11;2044:9;2023:20;:31::i;:::-;2015:74;;;;-1:-1:-1;;;2015:74:34;;38008:2:81;2015:74:34;;;37990:21:81;38047:2;38027:18;;;38020:30;38086:32;38066:18;;;38059:60;38136:18;;2015:74:34;37806:354:81;2015:74:34;-1:-1:-1;;;;;2107:25:34;;;;:122;;;2136:93;2168:11;-1:-1:-1;;;2136:31:34;:93::i;:::-;2099:150;;;;-1:-1:-1;;;2099:150:34;;38367:2:81;2099:150:34;;;38349:21:81;38406:2;38386:18;;;38379:30;-1:-1:-1;;;38425:18:81;;;38418:45;38480:18;;2099:150:34;38165:339:81;2099:150:34;-1:-1:-1;;;;;2263:32:34;;;;;;;:21;:32;;;;;;;;:47;;;;2259:201;;-1:-1:-1;;;;;2326:32:34;;;;;;;:21;:32;;;;;;:46;;-1:-1:-1;;;;;;2326:46:34;;;;;;;;;2391:58;2438:10;;2326:46;:32;2391:58;;;1927:539;;:::o;2984:483:32:-;3086:4;-1:-1:-1;;;;;;3109:45:32;;-1:-1:-1;;;3109:45:32;;:80;;-1:-1:-1;;;;;;;3158:31:32;;-1:-1:-1;;;3158:31:32;3109:80;:120;;;;3193:36;3217:11;3193:23;:36::i;:::-;3109:186;;;-1:-1:-1;;;;;;;3245:50:32;;-1:-1:-1;;;3245:50:32;3109:186;:236;;;-1:-1:-1;;;;;;;3299:46:32;;-1:-1:-1;;;3299:46:32;3109:236;:301;;;-1:-1:-1;;;;;;;3361:49:32;;-1:-1:-1;;;3361:49:32;3109:301;:351;;;-1:-1:-1;;;;;;;3414:46:32;;-1:-1:-1;;;3414:46:32;3102:358;2984:483;-1:-1:-1;;2984:483:32:o;11997:430::-;12123:38;;;12115:64;;;;-1:-1:-1;;;12115:64:32;;;;;;;:::i;:::-;12189:24;12228:6;12223:128;12236:22;;;12223:128;;;12295:11;;12307:1;12295:14;;;;;;;:::i;:::-;;;;;;;12275:34;;;;;:::i;:::-;;-1:-1:-1;12335:3:32;;12223:128;;;;12387:5;12368:16;:24;12360:60;;;;-1:-1:-1;;;12360:60:32;;38711:2:81;12360:60:32;;;38693:21:81;38750:2;38730:18;;;38723:30;-1:-1:-1;;;38769:18:81;;;38762:53;38832:18;;12360:60:32;38509:347:81;12489:468:32;12640:6;12635:316;12648:22;;;12635:316;;;12687:9;12719:176;;;;;;;;12790:9;;12800:1;12790:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12719:176:32;;;;;12840:11;;12852:1;12840:14;;;;;;;:::i;:::-;12719:176;12840:14;;;;;;;;;12719:176;;;;;-1:-1:-1;12687:222:32;;;;;;;;-1:-1:-1;12687:222:32;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12687:222:32;-1:-1:-1;;;;;;12687:222:32;;;-1:-1:-1;;;;;12687:222:32;;;;;;;;;;12935:3;12635:316;;876:178:27;998:49;1015:4;1021:2;1025:7;1041:4;998:16;:49::i;2670:264:34:-;2775:10;2798:1;2753:33;;;:21;:33;;;;;;-1:-1:-1;;;;;2753:33:34;:47;2749:179;;2868:10;2846:33;;;;:21;:33;;;;;;;;2816:101;;-1:-1:-1;;;2816:101:34;;;;;39361:34:81;;;;-1:-1:-1;;;;;39431:15:81;;;39411:18;;;39404:43;39463:18;;;39456:34;;;2846:33:34;;2816:76;;39296:18:81;;2816:101:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7009:137:78;7102:37;7112:2;7116:7;7125:9;7102:37;;;;;;;;;;;;:9;:37::i;2778:1388:23:-;2844:4;2981:19;;;:12;;;:19;;;;;;3015:15;;3011:1149;;3384:21;3408:14;3421:1;3408:10;:14;:::i;:::-;3456:18;;3384:38;;-1:-1:-1;3436:17:23;;3456:22;;3477:1;;3456:22;:::i;:::-;3436:42;;3510:13;3497:9;:26;3493:398;;3543:17;3563:3;:11;;3575:9;3563:22;;;;;;;;:::i;:::-;;;;;;;;;3543:42;;3714:9;3685:3;:11;;3697:13;3685:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;3797:23;;;:12;;;:23;;;;;:36;;;3493:398;3969:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4061:3;:12;;:19;4074:5;4061:19;;;;;;;;;;;4054:26;;;4102:4;4095:11;;;;;;;3011:1149;4144:5;4137:12;;;;;4370:463:32;-1:-1:-1;;;;;4500:26:32;;4521:4;4500:26;;;;:52;;;4530:22;:9;-1:-1:-1;;;;;4530:20:32;;:22::i;:::-;4492:72;;;;-1:-1:-1;;;4492:72:32;;39968:2:81;4492:72:32;;;39950:21:81;40007:1;39987:18;;;39980:29;-1:-1:-1;;;40025:18:81;;;40018:37;40072:18;;4492:72:32;39766:330:81;4492:72:32;4579:42;;4610:10;;-1:-1:-1;;;;;4579:42:32;;;;;;;;-1:-1:-1;;;;;4631:28:32;;;;;;:17;:28;;;;;:38;4662:7;;4631:28;:38;:::i;:::-;-1:-1:-1;;;;;;4679:37:32;;;;;;:26;:37;;;;;:56;;-1:-1:-1;;4679:56:32;;;;;;;4745:26;:11;4679:37;4745:15;:26::i;:::-;;4781:45;4810:9;4821:4;4781:28;:45::i;4904:118:23:-;4971:7;4997:3;:11;;5009:5;4997:18;;;;;;;;:::i;:::-;;;;;;;;;4990:25;;4904:118;;;;:::o;1349:282:20:-;1436:4;1543:23;1558:7;1543:14;:23::i;:::-;:81;;;;;1570:54;1603:7;1612:11;1570:32;:54::i;2206:404:23:-;2269:4;4343:19;;;:12;;;:19;;;;;;2285:319;;-1:-1:-1;2327:23:23;;;;;;;;:11;:23;;;;;;;;;;;;;2507:18;;2485:19;;;:12;;;:19;;;;;;:40;;;;2539:11;;2285:319;-1:-1:-1;2588:5:23;2581:12;;12427:829:78;12576:4;12596:15;:2;-1:-1:-1;;;;;12596:13:78;;:15::i;:::-;12592:658;;;12631:69;;-1:-1:-1;;;12631:69:78;;-1:-1:-1;;;;;12631:36:78;;;;;:69;;12668:10;;12680:4;;12686:7;;12695:4;;12631:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12631:69:78;;;;;;;;-1:-1:-1;;12631:69:78;;;;;;;;;;;;:::i;:::-;;;12627:571;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12867:6;:13;12884:1;12867:18;12863:321;;12909:60;;-1:-1:-1;;;12909:60:78;;;;;;;:::i;12863:321::-;13136:6;13130:13;13121:6;13117:2;13113:15;13106:38;12627:571;-1:-1:-1;;;;;;12750:51:78;-1:-1:-1;;;12750:51:78;;-1:-1:-1;12743:58:78;;12592:658;-1:-1:-1;13235:4:78;13228:11;;415:696:18;471:13;520:14;537:17;548:5;537:10;:17::i;:::-;557:1;537:21;520:38;;572:20;606:6;-1:-1:-1;;;;;595:18:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;595:18:18;-1:-1:-1;572:41:18;-1:-1:-1;733:28:18;;;749:2;733:28;788:280;-1:-1:-1;;819:5:18;-1:-1:-1;;;953:2:18;942:14;;937:30;819:5;924:44;1012:2;1003:11;;;-1:-1:-1;1032:21:18;788:280;1032:21;-1:-1:-1;1088:6:18;415:696;-1:-1:-1;;;415:696:18:o;4107:269:34:-;-1:-1:-1;;;;;4262:18:34;;4258:31;4282:7;4258:31;4335:33;;;;;;;:17;:33;;;;;;4299:70;;4316:4;;4322:2;;4326:7;;-1:-1:-1;;;;;4335:33:34;4299:16;:70::i;7367:1103:78:-;-1:-1:-1;;;;;7525:16:78;;7517:61;;;;-1:-1:-1;;;7517:61:78;;41051:2:81;7517:61:78;;;41033:21:81;;;41070:18;;;41063:30;41129:34;41109:18;;;41102:62;41181:18;;7517:61:78;40849:356:81;7517:61:78;7597:16;7605:7;7597;:16::i;:::-;7596:17;7588:58;;;;-1:-1:-1;;;7588:58:78;;41412:2:81;7588:58:78;;;41394:21:81;41451:2;41431:18;;;41424:30;-1:-1:-1;;;41470:18:81;;;41463:58;41538:18;;7588:58:78;41210:352:81;7588:58:78;7657:56;7686:1;7690:2;7694:7;7703:9;7657:20;:56::i;:::-;-1:-1:-1;;;;;8055:13:78;;;;;;;:9;:13;;;;;;;;:18;;8072:1;8055:18;;;8116:73;;;;;;;;;;-1:-1:-1;;;;;8116:73:78;;;;;;;;;8094:19;;;:10;:19;;;;;;:95;;;;;-1:-1:-1;;;8094:95:78;;;;;;;;;;;;8204:33;;8105:7;;8055:13;-1:-1:-1;;;;;;;;;;;8204:33:78;8055:13;;8204:33;8334:53;8365:1;8369:2;8373:7;8382:4;8334:22;:53::i;1186:320:5:-;-1:-1:-1;;;;;1476:19:5;;:23;;;1186:320::o;704:427:20:-;768:4;975:68;1008:7;-1:-1:-1;;;975:32:20;:68::i;:::-;:149;;;;-1:-1:-1;1060:64:20;1093:7;-1:-1:-1;;;;;;1060:32:20;:64::i;:::-;1059:65;956:168;704:427;-1:-1:-1;;704:427:20:o;4262:647::-;4433:71;;;-1:-1:-1;;;;;;41729:33:81;;4433:71:20;;;;41711:52:81;;;;4433:71:20;;;;;;;;;;41684:18:81;;;;4433:71:20;;;;;;;;;-1:-1:-1;;;;;4433:71:20;-1:-1:-1;;;4433:71:20;;;4712:20;;4364:4;;4433:71;4364:4;;;;;;4433:71;4364:4;;4712:20;4677:7;4670:5;4659:86;4648:97;;4772:16;4758:30;;4822:4;4816:11;4801:26;;4854:7;:29;;;;;4879:4;4865:10;:18;;4854:29;:48;;;;;4901:1;4887:11;:15;4854:48;4847:55;4262:647;-1:-1:-1;;;;;;;4262:647:20:o;9889:890:22:-;9942:7;;-1:-1:-1;;;10017:15:22;;10013:99;;-1:-1:-1;;;10052:15:22;;;-1:-1:-1;10095:2:22;10085:12;10013:99;-1:-1:-1;;;10129:5:22;:15;10125:99;;-1:-1:-1;;;10164:15:22;;;-1:-1:-1;10207:2:22;10197:12;10125:99;10250:6;10241:5;:15;10237:99;;10285:6;10276:15;;;-1:-1:-1;10319:2:22;10309:12;10237:99;10362:5;10353;:14;10349:96;;10396:5;10387:14;;;-1:-1:-1;10429:1:22;10419:11;10349:96;10471:5;10462;:14;10458:96;;10505:5;10496:14;;;-1:-1:-1;10538:1:22;10528:11;10458:96;10580:5;10571;:14;10567:96;;10614:5;10605:14;;;-1:-1:-1;10647:1:22;10637:11;10567:96;10689:5;10680;:14;10676:64;;10724:1;10714:11;10766:6;9889:890;-1:-1:-1;;9889:890:22:o;4382:640:34:-;-1:-1:-1;;;;;4533:18:34;;4529:31;4553:7;4529:31;-1:-1:-1;;;;;4574:23:34;;;;;;:64;;-1:-1:-1;;;;;;4601:37:34;;;;;;:26;:37;;;;;;;;4574:64;4570:446;;;4662:96;;-1:-1:-1;;;4662:96:34;;-1:-1:-1;;;;;4662:65:34;;;;;:96;;4728:10;;4740:4;;4746:2;;4750:7;;4662:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4654:135;;;;-1:-1:-1;;;4654:135:34;;;;;;;:::i;:::-;4570:446;;;4810:20;;-1:-1:-1;;;;;4810:20:34;:34;4806:210;;4906:20;;4867:107;;-1:-1:-1;;;4867:107:34;;-1:-1:-1;;;;;4906:20:34;;;;4867:76;;:107;;4944:10;;4956:4;;4962:2;;4966:7;;4867:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4859:146;;;;-1:-1:-1;;;4859:146:34;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:81;-1:-1:-1;;;;;;88:32:81;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:131::-;-1:-1:-1;;;;;667:31:81;;657:42;;647:70;;713:1;710;703:12;728:247;787:6;840:2;828:9;819:7;815:23;811:32;808:52;;;856:1;853;846:12;808:52;895:9;882:23;914:31;939:5;914:31;:::i;980:250::-;1065:1;1075:113;1089:6;1086:1;1083:13;1075:113;;;1165:11;;;1159:18;1146:11;;;1139:39;1111:2;1104:10;1075:113;;;-1:-1:-1;;1222:1:81;1204:16;;1197:27;980:250::o;1235:271::-;1277:3;1315:5;1309:12;1342:6;1337:3;1330:19;1358:76;1427:6;1420:4;1415:3;1411:14;1404:4;1397:5;1393:16;1358:76;:::i;:::-;1488:2;1467:15;-1:-1:-1;;1463:29:81;1454:39;;;;1495:4;1450:50;;1235:271;-1:-1:-1;;1235:271:81:o;1511:220::-;1660:2;1649:9;1642:21;1623:4;1680:45;1721:2;1710:9;1706:18;1698:6;1680:45;:::i;1736:180::-;1795:6;1848:2;1836:9;1827:7;1823:23;1819:32;1816:52;;;1864:1;1861;1854:12;1816:52;-1:-1:-1;1887:23:81;;1736:180;-1:-1:-1;1736:180:81:o;1921:203::-;-1:-1:-1;;;;;2085:32:81;;;;2067:51;;2055:2;2040:18;;1921:203::o;2129:315::-;2197:6;2205;2258:2;2246:9;2237:7;2233:23;2229:32;2226:52;;;2274:1;2271;2264:12;2226:52;2313:9;2300:23;2332:31;2357:5;2332:31;:::i;:::-;2382:5;2434:2;2419:18;;;;2406:32;;-1:-1:-1;;;2129:315:81:o;2449:435::-;2502:3;2540:5;2534:12;2567:6;2562:3;2555:19;2593:4;2622:2;2617:3;2613:12;2606:19;;2659:2;2652:5;2648:14;2680:1;2690:169;2704:6;2701:1;2698:13;2690:169;;;2765:13;;2753:26;;2799:12;;;;2834:15;;;;2726:1;2719:9;2690:169;;;-1:-1:-1;2875:3:81;;2449:435;-1:-1:-1;;;;;2449:435:81:o;2889:261::-;3068:2;3057:9;3050:21;3031:4;3088:56;3140:2;3129:9;3125:18;3117:6;3088:56;:::i;3155:348::-;3207:8;3217:6;3271:3;3264:4;3256:6;3252:17;3248:27;3238:55;;3289:1;3286;3279:12;3238:55;-1:-1:-1;3312:20:81;;-1:-1:-1;;;;;3344:30:81;;3341:50;;;3387:1;3384;3377:12;3341:50;3424:4;3416:6;3412:17;3400:29;;3476:3;3469:4;3460:6;3452;3448:19;3444:30;3441:39;3438:59;;;3493:1;3490;3483:12;3508:479;3588:6;3596;3604;3657:2;3645:9;3636:7;3632:23;3628:32;3625:52;;;3673:1;3670;3663:12;3625:52;3709:9;3696:23;3686:33;;3770:2;3759:9;3755:18;3742:32;-1:-1:-1;;;;;3789:6:81;3786:30;3783:50;;;3829:1;3826;3819:12;3783:50;3868:59;3919:7;3910:6;3899:9;3895:22;3868:59;:::i;:::-;3508:479;;3946:8;;-1:-1:-1;3842:85:81;;-1:-1:-1;;;;3508:479:81:o;3992:375::-;4063:8;4073:6;4127:3;4120:4;4112:6;4108:17;4104:27;4094:55;;4145:1;4142;4135:12;4094:55;-1:-1:-1;4168:20:81;;-1:-1:-1;;;;;4200:30:81;;4197:50;;;4243:1;4240;4233:12;4197:50;4280:4;4272:6;4268:17;4256:29;;4340:3;4333:4;4323:6;4320:1;4316:14;4308:6;4304:27;4300:38;4297:47;4294:67;;;4357:1;4354;4347:12;4372:865;4511:6;4519;4527;4535;4543;4596:2;4584:9;4575:7;4571:23;4567:32;4564:52;;;4612:1;4609;4602:12;4564:52;4648:9;4635:23;4625:33;;4709:2;4698:9;4694:18;4681:32;-1:-1:-1;;;;;4773:2:81;4765:6;4762:14;4759:34;;;4789:1;4786;4779:12;4759:34;4828:78;4898:7;4889:6;4878:9;4874:22;4828:78;:::i;:::-;4925:8;;-1:-1:-1;4802:104:81;-1:-1:-1;5013:2:81;4998:18;;4985:32;;-1:-1:-1;5029:16:81;;;5026:36;;;5058:1;5055;5048:12;5026:36;;5097:80;5169:7;5158:8;5147:9;5143:24;5097:80;:::i;:::-;4372:865;;;;-1:-1:-1;4372:865:81;;-1:-1:-1;5196:8:81;;5071:106;4372:865;-1:-1:-1;;;4372:865:81:o;5242:456::-;5319:6;5327;5335;5388:2;5376:9;5367:7;5363:23;5359:32;5356:52;;;5404:1;5401;5394:12;5356:52;5443:9;5430:23;5462:31;5487:5;5462:31;:::i;:::-;5512:5;-1:-1:-1;5569:2:81;5554:18;;5541:32;5582:33;5541:32;5582:33;:::i;:::-;5242:456;;5634:7;;-1:-1:-1;;;5688:2:81;5673:18;;;;5660:32;;5242:456::o;5885:248::-;5953:6;5961;6014:2;6002:9;5993:7;5989:23;5985:32;5982:52;;;6030:1;6027;6020:12;5982:52;-1:-1:-1;;6053:23:81;;;6123:2;6108:18;;;6095:32;;-1:-1:-1;5885:248:81:o;6138:274::-;-1:-1:-1;;;;;6330:32:81;;;;6312:51;;6394:2;6379:18;;6372:34;6300:2;6285:18;;6138:274::o;6417:411::-;6488:6;6496;6549:2;6537:9;6528:7;6524:23;6520:32;6517:52;;;6565:1;6562;6555:12;6517:52;6605:9;6592:23;-1:-1:-1;;;;;6630:6:81;6627:30;6624:50;;;6670:1;6667;6660:12;6624:50;6709:59;6760:7;6751:6;6740:9;6736:22;6709:59;:::i;:::-;6787:8;;6683:85;;-1:-1:-1;6417:411:81;-1:-1:-1;;;;6417:411:81:o;6833:546::-;6913:6;6921;6929;6982:2;6970:9;6961:7;6957:23;6953:32;6950:52;;;6998:1;6995;6988:12;6950:52;7037:9;7024:23;7056:31;7081:5;7056:31;:::i;:::-;7106:5;-1:-1:-1;7162:2:81;7147:18;;7134:32;-1:-1:-1;;;;;7178:30:81;;7175:50;;;7221:1;7218;7211:12;7384:658;7555:2;7607:21;;;7677:13;;7580:18;;;7699:22;;;7526:4;;7555:2;7778:15;;;;7752:2;7737:18;;;7526:4;7821:195;7835:6;7832:1;7829:13;7821:195;;;7900:13;;-1:-1:-1;;;;;7896:39:81;7884:52;;7991:15;;;;7956:12;;;;7932:1;7850:9;7821:195;;;-1:-1:-1;8033:3:81;;7384:658;-1:-1:-1;;;;;;7384:658:81:o;8047:797::-;8177:6;8185;8193;8201;8254:2;8242:9;8233:7;8229:23;8225:32;8222:52;;;8270:1;8267;8260:12;8222:52;8310:9;8297:23;-1:-1:-1;;;;;8380:2:81;8372:6;8369:14;8366:34;;;8396:1;8393;8386:12;8366:34;8435:78;8505:7;8496:6;8485:9;8481:22;8435:78;:::i;:::-;8532:8;;-1:-1:-1;8409:104:81;-1:-1:-1;8620:2:81;8605:18;;8592:32;;-1:-1:-1;8636:16:81;;;8633:36;;;8665:1;8662;8655:12;8633:36;;8704:80;8776:7;8765:8;8754:9;8750:24;8704:80;:::i;:::-;8047:797;;;;-1:-1:-1;8803:8:81;-1:-1:-1;;;;8047:797:81:o;8849:592::-;8956:6;8964;8972;9025:2;9013:9;9004:7;9000:23;8996:32;8993:52;;;9041:1;9038;9031:12;8993:52;9080:9;9067:23;9099:31;9124:5;9099:31;:::i;:::-;9149:5;-1:-1:-1;9205:2:81;9190:18;;9177:32;-1:-1:-1;;;;;9221:30:81;;9218:50;;;9264:1;9261;9254:12;9218:50;9303:78;9373:7;9364:6;9353:9;9349:22;9303:78;:::i;9446:118::-;9532:5;9525:13;9518:21;9511:5;9508:32;9498:60;;9554:1;9551;9544:12;9569:681;9655:6;9663;9671;9679;9732:2;9720:9;9711:7;9707:23;9703:32;9700:52;;;9748:1;9745;9738:12;9700:52;9787:9;9774:23;9806:31;9831:5;9806:31;:::i;:::-;9856:5;-1:-1:-1;9912:2:81;9897:18;;9884:32;-1:-1:-1;;;;;9928:30:81;;9925:50;;;9971:1;9968;9961:12;9925:50;10010:59;10061:7;10052:6;10041:9;10037:22;10010:59;:::i;:::-;10088:8;;-1:-1:-1;9984:85:81;-1:-1:-1;;10175:2:81;10160:18;;10147:32;10188:30;10147:32;10188:30;:::i;:::-;9569:681;;;;-1:-1:-1;9569:681:81;;-1:-1:-1;;9569:681:81:o;11645:540::-;11722:6;11730;11738;11791:2;11779:9;11770:7;11766:23;11762:32;11759:52;;;11807:1;11804;11797:12;11759:52;11847:9;11834:23;-1:-1:-1;;;;;11872:6:81;11869:30;11866:50;;;11912:1;11909;11902:12;11866:50;11951:59;12002:7;11993:6;11982:9;11978:22;11951:59;:::i;:::-;12029:8;;-1:-1:-1;11925:85:81;-1:-1:-1;;12114:2:81;12099:18;;12086:32;12127:28;12086:32;12127:28;:::i;:::-;12174:5;12164:15;;;11645:540;;;;;:::o;12190:382::-;12255:6;12263;12316:2;12304:9;12295:7;12291:23;12287:32;12284:52;;;12332:1;12329;12322:12;12284:52;12371:9;12358:23;12390:31;12415:5;12390:31;:::i;:::-;12440:5;-1:-1:-1;12497:2:81;12482:18;;12469:32;12510:30;12469:32;12510:30;:::i;:::-;12559:7;12549:17;;;12190:382;;;;;:::o;12577:241::-;12633:6;12686:2;12674:9;12665:7;12661:23;12657:32;12654:52;;;12702:1;12699;12692:12;12654:52;12741:9;12728:23;12760:28;12782:5;12760:28;:::i;12823:415::-;12890:6;12898;12951:2;12939:9;12930:7;12926:23;12922:32;12919:52;;;12967:1;12964;12957:12;12919:52;13006:9;12993:23;13025:31;13050:5;13025:31;:::i;:::-;13075:5;-1:-1:-1;13132:2:81;13117:18;;13104:32;13180:6;13167:20;;13155:33;;13145:61;;13202:1;13199;13192:12;13243:932;13382:6;13390;13398;13406;13414;13467:2;13455:9;13446:7;13442:23;13438:32;13435:52;;;13483:1;13480;13473:12;13435:52;13522:9;13509:23;13541:31;13566:5;13541:31;:::i;:::-;13591:5;-1:-1:-1;13647:2:81;13632:18;;13619:32;-1:-1:-1;;;;;13700:14:81;;;13697:34;;;13727:1;13724;13717:12;14385:127;14446:10;14441:3;14437:20;14434:1;14427:31;14477:4;14474:1;14467:15;14501:4;14498:1;14491:15;14517:275;14588:2;14582:9;14653:2;14634:13;;-1:-1:-1;;14630:27:81;14618:40;;-1:-1:-1;;;;;14673:34:81;;14709:22;;;14670:62;14667:88;;;14735:18;;:::i;:::-;14771:2;14764:22;14517:275;;-1:-1:-1;14517:275:81:o;14797:186::-;14845:4;-1:-1:-1;;;;;14870:6:81;14867:30;14864:56;;;14900:18;;:::i;:::-;-1:-1:-1;14966:2:81;14945:15;-1:-1:-1;;14941:29:81;14972:4;14937:40;;14797:186::o;14988:1016::-;15083:6;15091;15099;15107;15160:3;15148:9;15139:7;15135:23;15131:33;15128:53;;;15177:1;15174;15167:12;15128:53;15216:9;15203:23;15235:31;15260:5;15235:31;:::i;:::-;15285:5;-1:-1:-1;15342:2:81;15327:18;;15314:32;15355:33;15314:32;15355:33;:::i;:::-;15407:7;-1:-1:-1;15461:2:81;15446:18;;15433:32;;-1:-1:-1;15516:2:81;15501:18;;15488:32;-1:-1:-1;;;;;15532:30:81;;15529:50;;;15575:1;15572;15565:12;15529:50;15598:22;;15651:4;15643:13;;15639:27;-1:-1:-1;15629:55:81;;15680:1;15677;15670:12;15629:55;15716:2;15703:16;15741:48;15757:31;15785:2;15757:31;:::i;:::-;15741:48;:::i;:::-;15812:2;15805:5;15798:17;15852:7;15847:2;15842;15838;15834:11;15830:20;15827:33;15824:53;;;15873:1;15870;15863:12;15824:53;15928:2;15923;15919;15915:11;15910:2;15903:5;15899:14;15886:45;15972:1;15967:2;15962;15955:5;15951:14;15947:23;15940:34;15993:5;15983:15;;;;;14988:1016;;;;;;;:::o;16009:469::-;16070:3;16108:5;16102:12;16135:6;16130:3;16123:19;16161:4;16190:2;16185:3;16181:12;16174:19;;16227:2;16220:5;16216:14;16248:1;16258:195;16272:6;16269:1;16266:13;16258:195;;;16337:13;;-1:-1:-1;;;;;16333:39:81;16321:52;;16393:12;;;;16428:15;;;;16369:1;16287:9;16258:195;;16483:285;16678:2;16667:9;16660:21;16641:4;16698:64;16758:2;16747:9;16743:18;16735:6;16698:64;:::i;16773:489::-;17046:2;17035:9;17028:21;17009:4;17072:64;17132:2;17121:9;17117:18;17109:6;17072:64;:::i;:::-;17184:9;17176:6;17172:22;17167:2;17156:9;17152:18;17145:50;17212:44;17249:6;17241;17212:44;:::i;:::-;17204:52;16773:489;-1:-1:-1;;;;;16773:489:81:o;17267:171::-;17334:20;;-1:-1:-1;;;;;17383:30:81;;17373:41;;17363:69;;17428:1;17425;17418:12;17443:319;17510:6;17518;17571:2;17559:9;17550:7;17546:23;17542:32;17539:52;;;17587:1;17584;17577:12;17539:52;17626:9;17613:23;17645:31;17670:5;17645:31;:::i;:::-;17695:5;-1:-1:-1;17719:37:81;17752:2;17737:18;;17719:37;:::i;:::-;17709:47;;17443:319;;;;;:::o;17767:388::-;17835:6;17843;17896:2;17884:9;17875:7;17871:23;17867:32;17864:52;;;17912:1;17909;17902:12;17864:52;17951:9;17938:23;17970:31;17995:5;17970:31;:::i;:::-;18020:5;-1:-1:-1;18077:2:81;18062:18;;18049:32;18090:33;18049:32;18090:33;:::i;18160:400::-;18362:2;18344:21;;;18401:2;18381:18;;;18374:30;18440:34;18435:2;18420:18;;18413:62;-1:-1:-1;;;18506:2:81;18491:18;;18484:34;18550:3;18535:19;;18160:400::o;18565:380::-;18644:1;18640:12;;;;18687;;;18708:61;;18762:4;18754:6;18750:17;18740:27;;18708:61;18815:2;18807:6;18804:14;18784:18;18781:38;18778:161;;18861:10;18856:3;18852:20;18849:1;18842:31;18896:4;18893:1;18886:15;18924:4;18921:1;18914:15;19782:341;19984:2;19966:21;;;20023:2;20003:18;;;19996:30;-1:-1:-1;;;20057:2:81;20042:18;;20035:47;20114:2;20099:18;;19782:341::o;20479:345::-;20681:2;20663:21;;;20720:2;20700:18;;;20693:30;-1:-1:-1;;;20754:2:81;20739:18;;20732:51;20815:2;20800:18;;20479:345::o;20829:409::-;21031:2;21013:21;;;21070:2;21050:18;;;21043:30;21109:34;21104:2;21089:18;;21082:62;-1:-1:-1;;;21175:2:81;21160:18;;21153:43;21228:3;21213:19;;20829:409::o;21243:127::-;21304:10;21299:3;21295:20;21292:1;21285:31;21335:4;21332:1;21325:15;21359:4;21356:1;21349:15;21375:127;21436:10;21431:3;21427:20;21424:1;21417:31;21467:4;21464:1;21457:15;21491:4;21488:1;21481:15;21507:135;21546:3;21567:17;;;21564:43;;21587:18;;:::i;:::-;-1:-1:-1;21634:1:81;21623:13;;21507:135::o;21647:125::-;21712:9;;;21733:10;;;21730:36;;;21746:18;;:::i;21777:522::-;21855:4;21861:6;21921:11;21908:25;22015:2;22011:7;22000:8;21984:14;21980:29;21976:43;21956:18;21952:68;21942:96;;22034:1;22031;22024:12;21942:96;22061:33;;22113:20;;;-1:-1:-1;;;;;;22145:30:81;;22142:50;;;22188:1;22185;22178:12;22142:50;22221:4;22209:17;;-1:-1:-1;22252:14:81;22248:27;;;22238:38;;22235:58;;;22289:1;22286;22279:12;22304:184;22362:6;22415:2;22403:9;22394:7;22390:23;22386:32;22383:52;;;22431:1;22428;22421:12;22383:52;22454:28;22472:9;22454:28;:::i;22853:337::-;23055:2;23037:21;;;23094:2;23074:18;;;23067:30;-1:-1:-1;;;23128:2:81;23113:18;;23106:43;23181:2;23166:18;;22853:337::o;23195:348::-;23397:2;23379:21;;;23436:2;23416:18;;;23409:30;-1:-1:-1;;;23470:2:81;23455:18;;23448:54;23534:2;23519:18;;23195:348::o;24719:337::-;24921:2;24903:21;;;24960:2;24940:18;;;24933:30;-1:-1:-1;;;24994:2:81;24979:18;;24972:43;25047:2;25032:18;;24719:337::o;25187:545::-;25289:2;25284:3;25281:11;25278:448;;;25325:1;25350:5;25346:2;25339:17;25395:4;25391:2;25381:19;25465:2;25453:10;25449:19;25446:1;25442:27;25436:4;25432:38;25501:4;25489:10;25486:20;25483:47;;;-1:-1:-1;25524:4:81;25483:47;25579:2;25574:3;25570:12;25567:1;25563:20;25557:4;25553:31;25543:41;;25634:82;25652:2;25645:5;25642:13;25634:82;;;25697:17;;;25678:1;25667:13;25634:82;;25737:166;-1:-1:-1;;25865:1:81;25861:11;;;25857:24;25853:29;25843:40;25889:1;25885:11;;;;25840:57;;25737:166::o;25908:1206::-;-1:-1:-1;;;;;26027:3:81;26024:27;26021:53;;;26054:18;;:::i;:::-;26083:94;26173:3;26133:38;26165:4;26159:11;26133:38;:::i;:::-;26127:4;26083:94;:::i;:::-;26203:1;26228:2;26223:3;26220:11;26245:1;26240:616;;;;26900:1;26917:3;26914:93;;;-1:-1:-1;26973:19:81;;;26960:33;26914:93;27033:64;27093:3;27086:5;27033:64;:::i;:::-;27027:4;27020:78;;26213:895;;26240:616;25134:1;25127:14;;;25171:4;25158:18;;-1:-1:-1;;26276:17:81;;;26377:9;26399:229;26413:7;26410:1;26407:14;26399:229;;;26502:19;;;26489:33;26474:49;;26609:4;26594:20;;;;26562:1;26550:14;;;;26429:12;26399:229;;;26403:3;26656;26647:7;26644:16;26641:159;;;26780:1;26776:6;26770:3;26764;26761:1;26757:11;26753:21;26749:34;26745:39;26732:9;26727:3;26723:19;26710:33;26706:79;26698:6;26691:95;26641:159;;;26843:1;26837:3;26834:1;26830:11;26826:19;26820:4;26813:33;26213:895;;25908:1206;;;:::o;27119:1075::-;27423:2;27435:21;;;27408:18;;27491:22;;;27375:4;27570:6;27544:2;27529:18;;27375:4;27604:304;27618:6;27615:1;27612:13;27604:304;;;27693:6;27680:20;27713:31;27738:5;27713:31;:::i;:::-;-1:-1:-1;;;;;27769:31:81;27757:44;;27824:4;27883:15;;;;27848:12;;;;27797:1;27633:9;27604:304;;;-1:-1:-1;27946:19:81;;;27939:4;27924:20;;27917:49;27975:19;;;-1:-1:-1;;;;;28006:31:81;;28003:51;;;28050:1;28047;28040:12;28003:51;28084:6;28081:1;28077:14;28063:28;;28137:6;28129;28122:4;28117:3;28113:14;28100:44;28165:16;28183:4;28161:27;;27119:1075;-1:-1:-1;;;;;;27119:1075:81:o;29727:1352::-;29853:3;29847:10;-1:-1:-1;;;;;29872:6:81;29869:30;29866:56;;;29902:18;;:::i;:::-;29931:97;30021:6;29981:38;30013:4;30007:11;29981:38;:::i;:::-;29975:4;29931:97;:::i;:::-;30083:4;;30147:2;30136:14;;30164:1;30159:663;;;;30866:1;30883:6;30880:89;;;-1:-1:-1;30935:19:81;;;30929:26;30880:89;30995:67;31055:6;31048:5;30995:67;:::i;:::-;30989:4;30982:81;;30129:944;;30159:663;25134:1;25127:14;;;25171:4;25158:18;;-1:-1:-1;;30195:20:81;;;30313:236;30327:7;30324:1;30321:14;30313:236;;;30416:19;;;30410:26;30395:42;;30508:27;;;;30476:1;30464:14;;;;30343:19;;30313:236;;;30317:3;30577:6;30568:7;30565:19;30562:201;;;30638:19;;;30632:26;-1:-1:-1;;30721:1:81;30717:14;;;30733:3;30713:24;30709:37;30705:42;30690:58;30675:74;;30562:201;-1:-1:-1;;;;;30809:1:81;30793:14;;;30789:22;30776:36;;-1:-1:-1;29727:1352:81:o;31441:168::-;31514:9;;;31545;;31562:15;;;31556:22;;31542:37;31532:71;;31583:18;;:::i;31746:217::-;31786:1;31812;31802:132;;31856:10;31851:3;31847:20;31844:1;31837:31;31891:4;31888:1;31881:15;31919:4;31916:1;31909:15;31802:132;-1:-1:-1;31948:9:81;;31746:217::o;32677:197::-;32715:3;32743:6;32784:2;32777:5;32773:14;32811:2;32802:7;32799:15;32796:41;;32817:18;;:::i;:::-;32866:1;32853:15;;32677:197;-1:-1:-1;;;32677:197:81:o;33233:414::-;33435:2;33417:21;;;33474:2;33454:18;;;33447:30;33513:34;33508:2;33493:18;;33486:62;-1:-1:-1;;;33579:2:81;33564:18;;33557:48;33637:3;33622:19;;33233:414::o;33652:191::-;33720:4;-1:-1:-1;;;;;33745:6:81;33742:30;33739:56;;;33775:18;;:::i;:::-;-1:-1:-1;33820:1:81;33816:14;33832:4;33812:25;;33652:191::o;33848:667::-;33913:5;33966:3;33959:4;33951:6;33947:17;33943:27;33933:55;;33984:1;33981;33974:12;33933:55;34013:6;34007:13;34039:4;34063:68;34079:51;34127:2;34079:51;:::i;34063:68::-;34165:15;;;34251:1;34247:10;;;;34235:23;;34231:32;;;34196:12;;;;34275:15;;;34272:35;;;34303:1;34300;34293:12;34272:35;34339:2;34331:6;34327:15;34351:135;34367:6;34362:3;34359:15;34351:135;;;34433:10;;34421:23;;34464:12;;;;34384;;34351:135;;;-1:-1:-1;34504:5:81;33848:667;-1:-1:-1;;;;;;33848:667:81:o;34520:1225::-;34657:6;34665;34718:2;34706:9;34697:7;34693:23;34689:32;34686:52;;;34734:1;34731;34724:12;34686:52;34767:9;34761:16;-1:-1:-1;;;;;34837:2:81;34829:6;34826:14;34823:34;;;34853:1;34850;34843:12;34823:34;34891:6;34880:9;34876:22;34866:32;;34936:7;34929:4;34925:2;34921:13;34917:27;34907:55;;34958:1;34955;34948:12;34907:55;34987:2;34981:9;35009:4;35033:68;35049:51;35097:2;35049:51;:::i;35033:68::-;35135:15;;;35217:1;35213:10;;;;35205:19;;35201:28;;;35166:12;;;;35241:19;;;35238:39;;;35273:1;35270;35263:12;35238:39;35297:11;;;;35317:210;35333:6;35328:3;35325:15;35317:210;;;35406:3;35400:10;35423:31;35448:5;35423:31;:::i;:::-;35467:18;;35350:12;;;;35505;;;;35317:210;;;35582:18;;;35576:25;35546:5;;-1:-1:-1;35576:25:81;;-1:-1:-1;;;35613:16:81;;;35610:36;;;35642:1;35639;35632:12;35610:36;;35665:74;35731:7;35720:8;35709:9;35705:24;35665:74;:::i;:::-;35655:84;;;34520:1225;;;;;:::o;35750:722::-;35800:3;35841:5;35835:12;35870:36;35896:9;35870:36;:::i;:::-;35925:1;35942:18;;;35969:133;;;;36116:1;36111:355;;;;35935:531;;35969:133;-1:-1:-1;;36002:24:81;;35990:37;;36075:14;;36068:22;36056:35;;36047:45;;;-1:-1:-1;35969:133:81;;36111:355;36142:5;36139:1;36132:16;36171:4;36216:2;36213:1;36203:16;36241:1;36255:165;36269:6;36266:1;36263:13;36255:165;;;36347:14;;36334:11;;;36327:35;36390:16;;;;36284:10;;36255:165;;;36259:3;;;36449:6;36444:3;36440:16;36433:23;;35935:531;;;;;35750:722;;;;:::o;36477:277::-;36650:3;36675:73;36709:38;36743:3;36735:6;36709:38;:::i;:::-;36701:6;36675:73;:::i;36759:648::-;36839:6;36892:2;36880:9;36871:7;36867:23;36863:32;36860:52;;;36908:1;36905;36898:12;36860:52;36941:9;36935:16;-1:-1:-1;;;;;36966:6:81;36963:30;36960:50;;;37006:1;37003;36996:12;36960:50;37029:22;;37082:4;37074:13;;37070:27;-1:-1:-1;37060:55:81;;37111:1;37108;37101:12;37060:55;37140:2;37134:9;37165:48;37181:31;37209:2;37181:31;:::i;37165:48::-;37236:2;37229:5;37222:17;37276:7;37271:2;37266;37262;37258:11;37254:20;37251:33;37248:53;;;37297:1;37294;37287:12;37248:53;37310:67;37374:2;37369;37362:5;37358:14;37353:2;37349;37345:11;37310:67;:::i;37412:389::-;37588:3;37616:38;37650:3;37642:6;37616:38;:::i;:::-;37683:6;37677:13;37699:65;37757:6;37753:2;37746:4;37738:6;37734:17;37699:65;:::i;:::-;37780:15;;37412:389;-1:-1:-1;;;;37412:389:81:o;39501:128::-;39568:9;;;39589:11;;;39586:37;;;39603:18;;:::i;39634:127::-;39695:10;39690:3;39686:20;39683:1;39676:31;39726:4;39723:1;39716:15;39750:4;39747:1;39740:15;40101:489;-1:-1:-1;;;;;40370:15:81;;;40352:34;;40422:15;;40417:2;40402:18;;40395:43;40469:2;40454:18;;40447:34;;;40517:3;40512:2;40497:18;;40490:31;;;40295:4;;40538:46;;40564:19;;40556:6;40538:46;:::i;:::-;40530:54;40101:489;-1:-1:-1;;;;;;40101:489:81:o;40595:249::-;40664:6;40717:2;40705:9;40696:7;40692:23;40688:32;40685:52;;;40733:1;40730;40723:12;40685:52;40765:9;40759:16;40784:30;40808:5;40784:30;:::i;41774:456::-;-1:-1:-1;;;;;42061:15:81;;;42043:34;;42113:15;;;42108:2;42093:18;;42086:43;42165:15;;42160:2;42145:18;;42138:43;42212:2;42197:18;;42190:34;;;;41992:3;41977:19;;41774:456::o;42235:245::-;42302:6;42355:2;42343:9;42334:7;42330:23;42326:32;42323:52;;;42371:1;42368;42361:12;42323:52;42403:9;42397:16;42422:28;42444:5;42422:28;:::i;42485:350::-;42687:2;42669:21;;;42726:2;42706:18;;;42699:30;-1:-1:-1;;;42760:2:81;42745:18;;42738:56;42826:2;42811:18;;42485:350::o",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/// @author: manifold.xyz\n\nimport \"@manifoldxyz/libraries-solidity/contracts/access/AdminControl.sol\";\nimport \"./core/ERC721CreatorCore.sol\";\nimport \"./token/ERC721/ERC721Base.sol\";\n\n/**\n * @dev ERC721Creator implementation\n */\ncontract ERC721Creator is AdminControl, ERC721Base, ERC721CreatorCore {\n    using EnumerableSet for EnumerableSet.AddressSet;\n\n    constructor (string memory _name, string memory _symbol) ERC721Base(_name, _symbol) {}\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721Core, ERC721CreatorCore, AdminControl) returns (bool) {\n        return ERC721CreatorCore.supportsInterface(interfaceId) || ERC721Core.supportsInterface(interfaceId) || AdminControl.supportsInterface(interfaceId);\n    }\n\n    function _beforeTokenTransfer(address from, address to, uint256 tokenId, uint96 data) internal virtual override {\n        _approveTransfer(from, to, tokenId, uint16(data));\n    }\n\n    /**\n     * @dev See {ICreatorCore-registerExtension}.\n     */\n    function registerExtension(address extension, string calldata baseURI) external override adminRequired {\n        requireNonBlacklist(extension);\n        _registerExtension(extension, baseURI, false);\n    }\n\n    /**\n     * @dev See {ICreatorCore-registerExtension}.\n     */\n    function registerExtension(address extension, string calldata baseURI, bool baseURIIdentical) external override adminRequired {\n        requireNonBlacklist(extension);\n        _registerExtension(extension, baseURI, baseURIIdentical);\n    }\n\n\n    /**\n     * @dev See {ICreatorCore-unregisterExtension}.\n     */\n    function unregisterExtension(address extension) external override adminRequired {\n        _unregisterExtension(extension);\n    }\n\n    /**\n     * @dev See {ICreatorCore-blacklistExtension}.\n     */\n    function blacklistExtension(address extension) external override adminRequired {\n        _blacklistExtension(extension);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setBaseTokenURIExtension}.\n     */\n    function setBaseTokenURIExtension(string calldata uri) external override {\n        requireExtension();\n        _setBaseTokenURIExtension(uri, false);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setBaseTokenURIExtension}.\n     */\n    function setBaseTokenURIExtension(string calldata uri, bool identical) external override {\n        requireExtension();\n        _setBaseTokenURIExtension(uri, identical);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setTokenURIPrefixExtension}.\n     */\n    function setTokenURIPrefixExtension(string calldata prefix) external override {\n        requireExtension();\n        _setTokenURIPrefixExtension(prefix);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setTokenURIExtension}.\n     */\n    function setTokenURIExtension(uint256 tokenId, string calldata uri) external override {\n        requireExtension();\n        _setTokenURIExtension(tokenId, uri);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setTokenURIExtension}.\n     */\n    function setTokenURIExtension(uint256[] calldata tokenIds, string[] calldata uris) external override {\n        requireExtension();\n        require(tokenIds.length == uris.length, \"Invalid input\");\n        for (uint i; i < tokenIds.length;) {\n            _setTokenURIExtension(tokenIds[i], uris[i]);\n            unchecked { ++i; }\n        }\n    }\n\n    /**\n     * @dev See {ICreatorCore-setBaseTokenURI}.\n     */\n    function setBaseTokenURI(string calldata uri) external override adminRequired {\n        _setBaseTokenURI(uri);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setTokenURIPrefix}.\n     */\n    function setTokenURIPrefix(string calldata prefix) external override adminRequired {\n        _setTokenURIPrefix(prefix);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setTokenURI}.\n     */\n    function setTokenURI(uint256 tokenId, string calldata uri) external override adminRequired {\n        _setTokenURI(tokenId, uri);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setTokenURI}.\n     */\n    function setTokenURI(uint256[] calldata tokenIds, string[] calldata uris) external override adminRequired {\n        require(tokenIds.length == uris.length, \"Invalid input\");\n        for (uint i; i < tokenIds.length;) {\n            _setTokenURI(tokenIds[i], uris[i]);\n            unchecked { ++i; }\n        }\n    }\n\n    /**\n     * @dev See {ICreatorCore-setMintPermissions}.\n     */\n    function setMintPermissions(address extension, address permissions) external override adminRequired {\n        _setMintPermissions(extension, permissions);\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-mintBase}.\n     */\n    function mintBase(address to) public virtual override nonReentrant adminRequired returns(uint256) {\n        return _mintBase(to, \"\", 0);\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-mintBase}.\n     */\n    function mintBase(address to, string calldata uri) public virtual override nonReentrant adminRequired returns(uint256) {\n        return _mintBase(to, uri, 0);\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-mintBaseBatch}.\n     */\n    function mintBaseBatch(address to, uint16 count) public virtual override nonReentrant adminRequired returns(uint256[] memory tokenIds) {\n        tokenIds = new uint256[](count);\n        uint256 firstTokenId = _tokenCount+1;\n        _tokenCount += count;\n\n        for (uint i; i < count;) {\n            tokenIds[i] = _mintBase(to, \"\", firstTokenId+i);\n            unchecked { ++i; }\n        }\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-mintBaseBatch}.\n     */\n    function mintBaseBatch(address to, string[] calldata uris) public virtual override nonReentrant adminRequired returns(uint256[] memory tokenIds) {\n        tokenIds = new uint256[](uris.length);\n        uint256 firstTokenId = _tokenCount+1;\n        _tokenCount += uris.length;\n\n        for (uint i; i < uris.length;) {\n            tokenIds[i] = _mintBase(to, uris[i], firstTokenId+i);\n            unchecked { ++i; }\n        }\n    }\n\n    /**\n     * @dev Mint token with no extension\n     */\n    function _mintBase(address to, string memory uri, uint256 tokenId) internal virtual returns(uint256) {\n        if (tokenId == 0) {\n            ++_tokenCount;\n            tokenId = _tokenCount;\n        }\n\n        // Call pre mint\n        _preMintBase(to, tokenId);\n\n        _safeMint(to, tokenId, 0);\n\n        if (bytes(uri).length > 0) {\n            _tokenURIs[tokenId] = uri;\n        }\n\n        return tokenId;\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-mintExtension}.\n     */\n    function mintExtension(address to) public virtual override nonReentrant returns(uint256) {\n        requireExtension();\n        return _mintExtension(to, \"\", 0, 0);\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-mintExtension}.\n     */\n    function mintExtension(address to, string calldata uri) public virtual override nonReentrant returns(uint256) {\n        requireExtension();\n        return _mintExtension(to, uri, 0, 0);\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-mintExtension}.\n     */\n    function mintExtension(address to, uint80 data) public virtual override nonReentrant returns(uint256) {\n        requireExtension();\n        return _mintExtension(to, \"\", data, 0);\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-mintExtensionBatch}.\n     */\n    function mintExtensionBatch(address to, uint16 count) public virtual override nonReentrant returns(uint256[] memory tokenIds) {\n        requireExtension();\n        tokenIds = new uint256[](count);\n        uint256 firstTokenId = _tokenCount+1;\n        _tokenCount += count;\n\n        for (uint i; i < count;) {\n            tokenIds[i] = _mintExtension(to, \"\", 0, firstTokenId+i);\n            unchecked { ++i; }\n        }\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-mintExtensionBatch}.\n     */\n    function mintExtensionBatch(address to, string[] calldata uris) public virtual override nonReentrant returns(uint256[] memory tokenIds) {\n        requireExtension();\n        tokenIds = new uint256[](uris.length);\n        uint256 firstTokenId = _tokenCount+1;\n        _tokenCount += uris.length;\n\n        for (uint i; i < uris.length;) {\n            tokenIds[i] = _mintExtension(to, uris[i], 0, firstTokenId+i);\n            unchecked { ++i; }\n        }\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-mintExtensionBatch}.\n     */\n    function mintExtensionBatch(address to, uint80[] calldata data) public virtual override nonReentrant returns(uint256[] memory tokenIds) {\n        requireExtension();\n        tokenIds = new uint256[](data.length);\n        uint256 firstTokenId = _tokenCount+1;\n        _tokenCount += data.length;\n\n        for (uint i; i < data.length;) {\n            tokenIds[i] = _mintExtension(to, \"\", data[i], firstTokenId+i);\n            unchecked { ++i; }\n        }\n    }\n\n    /**\n     * @dev Mint token via extension\n     */\n    function _mintExtension(address to, string memory uri, uint80 data, uint256 tokenId) internal virtual returns(uint256) {\n        if (tokenId == 0) {\n            ++_tokenCount;\n            tokenId = _tokenCount;\n        }\n\n        _checkMintPermissions(to, tokenId);\n        // Call pre mint\n        _preMintExtension(to, tokenId);\n\n        _safeMint(to, tokenId, data << 16 | _extensionToIndex[msg.sender]);\n\n        if (bytes(uri).length > 0) {\n            _tokenURIs[tokenId] = uri;\n        }\n\n        return tokenId;\n    }\n\n    /**\n     * @dev See {ICreatorCore-tokenExtension}.\n     */\n    function tokenExtension(uint256 tokenId) public view virtual override returns (address extension) {\n        require(_exists(tokenId), \"Nonexistent token\");\n        extension = _tokenExtension(tokenId);\n        require(extension != address(0), \"No extension for token\");\n        require(!_blacklistedExtensions.contains(extension), \"Extension blacklisted\");\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-burn}.\n     */\n    function burn(uint256 tokenId) public virtual override nonReentrant {\n        require(_isApprovedOrOwner(msg.sender, tokenId), \"Caller is not owner or approved\");\n        address owner = ownerOf(tokenId);\n        address extension = _tokenExtension(tokenId);\n        _burn(tokenId);\n        _postBurn(owner, tokenId, extension);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setRoyalties}.\n     */\n    function setRoyalties(address payable[] calldata receivers, uint256[] calldata basisPoints) external override adminRequired {\n        _setRoyaltiesExtension(address(0), receivers, basisPoints);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setRoyalties}.\n     */\n    function setRoyalties(uint256 tokenId, address payable[] calldata receivers, uint256[] calldata basisPoints) external override adminRequired {\n        require(_exists(tokenId), \"Nonexistent token\");\n        _setRoyalties(tokenId, receivers, basisPoints);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setRoyaltiesExtension}.\n     */\n    function setRoyaltiesExtension(address extension, address payable[] calldata receivers, uint256[] calldata basisPoints) external override adminRequired {\n        _setRoyaltiesExtension(extension, receivers, basisPoints);\n    }\n\n    /**\n     * @dev See {ICreatorCore-getRoyalties}.\n     */\n    function getRoyalties(uint256 tokenId) external view virtual override returns (address payable[] memory, uint256[] memory) {\n        require(_exists(tokenId), \"Nonexistent token\");\n        return _getRoyalties(tokenId);\n    }\n\n    /**\n     * @dev See {ICreatorCore-getFees}.\n     */\n    function getFees(uint256 tokenId) external view virtual override returns (address payable[] memory, uint256[] memory) {\n        require(_exists(tokenId), \"Nonexistent token\");\n        return _getRoyalties(tokenId);\n    }\n\n    /**\n     * @dev See {ICreatorCore-getFeeRecipients}.\n     */\n    function getFeeRecipients(uint256 tokenId) external view virtual override returns (address payable[] memory) {\n        require(_exists(tokenId), \"Nonexistent token\");\n        return _getRoyaltyReceivers(tokenId);\n    }\n\n    /**\n     * @dev See {ICreatorCore-getFeeBps}.\n     */\n    function getFeeBps(uint256 tokenId) external view virtual override returns (uint[] memory) {\n        require(_exists(tokenId), \"Nonexistent token\");\n        return _getRoyaltyBPS(tokenId);\n    }\n    \n    /**\n     * @dev See {ICreatorCore-royaltyInfo}.\n     */\n    function royaltyInfo(uint256 tokenId, uint256 value) external view virtual override returns (address, uint256) {\n        require(_exists(tokenId), \"Nonexistent token\");\n        return _getRoyaltyInfo(tokenId, value);\n    } \n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        require(_exists(tokenId), \"Nonexistent token\");\n        return _tokenURI(tokenId);\n    }\n\n    /**\n     * @dev See {ICreatorCore-setApproveTransfer}.\n     */\n    function setApproveTransfer(address extension) external override adminRequired {\n        _setApproveTransferBase(extension);\n    }\n\n    function _tokenExtension(uint256 tokenId) internal view override returns(address) {\n        uint16 extensionIndex = uint16(_tokenData[tokenId].data);\n        if (extensionIndex == 0) return address(0);\n        return _indexToExtension[extensionIndex];\n    }\n\n    /**\n     * @dev See {IERC721CreatorCore-tokenData}.\n     */\n    function tokenData(uint256 tokenId) external view returns (uint80) {\n        return uint80(_tokenData[tokenId].data >> 16);\n    }\n}",
  "sourcePath": "/Users/chung/git/manifoldxyz/solidity/creator-core-solidity/contracts/ERC721Creator.sol",
  "ast": {
    "absolutePath": "project:/contracts/ERC721Creator.sol",
    "exportedSymbols": {
      "Address": [
        1911
      ],
      "AddressUpgradeable": [
        1002
      ],
      "AdminControl": [
        185
      ],
      "Context": [
        1933
      ],
      "CreatorCore": [
        13473
      ],
      "ERC165": [
        2132
      ],
      "ERC165Checker": [
        2326
      ],
      "ERC721Base": [
        19802
      ],
      "ERC721Core": [
        20641
      ],
      "ERC721Creator": [
        9615
      ],
      "ERC721CreatorCore": [
        14289
      ],
      "EnumerableSet": [
        3816
      ],
      "IAdminControl": [
        417
      ],
      "ICreatorCore": [
        15197
      ],
      "ICreatorExtensionRoyalties": [
        16574
      ],
      "ICreatorExtensionTokenURI": [
        16591
      ],
      "IERC165": [
        2338
      ],
      "IERC721": [
        1505
      ],
      "IERC721CreatorCore": [
        15407
      ],
      "IERC721CreatorExtensionApproveTransfer": [
        16483
      ],
      "IERC721CreatorExtensionBurnable": [
        16498
      ],
      "IERC721CreatorMintPermissions": [
        18497
      ],
      "IERC721Metadata": [
        1581
      ],
      "IERC721Receiver": [
        1523
      ],
      "Math": [
        3203
      ],
      "Ownable": [
        1157
      ],
      "ReentrancyGuard": [
        1211
      ],
      "Strings": [
        2108
      ]
    },
    "id": 9616,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8329,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:23:27"
      },
      {
        "absolutePath": "@manifoldxyz/libraries-solidity/contracts/access/AdminControl.sol",
        "file": "@manifoldxyz/libraries-solidity/contracts/access/AdminControl.sol",
        "id": 8330,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9616,
        "sourceUnit": 186,
        "src": "85:75:27",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/core/ERC721CreatorCore.sol",
        "file": "./core/ERC721CreatorCore.sol",
        "id": 8331,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9616,
        "sourceUnit": 14290,
        "src": "161:38:27",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/token/ERC721/ERC721Base.sol",
        "file": "./token/ERC721/ERC721Base.sol",
        "id": 8332,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9616,
        "sourceUnit": 19803,
        "src": "200:39:27",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 8334,
              "name": "AdminControl",
              "nameLocations": [
                "312:12:27"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 185,
              "src": "312:12:27"
            },
            "id": 8335,
            "nodeType": "InheritanceSpecifier",
            "src": "312:12:27"
          },
          {
            "baseName": {
              "id": 8336,
              "name": "ERC721Base",
              "nameLocations": [
                "326:10:27"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 19802,
              "src": "326:10:27"
            },
            "id": 8337,
            "nodeType": "InheritanceSpecifier",
            "src": "326:10:27"
          },
          {
            "baseName": {
              "id": 8338,
              "name": "ERC721CreatorCore",
              "nameLocations": [
                "338:17:27"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 14289,
              "src": "338:17:27"
            },
            "id": 8339,
            "nodeType": "InheritanceSpecifier",
            "src": "338:17:27"
          }
        ],
        "canonicalName": "ERC721Creator",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 8333,
          "nodeType": "StructuredDocumentation",
          "src": "241:44:27",
          "text": " @dev ERC721Creator implementation"
        },
        "fullyImplemented": true,
        "id": 9615,
        "linearizedBaseContracts": [
          9615,
          14289,
          15407,
          13473,
          19802,
          20641,
          1581,
          1505,
          185,
          2132,
          15197,
          417,
          2338,
          1211,
          1157,
          1933
        ],
        "name": "ERC721Creator",
        "nameLocation": "295:13:27",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "global": false,
            "id": 8343,
            "libraryName": {
              "id": 8340,
              "name": "EnumerableSet",
              "nameLocations": [
                "368:13:27"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 3816,
              "src": "368:13:27"
            },
            "nodeType": "UsingForDirective",
            "src": "362:49:27",
            "typeName": {
              "id": 8342,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 8341,
                "name": "EnumerableSet.AddressSet",
                "nameLocations": [
                  "386:13:27",
                  "400:10:27"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 3529,
                "src": "386:24:27"
              },
              "referencedDeclaration": 3529,
              "src": "386:24:27",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_AddressSet_$3529_storage_ptr",
                "typeString": "struct EnumerableSet.AddressSet"
              }
            }
          },
          {
            "body": {
              "id": 8354,
              "nodeType": "Block",
              "src": "501:2:27",
              "statements": []
            },
            "id": 8355,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 8350,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8345,
                    "src": "485:5:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "id": 8351,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8347,
                    "src": "492:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 8352,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 8349,
                  "name": "ERC721Base",
                  "nameLocations": [
                    "474:10:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 19802,
                  "src": "474:10:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "474:26:27"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8345,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "444:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8355,
                  "src": "430:19:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8344,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "430:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8347,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "465:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8355,
                  "src": "451:21:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8346,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "451:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "429:44:27"
            },
            "returnParameters": {
              "id": 8353,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "501:0:27"
            },
            "scope": 9615,
            "src": "417:86:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              42,
              13923,
              19882
            ],
            "body": {
              "id": 8382,
              "nodeType": "Block",
              "src": "706:164:27",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 8380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 8375,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "arguments": [
                          {
                            "id": 8369,
                            "name": "interfaceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8358,
                            "src": "759:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "id": 8367,
                            "name": "ERC721CreatorCore",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14289,
                            "src": "723:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ERC721CreatorCore_$14289_$",
                              "typeString": "type(contract ERC721CreatorCore)"
                            }
                          },
                          "id": 8368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "741:17:27",
                          "memberName": "supportsInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13923,
                          "src": "723:35:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (bytes4) view returns (bool)"
                          }
                        },
                        "id": 8370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "723:48:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "arguments": [
                          {
                            "id": 8373,
                            "name": "interfaceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8358,
                            "src": "804:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "id": 8371,
                            "name": "ERC721Core",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20641,
                            "src": "775:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ERC721Core_$20641_$",
                              "typeString": "type(contract ERC721Core)"
                            }
                          },
                          "id": 8372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "786:17:27",
                          "memberName": "supportsInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19882,
                          "src": "775:28:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (bytes4) view returns (bool)"
                          }
                        },
                        "id": 8374,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "775:41:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "723:93:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 8378,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8358,
                          "src": "851:11:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "id": 8376,
                          "name": "AdminControl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 185,
                          "src": "820:12:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AdminControl_$185_$",
                            "typeString": "type(contract AdminControl)"
                          }
                        },
                        "id": 8377,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "833:17:27",
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 42,
                        "src": "820:30:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) view returns (bool)"
                        }
                      },
                      "id": 8379,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "820:43:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "723:140:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8366,
                  "id": 8381,
                  "nodeType": "Return",
                  "src": "716:147:27"
                }
              ]
            },
            "documentation": {
              "id": 8356,
              "nodeType": "StructuredDocumentation",
              "src": "509:56:27",
              "text": " @dev See {IERC165-supportsInterface}."
            },
            "functionSelector": "01ffc9a7",
            "id": 8383,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "579:17:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8363,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 8360,
                  "name": "ERC721Core",
                  "nameLocations": [
                    "646:10:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 20641,
                  "src": "646:10:27"
                },
                {
                  "id": 8361,
                  "name": "ERC721CreatorCore",
                  "nameLocations": [
                    "658:17:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14289,
                  "src": "658:17:27"
                },
                {
                  "id": 8362,
                  "name": "AdminControl",
                  "nameLocations": [
                    "677:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 185,
                  "src": "677:12:27"
                }
              ],
              "src": "637:53:27"
            },
            "parameters": {
              "id": 8359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8358,
                  "mutability": "mutable",
                  "name": "interfaceId",
                  "nameLocation": "604:11:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8383,
                  "src": "597:18:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8357,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "597:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "596:20:27"
            },
            "returnParameters": {
              "id": 8366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8365,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8383,
                  "src": "700:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8364,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "700:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "699:6:27"
            },
            "scope": 9615,
            "src": "570:300:27",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              20627
            ],
            "body": {
              "id": 8405,
              "nodeType": "Block",
              "src": "988:66:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8396,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8385,
                        "src": "1015:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 8397,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8387,
                        "src": "1021:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 8398,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8389,
                        "src": "1025:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 8401,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8391,
                            "src": "1041:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 8400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1034:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint16_$",
                            "typeString": "type(uint16)"
                          },
                          "typeName": {
                            "id": 8399,
                            "name": "uint16",
                            "nodeType": "ElementaryTypeName",
                            "src": "1034:6:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1034:12:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 8395,
                      "name": "_approveTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        14142,
                        14171,
                        14239
                      ],
                      "referencedDeclaration": 14171,
                      "src": "998:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$returns$__$",
                        "typeString": "function (address,address,uint256,uint16)"
                      }
                    },
                    "id": 8403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "998:49:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8404,
                  "nodeType": "ExpressionStatement",
                  "src": "998:49:27"
                }
              ]
            },
            "id": 8406,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_beforeTokenTransfer",
            "nameLocation": "885:20:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8393,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "979:8:27"
            },
            "parameters": {
              "id": 8392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8385,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "914:4:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8406,
                  "src": "906:12:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8384,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "906:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8387,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "928:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8406,
                  "src": "920:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8386,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "920:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8389,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "940:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8406,
                  "src": "932:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8388,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "932:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8391,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "956:4:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8406,
                  "src": "949:11:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 8390,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "949:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "905:56:27"
            },
            "returnParameters": {
              "id": 8394,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "988:0:27"
            },
            "scope": 9615,
            "src": "876:178:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              14988
            ],
            "body": {
              "id": 8427,
              "nodeType": "Block",
              "src": "1229:102:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8418,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8409,
                        "src": "1259:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8417,
                      "name": "requireNonBlacklist",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12566,
                      "src": "1239:19:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                        "typeString": "function (address) view"
                      }
                    },
                    "id": 8419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1239:30:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8420,
                  "nodeType": "ExpressionStatement",
                  "src": "1239:30:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8422,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8409,
                        "src": "1298:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 8423,
                        "name": "baseURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8411,
                        "src": "1309:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 8424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1318:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8421,
                      "name": "_registerExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        14288
                      ],
                      "referencedDeclaration": 14288,
                      "src": "1279:18:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_calldata_ptr_$_t_bool_$returns$__$",
                        "typeString": "function (address,string calldata,bool)"
                      }
                    },
                    "id": 8425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1279:45:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8426,
                  "nodeType": "ExpressionStatement",
                  "src": "1279:45:27"
                }
              ]
            },
            "documentation": {
              "id": 8407,
              "nodeType": "StructuredDocumentation",
              "src": "1060:61:27",
              "text": " @dev See {ICreatorCore-registerExtension}."
            },
            "functionSelector": "3071a0f9",
            "id": 8428,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8415,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8414,
                  "name": "adminRequired",
                  "nameLocations": [
                    "1215:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "1215:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "1215:13:27"
              }
            ],
            "name": "registerExtension",
            "nameLocation": "1135:17:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8413,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1206:8:27"
            },
            "parameters": {
              "id": 8412,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8409,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "1161:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8428,
                  "src": "1153:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8408,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1153:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8411,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "1188:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8428,
                  "src": "1172:23:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8410,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1172:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1152:44:27"
            },
            "returnParameters": {
              "id": 8416,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1229:0:27"
            },
            "scope": 9615,
            "src": "1126:205:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14998
            ],
            "body": {
              "id": 8451,
              "nodeType": "Block",
              "src": "1529:113:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8442,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8431,
                        "src": "1559:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8441,
                      "name": "requireNonBlacklist",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12566,
                      "src": "1539:19:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                        "typeString": "function (address) view"
                      }
                    },
                    "id": 8443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1539:30:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8444,
                  "nodeType": "ExpressionStatement",
                  "src": "1539:30:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8446,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8431,
                        "src": "1598:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 8447,
                        "name": "baseURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8433,
                        "src": "1609:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "id": 8448,
                        "name": "baseURIIdentical",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8435,
                        "src": "1618:16:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8445,
                      "name": "_registerExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        14288
                      ],
                      "referencedDeclaration": 14288,
                      "src": "1579:18:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_calldata_ptr_$_t_bool_$returns$__$",
                        "typeString": "function (address,string calldata,bool)"
                      }
                    },
                    "id": 8449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1579:56:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8450,
                  "nodeType": "ExpressionStatement",
                  "src": "1579:56:27"
                }
              ]
            },
            "documentation": {
              "id": 8429,
              "nodeType": "StructuredDocumentation",
              "src": "1337:61:27",
              "text": " @dev See {ICreatorCore-registerExtension}."
            },
            "functionSelector": "3f0f37f6",
            "id": 8452,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8439,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8438,
                  "name": "adminRequired",
                  "nameLocations": [
                    "1515:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "1515:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "1515:13:27"
              }
            ],
            "name": "registerExtension",
            "nameLocation": "1412:17:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8437,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1506:8:27"
            },
            "parameters": {
              "id": 8436,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8431,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "1438:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8452,
                  "src": "1430:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8430,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1430:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8433,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "1465:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8452,
                  "src": "1449:23:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8432,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1449:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8435,
                  "mutability": "mutable",
                  "name": "baseURIIdentical",
                  "nameLocation": "1479:16:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8452,
                  "src": "1474:21:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8434,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1474:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1429:67:27"
            },
            "returnParameters": {
              "id": 8440,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1529:0:27"
            },
            "scope": 9615,
            "src": "1403:239:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15004
            ],
            "body": {
              "id": 8465,
              "nodeType": "Block",
              "src": "1797:48:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8462,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8455,
                        "src": "1828:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8461,
                      "name": "_unregisterExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12708,
                      "src": "1807:20:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 8463,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1807:31:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8464,
                  "nodeType": "ExpressionStatement",
                  "src": "1807:31:27"
                }
              ]
            },
            "documentation": {
              "id": 8453,
              "nodeType": "StructuredDocumentation",
              "src": "1649:63:27",
              "text": " @dev See {ICreatorCore-unregisterExtension}."
            },
            "functionSelector": "ce8aee9d",
            "id": 8466,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8459,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8458,
                  "name": "adminRequired",
                  "nameLocations": [
                    "1783:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "1783:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "1783:13:27"
              }
            ],
            "name": "unregisterExtension",
            "nameLocation": "1726:19:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8457,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1774:8:27"
            },
            "parameters": {
              "id": 8456,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8455,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "1754:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8466,
                  "src": "1746:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8454,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1746:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1745:19:27"
            },
            "returnParameters": {
              "id": 8460,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1797:0:27"
            },
            "scope": 9615,
            "src": "1717:128:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15010
            ],
            "body": {
              "id": 8479,
              "nodeType": "Block",
              "src": "1997:47:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8476,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8469,
                        "src": "2027:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8475,
                      "name": "_blacklistExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12769,
                      "src": "2007:19:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 8477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2007:30:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8478,
                  "nodeType": "ExpressionStatement",
                  "src": "2007:30:27"
                }
              ]
            },
            "documentation": {
              "id": 8467,
              "nodeType": "StructuredDocumentation",
              "src": "1851:62:27",
              "text": " @dev See {ICreatorCore-blacklistExtension}."
            },
            "functionSelector": "02e7afb7",
            "id": 8480,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8473,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8472,
                  "name": "adminRequired",
                  "nameLocations": [
                    "1983:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "1983:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "1983:13:27"
              }
            ],
            "name": "blacklistExtension",
            "nameLocation": "1927:18:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8471,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1974:8:27"
            },
            "parameters": {
              "id": 8470,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8469,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "1954:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8480,
                  "src": "1946:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8468,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1946:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1945:19:27"
            },
            "returnParameters": {
              "id": 8474,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1997:0:27"
            },
            "scope": 9615,
            "src": "1918:126:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15016
            ],
            "body": {
              "id": 8495,
              "nodeType": "Block",
              "src": "2196:82:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8487,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "2206:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 8488,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2206:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8489,
                  "nodeType": "ExpressionStatement",
                  "src": "2206:18:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8491,
                        "name": "uri",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8483,
                        "src": "2260:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 8492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2265:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8490,
                      "name": "_setBaseTokenURIExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12792,
                      "src": "2234:25:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$_t_bool_$returns$__$",
                        "typeString": "function (string calldata,bool)"
                      }
                    },
                    "id": 8493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2234:37:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8494,
                  "nodeType": "ExpressionStatement",
                  "src": "2234:37:27"
                }
              ]
            },
            "documentation": {
              "id": 8481,
              "nodeType": "StructuredDocumentation",
              "src": "2050:68:27",
              "text": " @dev See {ICreatorCore-setBaseTokenURIExtension}."
            },
            "functionSelector": "3e6134b8",
            "id": 8496,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setBaseTokenURIExtension",
            "nameLocation": "2132:24:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8485,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2187:8:27"
            },
            "parameters": {
              "id": 8484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8483,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "2173:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8496,
                  "src": "2157:19:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8482,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2157:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2156:21:27"
            },
            "returnParameters": {
              "id": 8486,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2196:0:27"
            },
            "scope": 9615,
            "src": "2123:155:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15024
            ],
            "body": {
              "id": 8513,
              "nodeType": "Block",
              "src": "2446:86:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8505,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "2456:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 8506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2456:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8507,
                  "nodeType": "ExpressionStatement",
                  "src": "2456:18:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8509,
                        "name": "uri",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8499,
                        "src": "2510:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "id": 8510,
                        "name": "identical",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8501,
                        "src": "2515:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8508,
                      "name": "_setBaseTokenURIExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12792,
                      "src": "2484:25:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$_t_bool_$returns$__$",
                        "typeString": "function (string calldata,bool)"
                      }
                    },
                    "id": 8511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2484:41:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8512,
                  "nodeType": "ExpressionStatement",
                  "src": "2484:41:27"
                }
              ]
            },
            "documentation": {
              "id": 8497,
              "nodeType": "StructuredDocumentation",
              "src": "2284:68:27",
              "text": " @dev See {ICreatorCore-setBaseTokenURIExtension}."
            },
            "functionSelector": "82dcc0c8",
            "id": 8514,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setBaseTokenURIExtension",
            "nameLocation": "2366:24:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8503,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2437:8:27"
            },
            "parameters": {
              "id": 8502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8499,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "2407:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8514,
                  "src": "2391:19:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8498,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2391:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8501,
                  "mutability": "mutable",
                  "name": "identical",
                  "nameLocation": "2417:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8514,
                  "src": "2412:14:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8500,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2412:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2390:37:27"
            },
            "returnParameters": {
              "id": 8504,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2446:0:27"
            },
            "scope": 9615,
            "src": "2357:175:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15030
            ],
            "body": {
              "id": 8528,
              "nodeType": "Block",
              "src": "2691:80:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8521,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "2701:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 8522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2701:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8523,
                  "nodeType": "ExpressionStatement",
                  "src": "2701:18:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8525,
                        "name": "prefix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8517,
                        "src": "2757:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 8524,
                      "name": "_setTokenURIPrefixExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12806,
                      "src": "2729:27:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$returns$__$",
                        "typeString": "function (string calldata)"
                      }
                    },
                    "id": 8526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2729:35:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8527,
                  "nodeType": "ExpressionStatement",
                  "src": "2729:35:27"
                }
              ]
            },
            "documentation": {
              "id": 8515,
              "nodeType": "StructuredDocumentation",
              "src": "2538:70:27",
              "text": " @dev See {ICreatorCore-setTokenURIPrefixExtension}."
            },
            "functionSelector": "66d1e9d0",
            "id": 8529,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setTokenURIPrefixExtension",
            "nameLocation": "2622:26:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8519,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2682:8:27"
            },
            "parameters": {
              "id": 8518,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8517,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "2665:6:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8529,
                  "src": "2649:22:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8516,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2649:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2648:24:27"
            },
            "returnParameters": {
              "id": 8520,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2691:0:27"
            },
            "scope": 9615,
            "src": "2613:158:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15038
            ],
            "body": {
              "id": 8546,
              "nodeType": "Block",
              "src": "2932:80:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8538,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "2942:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 8539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2942:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8540,
                  "nodeType": "ExpressionStatement",
                  "src": "2942:18:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8542,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8532,
                        "src": "2992:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 8543,
                        "name": "uri",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8534,
                        "src": "3001:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 8541,
                      "name": "_setTokenURIExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12831,
                      "src": "2970:21:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_calldata_ptr_$returns$__$",
                        "typeString": "function (uint256,string calldata)"
                      }
                    },
                    "id": 8544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2970:35:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8545,
                  "nodeType": "ExpressionStatement",
                  "src": "2970:35:27"
                }
              ]
            },
            "documentation": {
              "id": 8530,
              "nodeType": "StructuredDocumentation",
              "src": "2777:64:27",
              "text": " @dev See {ICreatorCore-setTokenURIExtension}."
            },
            "functionSelector": "e92a89f6",
            "id": 8547,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setTokenURIExtension",
            "nameLocation": "2855:20:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8536,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2923:8:27"
            },
            "parameters": {
              "id": 8535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8532,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "2884:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8547,
                  "src": "2876:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8531,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2876:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8534,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "2909:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8547,
                  "src": "2893:19:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8533,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2893:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2875:38:27"
            },
            "returnParameters": {
              "id": 8537,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2932:0:27"
            },
            "scope": 9615,
            "src": "2846:166:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15048
            ],
            "body": {
              "id": 8592,
              "nodeType": "Block",
              "src": "3188:244:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8558,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "3198:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 8559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3198:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8560,
                  "nodeType": "ExpressionStatement",
                  "src": "3198:18:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8566,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 8562,
                            "name": "tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8551,
                            "src": "3234:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 8563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3243:6:27",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3234:15:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 8564,
                            "name": "uris",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8554,
                            "src": "3253:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "string calldata[] calldata"
                            }
                          },
                          "id": 8565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3258:6:27",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3253:11:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3234:30:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e76616c696420696e707574",
                        "id": 8567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3266:15:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_af39b50065ba9648c753f781fa674704d13ce8309cf446a262799d7aceba8e5b",
                          "typeString": "literal_string \"Invalid input\""
                        },
                        "value": "Invalid input"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_af39b50065ba9648c753f781fa674704d13ce8309cf446a262799d7aceba8e5b",
                          "typeString": "literal_string \"Invalid input\""
                        }
                      ],
                      "id": 8561,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3226:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3226:56:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8569,
                  "nodeType": "ExpressionStatement",
                  "src": "3226:56:27"
                },
                {
                  "body": {
                    "id": 8590,
                    "nodeType": "Block",
                    "src": "3327:99:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 8578,
                                "name": "tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8551,
                                "src": "3363:8:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 8580,
                              "indexExpression": {
                                "id": 8579,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8571,
                                "src": "3372:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3363:11:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 8581,
                                "name": "uris",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8554,
                                "src": "3376:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "string calldata[] calldata"
                                }
                              },
                              "id": 8583,
                              "indexExpression": {
                                "id": 8582,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8571,
                                "src": "3381:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3376:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 8577,
                            "name": "_setTokenURIExtension",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12831,
                            "src": "3341:21:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_calldata_ptr_$returns$__$",
                              "typeString": "function (uint256,string calldata)"
                            }
                          },
                          "id": 8584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3341:43:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8585,
                        "nodeType": "ExpressionStatement",
                        "src": "3341:43:27"
                      },
                      {
                        "id": 8589,
                        "nodeType": "UncheckedBlock",
                        "src": "3398:18:27",
                        "statements": [
                          {
                            "expression": {
                              "id": 8587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "3410:3:27",
                              "subExpression": {
                                "id": 8586,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8571,
                                "src": "3412:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8588,
                            "nodeType": "ExpressionStatement",
                            "src": "3410:3:27"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 8573,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8571,
                      "src": "3305:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 8574,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8551,
                        "src": "3309:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 8575,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3318:6:27",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "3309:15:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3305:19:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8591,
                  "initializationExpression": {
                    "assignments": [
                      8571
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8571,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "3302:1:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 8591,
                        "src": "3297:6:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8570,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3297:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8572,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3297:6:27"
                  },
                  "nodeType": "ForStatement",
                  "src": "3292:134:27"
                }
              ]
            },
            "documentation": {
              "id": 8548,
              "nodeType": "StructuredDocumentation",
              "src": "3018:64:27",
              "text": " @dev See {ICreatorCore-setTokenURIExtension}."
            },
            "functionSelector": "61e5bc6b",
            "id": 8593,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setTokenURIExtension",
            "nameLocation": "3096:20:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8556,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3179:8:27"
            },
            "parameters": {
              "id": 8555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8551,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "3136:8:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8593,
                  "src": "3117:27:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8549,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3117:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8550,
                    "nodeType": "ArrayTypeName",
                    "src": "3117:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8554,
                  "mutability": "mutable",
                  "name": "uris",
                  "nameLocation": "3164:4:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8593,
                  "src": "3146:22:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8552,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "3146:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 8553,
                    "nodeType": "ArrayTypeName",
                    "src": "3146:8:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3116:53:27"
            },
            "returnParameters": {
              "id": 8557,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3188:0:27"
            },
            "scope": 9615,
            "src": "3087:345:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15054
            ],
            "body": {
              "id": 8606,
              "nodeType": "Block",
              "src": "3580:38:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8603,
                        "name": "uri",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8596,
                        "src": "3607:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 8602,
                      "name": "_setBaseTokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12847,
                      "src": "3590:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$returns$__$",
                        "typeString": "function (string calldata)"
                      }
                    },
                    "id": 8604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3590:21:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8605,
                  "nodeType": "ExpressionStatement",
                  "src": "3590:21:27"
                }
              ]
            },
            "documentation": {
              "id": 8594,
              "nodeType": "StructuredDocumentation",
              "src": "3438:59:27",
              "text": " @dev See {ICreatorCore-setBaseTokenURI}."
            },
            "functionSelector": "30176e13",
            "id": 8607,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8600,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8599,
                  "name": "adminRequired",
                  "nameLocations": [
                    "3566:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "3566:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "3566:13:27"
              }
            ],
            "name": "setBaseTokenURI",
            "nameLocation": "3511:15:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8598,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3557:8:27"
            },
            "parameters": {
              "id": 8597,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8596,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "3543:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8607,
                  "src": "3527:19:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8595,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3527:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3526:21:27"
            },
            "returnParameters": {
              "id": 8601,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3580:0:27"
            },
            "scope": 9615,
            "src": "3502:116:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15060
            ],
            "body": {
              "id": 8620,
              "nodeType": "Block",
              "src": "3773:43:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8617,
                        "name": "prefix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8610,
                        "src": "3802:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 8616,
                      "name": "_setTokenURIPrefix",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12863,
                      "src": "3783:18:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$returns$__$",
                        "typeString": "function (string calldata)"
                      }
                    },
                    "id": 8618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3783:26:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8619,
                  "nodeType": "ExpressionStatement",
                  "src": "3783:26:27"
                }
              ]
            },
            "documentation": {
              "id": 8608,
              "nodeType": "StructuredDocumentation",
              "src": "3624:61:27",
              "text": " @dev See {ICreatorCore-setTokenURIPrefix}."
            },
            "functionSelector": "99e0dd7c",
            "id": 8621,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8614,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8613,
                  "name": "adminRequired",
                  "nameLocations": [
                    "3759:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "3759:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "3759:13:27"
              }
            ],
            "name": "setTokenURIPrefix",
            "nameLocation": "3699:17:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8612,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3750:8:27"
            },
            "parameters": {
              "id": 8611,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8610,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "3733:6:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8621,
                  "src": "3717:22:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8609,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3717:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3716:24:27"
            },
            "returnParameters": {
              "id": 8615,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3773:0:27"
            },
            "scope": 9615,
            "src": "3690:126:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15068
            ],
            "body": {
              "id": 8637,
              "nodeType": "Block",
              "src": "3973:43:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8633,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8624,
                        "src": "3996:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 8634,
                        "name": "uri",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8626,
                        "src": "4005:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 8632,
                      "name": "_setTokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12898,
                      "src": "3983:12:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_calldata_ptr_$returns$__$",
                        "typeString": "function (uint256,string calldata)"
                      }
                    },
                    "id": 8635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3983:26:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8636,
                  "nodeType": "ExpressionStatement",
                  "src": "3983:26:27"
                }
              ]
            },
            "documentation": {
              "id": 8622,
              "nodeType": "StructuredDocumentation",
              "src": "3822:55:27",
              "text": " @dev See {ICreatorCore-setTokenURI}."
            },
            "functionSelector": "162094c4",
            "id": 8638,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8630,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8629,
                  "name": "adminRequired",
                  "nameLocations": [
                    "3959:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "3959:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "3959:13:27"
              }
            ],
            "name": "setTokenURI",
            "nameLocation": "3891:11:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8628,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3950:8:27"
            },
            "parameters": {
              "id": 8627,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8624,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3911:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8638,
                  "src": "3903:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8623,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3903:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8626,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "3936:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8638,
                  "src": "3920:19:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8625,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3920:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3902:38:27"
            },
            "returnParameters": {
              "id": 8631,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3973:0:27"
            },
            "scope": 9615,
            "src": "3882:134:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15078
            ],
            "body": {
              "id": 8682,
              "nodeType": "Block",
              "src": "4188:207:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 8652,
                            "name": "tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8642,
                            "src": "4206:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 8653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4215:6:27",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4206:15:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 8654,
                            "name": "uris",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8645,
                            "src": "4225:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "string calldata[] calldata"
                            }
                          },
                          "id": 8655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4230:6:27",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4225:11:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4206:30:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e76616c696420696e707574",
                        "id": 8657,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4238:15:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_af39b50065ba9648c753f781fa674704d13ce8309cf446a262799d7aceba8e5b",
                          "typeString": "literal_string \"Invalid input\""
                        },
                        "value": "Invalid input"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_af39b50065ba9648c753f781fa674704d13ce8309cf446a262799d7aceba8e5b",
                          "typeString": "literal_string \"Invalid input\""
                        }
                      ],
                      "id": 8651,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4198:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4198:56:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8659,
                  "nodeType": "ExpressionStatement",
                  "src": "4198:56:27"
                },
                {
                  "body": {
                    "id": 8680,
                    "nodeType": "Block",
                    "src": "4299:90:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 8668,
                                "name": "tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8642,
                                "src": "4326:8:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 8670,
                              "indexExpression": {
                                "id": 8669,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8661,
                                "src": "4335:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4326:11:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 8671,
                                "name": "uris",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8645,
                                "src": "4339:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "string calldata[] calldata"
                                }
                              },
                              "id": 8673,
                              "indexExpression": {
                                "id": 8672,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8661,
                                "src": "4344:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4339:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 8667,
                            "name": "_setTokenURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12898,
                            "src": "4313:12:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_calldata_ptr_$returns$__$",
                              "typeString": "function (uint256,string calldata)"
                            }
                          },
                          "id": 8674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4313:34:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8675,
                        "nodeType": "ExpressionStatement",
                        "src": "4313:34:27"
                      },
                      {
                        "id": 8679,
                        "nodeType": "UncheckedBlock",
                        "src": "4361:18:27",
                        "statements": [
                          {
                            "expression": {
                              "id": 8677,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "4373:3:27",
                              "subExpression": {
                                "id": 8676,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8661,
                                "src": "4375:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8678,
                            "nodeType": "ExpressionStatement",
                            "src": "4373:3:27"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 8663,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8661,
                      "src": "4277:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 8664,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8642,
                        "src": "4281:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 8665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4290:6:27",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "4281:15:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4277:19:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8681,
                  "initializationExpression": {
                    "assignments": [
                      8661
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8661,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "4274:1:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "4269:6:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8660,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4269:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8662,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4269:6:27"
                  },
                  "nodeType": "ForStatement",
                  "src": "4264:125:27"
                }
              ]
            },
            "documentation": {
              "id": 8639,
              "nodeType": "StructuredDocumentation",
              "src": "4022:55:27",
              "text": " @dev See {ICreatorCore-setTokenURI}."
            },
            "functionSelector": "aafb2d44",
            "id": 8683,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8649,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8648,
                  "name": "adminRequired",
                  "nameLocations": [
                    "4174:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "4174:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "4174:13:27"
              }
            ],
            "name": "setTokenURI",
            "nameLocation": "4091:11:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8647,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4165:8:27"
            },
            "parameters": {
              "id": 8646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8642,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "4122:8:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8683,
                  "src": "4103:27:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8640,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4103:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8641,
                    "nodeType": "ArrayTypeName",
                    "src": "4103:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8645,
                  "mutability": "mutable",
                  "name": "uris",
                  "nameLocation": "4150:4:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8683,
                  "src": "4132:22:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8643,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "4132:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 8644,
                    "nodeType": "ArrayTypeName",
                    "src": "4132:8:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4102:53:27"
            },
            "returnParameters": {
              "id": 8650,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4188:0:27"
            },
            "scope": 9615,
            "src": "4082:313:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15086
            ],
            "body": {
              "id": 8699,
              "nodeType": "Block",
              "src": "4568:60:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8695,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8686,
                        "src": "4598:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 8696,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8688,
                        "src": "4609:11:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8694,
                      "name": "_setMintPermissions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14010,
                      "src": "4578:19:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 8697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4578:43:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8698,
                  "nodeType": "ExpressionStatement",
                  "src": "4578:43:27"
                }
              ]
            },
            "documentation": {
              "id": 8684,
              "nodeType": "StructuredDocumentation",
              "src": "4401:62:27",
              "text": " @dev See {ICreatorCore-setMintPermissions}."
            },
            "functionSelector": "f0cdc499",
            "id": 8700,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8692,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8691,
                  "name": "adminRequired",
                  "nameLocations": [
                    "4554:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "4554:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "4554:13:27"
              }
            ],
            "name": "setMintPermissions",
            "nameLocation": "4477:18:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8690,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4545:8:27"
            },
            "parameters": {
              "id": 8689,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8686,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "4504:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8700,
                  "src": "4496:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8685,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4496:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8688,
                  "mutability": "mutable",
                  "name": "permissions",
                  "nameLocation": "4523:11:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8700,
                  "src": "4515:19:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8687,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4515:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4495:40:27"
            },
            "returnParameters": {
              "id": 8693,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4568:0:27"
            },
            "scope": 9615,
            "src": "4468:160:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15296
            ],
            "body": {
              "id": 8719,
              "nodeType": "Block",
              "src": "4795:44:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8714,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8703,
                        "src": "4822:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 8715,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4826:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "hexValue": "30",
                        "id": 8716,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4830:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 8713,
                      "name": "_mintBase",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8919,
                      "src": "4812:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,string memory,uint256) returns (uint256)"
                      }
                    },
                    "id": 8717,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4812:20:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8712,
                  "id": 8718,
                  "nodeType": "Return",
                  "src": "4805:27:27"
                }
              ]
            },
            "documentation": {
              "id": 8701,
              "nodeType": "StructuredDocumentation",
              "src": "4634:58:27",
              "text": " @dev See {IERC721CreatorCore-mintBase}."
            },
            "functionSelector": "72ff03d3",
            "id": 8720,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8707,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8706,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "4751:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "4751:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "4751:12:27"
              },
              {
                "id": 8709,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8708,
                  "name": "adminRequired",
                  "nameLocations": [
                    "4764:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "4764:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "4764:13:27"
              }
            ],
            "name": "mintBase",
            "nameLocation": "4706:8:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8705,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4742:8:27"
            },
            "parameters": {
              "id": 8704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8703,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "4723:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8720,
                  "src": "4715:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8702,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4715:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4714:12:27"
            },
            "returnParameters": {
              "id": 8712,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8711,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8720,
                  "src": "4786:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8710,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4786:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4785:9:27"
            },
            "scope": 9615,
            "src": "4697:142:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15306
            ],
            "body": {
              "id": 8741,
              "nodeType": "Block",
              "src": "5027:45:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8736,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8723,
                        "src": "5054:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 8737,
                        "name": "uri",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8725,
                        "src": "5058:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 8738,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5063:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 8735,
                      "name": "_mintBase",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8919,
                      "src": "5044:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,string memory,uint256) returns (uint256)"
                      }
                    },
                    "id": 8739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5044:21:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8734,
                  "id": 8740,
                  "nodeType": "Return",
                  "src": "5037:28:27"
                }
              ]
            },
            "documentation": {
              "id": 8721,
              "nodeType": "StructuredDocumentation",
              "src": "4845:58:27",
              "text": " @dev See {IERC721CreatorCore-mintBase}."
            },
            "functionSelector": "7884af44",
            "id": 8742,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8729,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8728,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "4983:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "4983:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "4983:12:27"
              },
              {
                "id": 8731,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8730,
                  "name": "adminRequired",
                  "nameLocations": [
                    "4996:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "4996:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "4996:13:27"
              }
            ],
            "name": "mintBase",
            "nameLocation": "4917:8:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8727,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4974:8:27"
            },
            "parameters": {
              "id": 8726,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8723,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "4934:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8742,
                  "src": "4926:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8722,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4926:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8725,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "4954:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8742,
                  "src": "4938:19:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8724,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4938:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4925:33:27"
            },
            "returnParameters": {
              "id": 8734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8733,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8742,
                  "src": "5018:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5018:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5017:9:27"
            },
            "scope": 9615,
            "src": "4908:164:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15317
            ],
            "body": {
              "id": 8800,
              "nodeType": "Block",
              "src": "5281:262:27",
              "statements": [
                {
                  "expression": {
                    "id": 8764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 8758,
                      "name": "tokenIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8756,
                      "src": "5291:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 8762,
                          "name": "count",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8747,
                          "src": "5316:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        ],
                        "id": 8761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "5302:13:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8759,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5306:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8760,
                          "nodeType": "ArrayTypeName",
                          "src": "5306:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        }
                      },
                      "id": 8763,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5302:20:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "5291:31:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "id": 8765,
                  "nodeType": "ExpressionStatement",
                  "src": "5291:31:27"
                },
                {
                  "assignments": [
                    8767
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8767,
                      "mutability": "mutable",
                      "name": "firstTokenId",
                      "nameLocation": "5340:12:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 8800,
                      "src": "5332:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8766,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5332:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8771,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8770,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 8768,
                      "name": "_tokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12432,
                      "src": "5355:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 8769,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5367:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5355:13:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5332:36:27"
                },
                {
                  "expression": {
                    "id": 8774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 8772,
                      "name": "_tokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12432,
                      "src": "5378:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 8773,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8747,
                      "src": "5393:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "5378:20:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 8775,
                  "nodeType": "ExpressionStatement",
                  "src": "5378:20:27"
                },
                {
                  "body": {
                    "id": 8798,
                    "nodeType": "Block",
                    "src": "5434:103:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 8792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 8782,
                              "name": "tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8756,
                              "src": "5448:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 8784,
                            "indexExpression": {
                              "id": 8783,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8777,
                              "src": "5457:1:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5448:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8786,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8745,
                                "src": "5472:2:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "hexValue": "",
                                "id": 8787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5476:2:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8790,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8788,
                                  "name": "firstTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8767,
                                  "src": "5480:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 8789,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8777,
                                  "src": "5493:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5480:14:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8785,
                              "name": "_mintBase",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8919,
                              "src": "5462:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,string memory,uint256) returns (uint256)"
                              }
                            },
                            "id": 8791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5462:33:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5448:47:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8793,
                        "nodeType": "ExpressionStatement",
                        "src": "5448:47:27"
                      },
                      {
                        "id": 8797,
                        "nodeType": "UncheckedBlock",
                        "src": "5509:18:27",
                        "statements": [
                          {
                            "expression": {
                              "id": 8795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "5521:3:27",
                              "subExpression": {
                                "id": 8794,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8777,
                                "src": "5523:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8796,
                            "nodeType": "ExpressionStatement",
                            "src": "5521:3:27"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 8779,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8777,
                      "src": "5422:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 8780,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8747,
                      "src": "5426:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "5422:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8799,
                  "initializationExpression": {
                    "assignments": [
                      8777
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8777,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "5419:1:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 8799,
                        "src": "5414:6:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8776,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5414:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8778,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5414:6:27"
                  },
                  "nodeType": "ForStatement",
                  "src": "5409:128:27"
                }
              ]
            },
            "documentation": {
              "id": 8743,
              "nodeType": "StructuredDocumentation",
              "src": "5078:63:27",
              "text": " @dev See {IERC721CreatorCore-mintBaseBatch}."
            },
            "functionSelector": "ad2d0ddd",
            "id": 8801,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8751,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8750,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "5219:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "5219:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "5219:12:27"
              },
              {
                "id": 8753,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8752,
                  "name": "adminRequired",
                  "nameLocations": [
                    "5232:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "5232:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "5232:13:27"
              }
            ],
            "name": "mintBaseBatch",
            "nameLocation": "5155:13:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8749,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5210:8:27"
            },
            "parameters": {
              "id": 8748,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8745,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "5177:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8801,
                  "src": "5169:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8744,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5169:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8747,
                  "mutability": "mutable",
                  "name": "count",
                  "nameLocation": "5188:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8801,
                  "src": "5181:12:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 8746,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "5181:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5168:26:27"
            },
            "returnParameters": {
              "id": 8757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8756,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "5271:8:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8801,
                  "src": "5254:25:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8754,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5254:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8755,
                    "nodeType": "ArrayTypeName",
                    "src": "5254:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5253:27:27"
            },
            "scope": 9615,
            "src": "5146:397:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15329
            ],
            "body": {
              "id": 8865,
              "nodeType": "Block",
              "src": "5762:285:27",
              "statements": [
                {
                  "expression": {
                    "id": 8825,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 8818,
                      "name": "tokenIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8816,
                      "src": "5772:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 8822,
                            "name": "uris",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8807,
                            "src": "5797:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "string calldata[] calldata"
                            }
                          },
                          "id": 8823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5802:6:27",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "5797:11:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 8821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "5783:13:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8819,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5787:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8820,
                          "nodeType": "ArrayTypeName",
                          "src": "5787:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        }
                      },
                      "id": 8824,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5783:26:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "5772:37:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "id": 8826,
                  "nodeType": "ExpressionStatement",
                  "src": "5772:37:27"
                },
                {
                  "assignments": [
                    8828
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8828,
                      "mutability": "mutable",
                      "name": "firstTokenId",
                      "nameLocation": "5827:12:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 8865,
                      "src": "5819:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8827,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5819:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8832,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 8829,
                      "name": "_tokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12432,
                      "src": "5842:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 8830,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5854:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5842:13:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5819:36:27"
                },
                {
                  "expression": {
                    "id": 8836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 8833,
                      "name": "_tokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12432,
                      "src": "5865:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "expression": {
                        "id": 8834,
                        "name": "uris",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8807,
                        "src": "5880:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      },
                      "id": 8835,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5885:6:27",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "5880:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5865:26:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 8837,
                  "nodeType": "ExpressionStatement",
                  "src": "5865:26:27"
                },
                {
                  "body": {
                    "id": 8863,
                    "nodeType": "Block",
                    "src": "5933:108:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 8857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 8845,
                              "name": "tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8816,
                              "src": "5947:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 8847,
                            "indexExpression": {
                              "id": 8846,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8839,
                              "src": "5956:1:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5947:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8849,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8804,
                                "src": "5971:2:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 8850,
                                  "name": "uris",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8807,
                                  "src": "5975:4:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "string calldata[] calldata"
                                  }
                                },
                                "id": 8852,
                                "indexExpression": {
                                  "id": 8851,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8839,
                                  "src": "5980:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5975:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8853,
                                  "name": "firstTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8828,
                                  "src": "5984:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 8854,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8839,
                                  "src": "5997:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5984:14:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8848,
                              "name": "_mintBase",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8919,
                              "src": "5961:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,string memory,uint256) returns (uint256)"
                              }
                            },
                            "id": 8856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5961:38:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5947:52:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8858,
                        "nodeType": "ExpressionStatement",
                        "src": "5947:52:27"
                      },
                      {
                        "id": 8862,
                        "nodeType": "UncheckedBlock",
                        "src": "6013:18:27",
                        "statements": [
                          {
                            "expression": {
                              "id": 8860,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "6025:3:27",
                              "subExpression": {
                                "id": 8859,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8839,
                                "src": "6027:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8861,
                            "nodeType": "ExpressionStatement",
                            "src": "6025:3:27"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 8841,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8839,
                      "src": "5915:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 8842,
                        "name": "uris",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8807,
                        "src": "5919:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      },
                      "id": 8843,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5924:6:27",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "5919:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5915:15:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8864,
                  "initializationExpression": {
                    "assignments": [
                      8839
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8839,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "5912:1:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 8864,
                        "src": "5907:6:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8838,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5907:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8840,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5907:6:27"
                  },
                  "nodeType": "ForStatement",
                  "src": "5902:139:27"
                }
              ]
            },
            "documentation": {
              "id": 8802,
              "nodeType": "StructuredDocumentation",
              "src": "5549:63:27",
              "text": " @dev See {IERC721CreatorCore-mintBaseBatch}."
            },
            "functionSelector": "7aa15f16",
            "id": 8866,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8811,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8810,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "5700:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "5700:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "5700:12:27"
              },
              {
                "id": 8813,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8812,
                  "name": "adminRequired",
                  "nameLocations": [
                    "5713:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "5713:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "5713:13:27"
              }
            ],
            "name": "mintBaseBatch",
            "nameLocation": "5626:13:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8809,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5691:8:27"
            },
            "parameters": {
              "id": 8808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8804,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "5648:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8866,
                  "src": "5640:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5640:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8807,
                  "mutability": "mutable",
                  "name": "uris",
                  "nameLocation": "5670:4:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8866,
                  "src": "5652:22:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8805,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "5652:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 8806,
                    "nodeType": "ArrayTypeName",
                    "src": "5652:8:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5639:36:27"
            },
            "returnParameters": {
              "id": 8817,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8816,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "5752:8:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8866,
                  "src": "5735:25:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8814,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5735:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8815,
                    "nodeType": "ArrayTypeName",
                    "src": "5735:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5734:27:27"
            },
            "scope": 9615,
            "src": "5617:430:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8918,
              "nodeType": "Block",
              "src": "6211:316:27",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 8878,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8873,
                      "src": "6225:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 8879,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6236:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6225:12:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8889,
                  "nodeType": "IfStatement",
                  "src": "6221:91:27",
                  "trueBody": {
                    "id": 8888,
                    "nodeType": "Block",
                    "src": "6239:73:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 8882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "6253:13:27",
                          "subExpression": {
                            "id": 8881,
                            "name": "_tokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12432,
                            "src": "6255:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8883,
                        "nodeType": "ExpressionStatement",
                        "src": "6253:13:27"
                      },
                      {
                        "expression": {
                          "id": 8886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8884,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8873,
                            "src": "6280:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8885,
                            "name": "_tokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12432,
                            "src": "6290:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6280:21:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8887,
                        "nodeType": "ExpressionStatement",
                        "src": "6280:21:27"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8891,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8869,
                        "src": "6360:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 8892,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8873,
                        "src": "6364:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8890,
                      "name": "_preMintBase",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14052,
                      "src": "6347:12:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 8893,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6347:25:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8894,
                  "nodeType": "ExpressionStatement",
                  "src": "6347:25:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8896,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8869,
                        "src": "6393:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 8897,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8873,
                        "src": "6397:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 8898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6406:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 8895,
                      "name": "_safeMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20227,
                        20316
                      ],
                      "referencedDeclaration": 20227,
                      "src": "6383:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                        "typeString": "function (address,uint256,uint96)"
                      }
                    },
                    "id": 8899,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6383:25:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8900,
                  "nodeType": "ExpressionStatement",
                  "src": "6383:25:27"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "arguments": [
                          {
                            "id": 8903,
                            "name": "uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8871,
                            "src": "6429:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 8902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6423:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": {
                            "id": 8901,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "6423:5:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6423:10:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 8905,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6434:6:27",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6423:17:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 8906,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6443:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6423:21:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8915,
                  "nodeType": "IfStatement",
                  "src": "6419:77:27",
                  "trueBody": {
                    "id": 8914,
                    "nodeType": "Block",
                    "src": "6446:50:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 8912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 8908,
                              "name": "_tokenURIs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12456,
                              "src": "6460:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                "typeString": "mapping(uint256 => string storage ref)"
                              }
                            },
                            "id": 8910,
                            "indexExpression": {
                              "id": 8909,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8873,
                              "src": "6471:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6460:19:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8911,
                            "name": "uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8871,
                            "src": "6482:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "6460:25:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 8913,
                        "nodeType": "ExpressionStatement",
                        "src": "6460:25:27"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 8916,
                    "name": "tokenId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8873,
                    "src": "6513:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8877,
                  "id": 8917,
                  "nodeType": "Return",
                  "src": "6506:14:27"
                }
              ]
            },
            "documentation": {
              "id": 8867,
              "nodeType": "StructuredDocumentation",
              "src": "6053:52:27",
              "text": " @dev Mint token with no extension"
            },
            "id": 8919,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mintBase",
            "nameLocation": "6119:9:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8874,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8869,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "6137:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8919,
                  "src": "6129:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8868,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6129:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8871,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "6155:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8919,
                  "src": "6141:17:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8870,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6141:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8873,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "6168:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8919,
                  "src": "6160:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8872,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6160:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6128:48:27"
            },
            "returnParameters": {
              "id": 8877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8876,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8919,
                  "src": "6202:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8875,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6202:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6201:9:27"
            },
            "scope": 9615,
            "src": "6110:417:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              15337
            ],
            "body": {
              "id": 8940,
              "nodeType": "Block",
              "src": "6690:80:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8930,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "6700:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 8931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6700:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8932,
                  "nodeType": "ExpressionStatement",
                  "src": "6700:18:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8934,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8922,
                        "src": "6750:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 8935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6754:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "hexValue": "30",
                        "id": 8936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6758:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "hexValue": "30",
                        "id": 8937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6761:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 8933,
                      "name": "_mintExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9251,
                      "src": "6735:14:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint80_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,string memory,uint80,uint256) returns (uint256)"
                      }
                    },
                    "id": 8938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6735:28:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8929,
                  "id": 8939,
                  "nodeType": "Return",
                  "src": "6728:35:27"
                }
              ]
            },
            "documentation": {
              "id": 8920,
              "nodeType": "StructuredDocumentation",
              "src": "6533:63:27",
              "text": " @dev See {IERC721CreatorCore-mintExtension}."
            },
            "functionSelector": "2928ca58",
            "id": 8941,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8926,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8925,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "6660:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "6660:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "6660:12:27"
              }
            ],
            "name": "mintExtension",
            "nameLocation": "6610:13:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8924,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6651:8:27"
            },
            "parameters": {
              "id": 8923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8922,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "6632:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8941,
                  "src": "6624:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8921,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6624:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6623:12:27"
            },
            "returnParameters": {
              "id": 8929,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8928,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8941,
                  "src": "6681:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8927,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6681:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6680:9:27"
            },
            "scope": 9615,
            "src": "6601:169:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15347
            ],
            "body": {
              "id": 8964,
              "nodeType": "Block",
              "src": "6954:81:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8954,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "6964:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 8955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6964:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8956,
                  "nodeType": "ExpressionStatement",
                  "src": "6964:18:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8958,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8944,
                        "src": "7014:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 8959,
                        "name": "uri",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8946,
                        "src": "7018:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 8960,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7023:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "hexValue": "30",
                        "id": 8961,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7026:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 8957,
                      "name": "_mintExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9251,
                      "src": "6999:14:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint80_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,string memory,uint80,uint256) returns (uint256)"
                      }
                    },
                    "id": 8962,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6999:29:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8953,
                  "id": 8963,
                  "nodeType": "Return",
                  "src": "6992:36:27"
                }
              ]
            },
            "documentation": {
              "id": 8942,
              "nodeType": "StructuredDocumentation",
              "src": "6776:63:27",
              "text": " @dev See {IERC721CreatorCore-mintExtension}."
            },
            "functionSelector": "fe2e1f58",
            "id": 8965,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8950,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8949,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "6924:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "6924:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "6924:12:27"
              }
            ],
            "name": "mintExtension",
            "nameLocation": "6853:13:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8948,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6915:8:27"
            },
            "parameters": {
              "id": 8947,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8944,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "6875:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8965,
                  "src": "6867:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8943,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6867:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8946,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "6895:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8965,
                  "src": "6879:19:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8945,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6879:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6866:33:27"
            },
            "returnParameters": {
              "id": 8953,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8952,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8965,
                  "src": "6945:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8951,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6945:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6944:9:27"
            },
            "scope": 9615,
            "src": "6844:191:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15357
            ],
            "body": {
              "id": 8988,
              "nodeType": "Block",
              "src": "7211:83:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8978,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "7221:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 8979,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7221:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8980,
                  "nodeType": "ExpressionStatement",
                  "src": "7221:18:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8982,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8968,
                        "src": "7271:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 8983,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7275:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "id": 8984,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8970,
                        "src": "7279:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 8985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7285:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 8981,
                      "name": "_mintExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9251,
                      "src": "7256:14:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint80_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,string memory,uint80,uint256) returns (uint256)"
                      }
                    },
                    "id": 8986,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7256:31:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8977,
                  "id": 8987,
                  "nodeType": "Return",
                  "src": "7249:38:27"
                }
              ]
            },
            "documentation": {
              "id": 8966,
              "nodeType": "StructuredDocumentation",
              "src": "7041:63:27",
              "text": " @dev See {IERC721CreatorCore-mintExtension}."
            },
            "functionSelector": "d3973719",
            "id": 8989,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8974,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8973,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "7181:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "7181:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "7181:12:27"
              }
            ],
            "name": "mintExtension",
            "nameLocation": "7118:13:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8972,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7172:8:27"
            },
            "parameters": {
              "id": 8971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8968,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "7140:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8989,
                  "src": "7132:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7132:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8970,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "7151:4:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 8989,
                  "src": "7144:11:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint80",
                    "typeString": "uint80"
                  },
                  "typeName": {
                    "id": 8969,
                    "name": "uint80",
                    "nodeType": "ElementaryTypeName",
                    "src": "7144:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint80",
                      "typeString": "uint80"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7131:25:27"
            },
            "returnParameters": {
              "id": 8977,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8976,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8989,
                  "src": "7202:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8975,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7202:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7201:9:27"
            },
            "scope": 9615,
            "src": "7109:185:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15368
            ],
            "body": {
              "id": 9049,
              "nodeType": "Block",
              "src": "7499:298:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9003,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "7509:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 9004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7509:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9005,
                  "nodeType": "ExpressionStatement",
                  "src": "7509:18:27"
                },
                {
                  "expression": {
                    "id": 9012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 9006,
                      "name": "tokenIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9001,
                      "src": "7537:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 9010,
                          "name": "count",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8994,
                          "src": "7562:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        ],
                        "id": 9009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "7548:13:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9007,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7552:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9008,
                          "nodeType": "ArrayTypeName",
                          "src": "7552:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        }
                      },
                      "id": 9011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7548:20:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "7537:31:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "id": 9013,
                  "nodeType": "ExpressionStatement",
                  "src": "7537:31:27"
                },
                {
                  "assignments": [
                    9015
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9015,
                      "mutability": "mutable",
                      "name": "firstTokenId",
                      "nameLocation": "7586:12:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 9049,
                      "src": "7578:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9014,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7578:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9019,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9016,
                      "name": "_tokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12432,
                      "src": "7601:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 9017,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7613:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "7601:13:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7578:36:27"
                },
                {
                  "expression": {
                    "id": 9022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 9020,
                      "name": "_tokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12432,
                      "src": "7624:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 9021,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8994,
                      "src": "7639:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "7624:20:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9023,
                  "nodeType": "ExpressionStatement",
                  "src": "7624:20:27"
                },
                {
                  "body": {
                    "id": 9047,
                    "nodeType": "Block",
                    "src": "7680:111:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 9041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9030,
                              "name": "tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9001,
                              "src": "7694:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 9032,
                            "indexExpression": {
                              "id": 9031,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9025,
                              "src": "7703:1:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7694:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9034,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8992,
                                "src": "7723:2:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "hexValue": "",
                                "id": 9035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7727:2:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              {
                                "hexValue": "30",
                                "id": 9036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7731:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9037,
                                  "name": "firstTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9015,
                                  "src": "7734:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 9038,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9025,
                                  "src": "7747:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7734:14:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9033,
                              "name": "_mintExtension",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9251,
                              "src": "7708:14:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint80_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,string memory,uint80,uint256) returns (uint256)"
                              }
                            },
                            "id": 9040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7708:41:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7694:55:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9042,
                        "nodeType": "ExpressionStatement",
                        "src": "7694:55:27"
                      },
                      {
                        "id": 9046,
                        "nodeType": "UncheckedBlock",
                        "src": "7763:18:27",
                        "statements": [
                          {
                            "expression": {
                              "id": 9044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "7775:3:27",
                              "subExpression": {
                                "id": 9043,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9025,
                                "src": "7777:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9045,
                            "nodeType": "ExpressionStatement",
                            "src": "7775:3:27"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9027,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9025,
                      "src": "7668:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 9028,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8994,
                      "src": "7672:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "7668:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9048,
                  "initializationExpression": {
                    "assignments": [
                      9025
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9025,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "7665:1:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 9048,
                        "src": "7660:6:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9024,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7660:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9026,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7660:6:27"
                  },
                  "nodeType": "ForStatement",
                  "src": "7655:136:27"
                }
              ]
            },
            "documentation": {
              "id": 8990,
              "nodeType": "StructuredDocumentation",
              "src": "7300:68:27",
              "text": " @dev See {IERC721CreatorCore-mintExtensionBatch}."
            },
            "functionSelector": "e00aab4b",
            "id": 9050,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 8998,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 8997,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "7451:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "7451:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "7451:12:27"
              }
            ],
            "name": "mintExtensionBatch",
            "nameLocation": "7382:18:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8996,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7442:8:27"
            },
            "parameters": {
              "id": 8995,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8992,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "7409:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9050,
                  "src": "7401:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8991,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7401:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8994,
                  "mutability": "mutable",
                  "name": "count",
                  "nameLocation": "7420:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9050,
                  "src": "7413:12:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 8993,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "7413:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7400:26:27"
            },
            "returnParameters": {
              "id": 9002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9001,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "7489:8:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9050,
                  "src": "7472:25:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8999,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "7472:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9000,
                    "nodeType": "ArrayTypeName",
                    "src": "7472:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7471:27:27"
            },
            "scope": 9615,
            "src": "7373:424:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15380
            ],
            "body": {
              "id": 9116,
              "nodeType": "Block",
              "src": "8012:321:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9065,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "8022:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 9066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8022:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9067,
                  "nodeType": "ExpressionStatement",
                  "src": "8022:18:27"
                },
                {
                  "expression": {
                    "id": 9075,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 9068,
                      "name": "tokenIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9063,
                      "src": "8050:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 9072,
                            "name": "uris",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9056,
                            "src": "8075:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "string calldata[] calldata"
                            }
                          },
                          "id": 9073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8080:6:27",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "8075:11:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 9071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "8061:13:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9069,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8065:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9070,
                          "nodeType": "ArrayTypeName",
                          "src": "8065:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        }
                      },
                      "id": 9074,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8061:26:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "8050:37:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "id": 9076,
                  "nodeType": "ExpressionStatement",
                  "src": "8050:37:27"
                },
                {
                  "assignments": [
                    9078
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9078,
                      "mutability": "mutable",
                      "name": "firstTokenId",
                      "nameLocation": "8105:12:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 9116,
                      "src": "8097:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9077,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8097:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9082,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9079,
                      "name": "_tokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12432,
                      "src": "8120:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 9080,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8132:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "8120:13:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8097:36:27"
                },
                {
                  "expression": {
                    "id": 9086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 9083,
                      "name": "_tokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12432,
                      "src": "8143:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "expression": {
                        "id": 9084,
                        "name": "uris",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9056,
                        "src": "8158:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      },
                      "id": 9085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8163:6:27",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "8158:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8143:26:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9087,
                  "nodeType": "ExpressionStatement",
                  "src": "8143:26:27"
                },
                {
                  "body": {
                    "id": 9114,
                    "nodeType": "Block",
                    "src": "8211:116:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 9108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9095,
                              "name": "tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9063,
                              "src": "8225:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 9097,
                            "indexExpression": {
                              "id": 9096,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9089,
                              "src": "8234:1:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8225:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9099,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "8254:2:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 9100,
                                  "name": "uris",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9056,
                                  "src": "8258:4:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "string calldata[] calldata"
                                  }
                                },
                                "id": 9102,
                                "indexExpression": {
                                  "id": 9101,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9089,
                                  "src": "8263:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8258:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 9103,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8267:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9106,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9104,
                                  "name": "firstTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9078,
                                  "src": "8270:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 9105,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9089,
                                  "src": "8283:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8270:14:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9098,
                              "name": "_mintExtension",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9251,
                              "src": "8239:14:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint80_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,string memory,uint80,uint256) returns (uint256)"
                              }
                            },
                            "id": 9107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8239:46:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8225:60:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9109,
                        "nodeType": "ExpressionStatement",
                        "src": "8225:60:27"
                      },
                      {
                        "id": 9113,
                        "nodeType": "UncheckedBlock",
                        "src": "8299:18:27",
                        "statements": [
                          {
                            "expression": {
                              "id": 9111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "8311:3:27",
                              "subExpression": {
                                "id": 9110,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9089,
                                "src": "8313:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9112,
                            "nodeType": "ExpressionStatement",
                            "src": "8311:3:27"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9091,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9089,
                      "src": "8193:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 9092,
                        "name": "uris",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9056,
                        "src": "8197:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      },
                      "id": 9093,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8202:6:27",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "8197:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8193:15:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9115,
                  "initializationExpression": {
                    "assignments": [
                      9089
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9089,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "8190:1:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 9115,
                        "src": "8185:6:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9088,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8185:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9090,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8185:6:27"
                  },
                  "nodeType": "ForStatement",
                  "src": "8180:147:27"
                }
              ]
            },
            "documentation": {
              "id": 9051,
              "nodeType": "StructuredDocumentation",
              "src": "7803:68:27",
              "text": " @dev See {IERC721CreatorCore-mintExtensionBatch}."
            },
            "functionSelector": "38e52e78",
            "id": 9117,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 9060,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 9059,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "7964:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "7964:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "7964:12:27"
              }
            ],
            "name": "mintExtensionBatch",
            "nameLocation": "7885:18:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9058,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7955:8:27"
            },
            "parameters": {
              "id": 9057,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9053,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "7912:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9117,
                  "src": "7904:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9052,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7904:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9056,
                  "mutability": "mutable",
                  "name": "uris",
                  "nameLocation": "7934:4:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9117,
                  "src": "7916:22:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9054,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "7916:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 9055,
                    "nodeType": "ArrayTypeName",
                    "src": "7916:8:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7903:36:27"
            },
            "returnParameters": {
              "id": 9064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9063,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "8002:8:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9117,
                  "src": "7985:25:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9061,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "7985:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9062,
                    "nodeType": "ArrayTypeName",
                    "src": "7985:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7984:27:27"
            },
            "scope": 9615,
            "src": "7876:457:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15392
            ],
            "body": {
              "id": 9183,
              "nodeType": "Block",
              "src": "8548:322:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9132,
                      "name": "requireExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "8558:16:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 9133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8558:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9134,
                  "nodeType": "ExpressionStatement",
                  "src": "8558:18:27"
                },
                {
                  "expression": {
                    "id": 9142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 9135,
                      "name": "tokenIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9130,
                      "src": "8586:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 9139,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9123,
                            "src": "8611:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint80_$dyn_calldata_ptr",
                              "typeString": "uint80[] calldata"
                            }
                          },
                          "id": 9140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8616:6:27",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "8611:11:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 9138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "8597:13:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9136,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8601:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9137,
                          "nodeType": "ArrayTypeName",
                          "src": "8601:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        }
                      },
                      "id": 9141,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8597:26:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "8586:37:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "id": 9143,
                  "nodeType": "ExpressionStatement",
                  "src": "8586:37:27"
                },
                {
                  "assignments": [
                    9145
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9145,
                      "mutability": "mutable",
                      "name": "firstTokenId",
                      "nameLocation": "8641:12:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 9183,
                      "src": "8633:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9144,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8633:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9149,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9146,
                      "name": "_tokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12432,
                      "src": "8656:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 9147,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8668:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "8656:13:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8633:36:27"
                },
                {
                  "expression": {
                    "id": 9153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 9150,
                      "name": "_tokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12432,
                      "src": "8679:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "expression": {
                        "id": 9151,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9123,
                        "src": "8694:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint80_$dyn_calldata_ptr",
                          "typeString": "uint80[] calldata"
                        }
                      },
                      "id": 9152,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8699:6:27",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "8694:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8679:26:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9154,
                  "nodeType": "ExpressionStatement",
                  "src": "8679:26:27"
                },
                {
                  "body": {
                    "id": 9181,
                    "nodeType": "Block",
                    "src": "8747:117:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 9175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9162,
                              "name": "tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9130,
                              "src": "8761:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 9164,
                            "indexExpression": {
                              "id": 9163,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9156,
                              "src": "8770:1:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8761:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9166,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9120,
                                "src": "8790:2:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "hexValue": "",
                                "id": 9167,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8794:2:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              {
                                "baseExpression": {
                                  "id": 9168,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9123,
                                  "src": "8798:4:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint80_$dyn_calldata_ptr",
                                    "typeString": "uint80[] calldata"
                                  }
                                },
                                "id": 9170,
                                "indexExpression": {
                                  "id": 9169,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9156,
                                  "src": "8803:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8798:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint80",
                                  "typeString": "uint80"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9173,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9171,
                                  "name": "firstTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9145,
                                  "src": "8807:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 9172,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9156,
                                  "src": "8820:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8807:14:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                {
                                  "typeIdentifier": "t_uint80",
                                  "typeString": "uint80"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9165,
                              "name": "_mintExtension",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9251,
                              "src": "8775:14:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint80_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,string memory,uint80,uint256) returns (uint256)"
                              }
                            },
                            "id": 9174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8775:47:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8761:61:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9176,
                        "nodeType": "ExpressionStatement",
                        "src": "8761:61:27"
                      },
                      {
                        "id": 9180,
                        "nodeType": "UncheckedBlock",
                        "src": "8836:18:27",
                        "statements": [
                          {
                            "expression": {
                              "id": 9178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "8848:3:27",
                              "subExpression": {
                                "id": 9177,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9156,
                                "src": "8850:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9179,
                            "nodeType": "ExpressionStatement",
                            "src": "8848:3:27"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9158,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9156,
                      "src": "8729:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 9159,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9123,
                        "src": "8733:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint80_$dyn_calldata_ptr",
                          "typeString": "uint80[] calldata"
                        }
                      },
                      "id": 9160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8738:6:27",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "8733:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8729:15:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9182,
                  "initializationExpression": {
                    "assignments": [
                      9156
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9156,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "8726:1:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 9182,
                        "src": "8721:6:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9155,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8721:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9157,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8721:6:27"
                  },
                  "nodeType": "ForStatement",
                  "src": "8716:148:27"
                }
              ]
            },
            "documentation": {
              "id": 9118,
              "nodeType": "StructuredDocumentation",
              "src": "8339:68:27",
              "text": " @dev See {IERC721CreatorCore-mintExtensionBatch}."
            },
            "functionSelector": "4278330e",
            "id": 9184,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 9127,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 9126,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "8500:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "8500:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "8500:12:27"
              }
            ],
            "name": "mintExtensionBatch",
            "nameLocation": "8421:18:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9125,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8491:8:27"
            },
            "parameters": {
              "id": 9124,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9120,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8448:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9184,
                  "src": "8440:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9119,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8440:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9123,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "8470:4:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9184,
                  "src": "8452:22:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint80_$dyn_calldata_ptr",
                    "typeString": "uint80[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9121,
                      "name": "uint80",
                      "nodeType": "ElementaryTypeName",
                      "src": "8452:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint80",
                        "typeString": "uint80"
                      }
                    },
                    "id": 9122,
                    "nodeType": "ArrayTypeName",
                    "src": "8452:8:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint80_$dyn_storage_ptr",
                      "typeString": "uint80[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8439:36:27"
            },
            "returnParameters": {
              "id": 9131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9130,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "8538:8:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9184,
                  "src": "8521:25:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9128,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "8521:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9129,
                    "nodeType": "ArrayTypeName",
                    "src": "8521:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8520:27:27"
            },
            "scope": 9615,
            "src": "8412:458:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9250,
              "nodeType": "Block",
              "src": "9048:406:27",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9198,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9193,
                      "src": "9062:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 9199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9073:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9062:12:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9209,
                  "nodeType": "IfStatement",
                  "src": "9058:91:27",
                  "trueBody": {
                    "id": 9208,
                    "nodeType": "Block",
                    "src": "9076:73:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 9202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "9090:13:27",
                          "subExpression": {
                            "id": 9201,
                            "name": "_tokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12432,
                            "src": "9092:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9203,
                        "nodeType": "ExpressionStatement",
                        "src": "9090:13:27"
                      },
                      {
                        "expression": {
                          "id": 9206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9204,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9193,
                            "src": "9117:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9205,
                            "name": "_tokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12432,
                            "src": "9127:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9117:21:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9207,
                        "nodeType": "ExpressionStatement",
                        "src": "9117:21:27"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9211,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9187,
                        "src": "9181:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 9212,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9193,
                        "src": "9185:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9210,
                      "name": "_checkMintPermissions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14043,
                      "src": "9159:21:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 9213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9159:34:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9214,
                  "nodeType": "ExpressionStatement",
                  "src": "9159:34:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9216,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9187,
                        "src": "9246:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 9217,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9193,
                        "src": "9250:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9215,
                      "name": "_preMintExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14061,
                      "src": "9228:17:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 9218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9228:30:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9219,
                  "nodeType": "ExpressionStatement",
                  "src": "9228:30:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9221,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9187,
                        "src": "9279:2:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 9222,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9193,
                        "src": "9283:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        },
                        "id": 9230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          },
                          "id": 9225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9223,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9191,
                            "src": "9292:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint80",
                              "typeString": "uint80"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "hexValue": "3136",
                            "id": 9224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9300:2:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16_by_1",
                              "typeString": "int_const 16"
                            },
                            "value": "16"
                          },
                          "src": "9292:10:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "|",
                        "rightExpression": {
                          "baseExpression": {
                            "id": 9226,
                            "name": "_extensionToIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13891,
                            "src": "9305:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint16_$",
                              "typeString": "mapping(address => uint16)"
                            }
                          },
                          "id": 9229,
                          "indexExpression": {
                            "expression": {
                              "id": 9227,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "9323:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9327:6:27",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "9323:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9305:29:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "src": "9292:42:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        }
                      ],
                      "id": 9220,
                      "name": "_safeMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20227,
                        20316
                      ],
                      "referencedDeclaration": 20227,
                      "src": "9269:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                        "typeString": "function (address,uint256,uint96)"
                      }
                    },
                    "id": 9231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9269:66:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9232,
                  "nodeType": "ExpressionStatement",
                  "src": "9269:66:27"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "arguments": [
                          {
                            "id": 9235,
                            "name": "uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9189,
                            "src": "9356:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 9234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9350:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": {
                            "id": 9233,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "9350:5:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9236,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9350:10:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 9237,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "9361:6:27",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "9350:17:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 9238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9370:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9350:21:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9247,
                  "nodeType": "IfStatement",
                  "src": "9346:77:27",
                  "trueBody": {
                    "id": 9246,
                    "nodeType": "Block",
                    "src": "9373:50:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 9244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9240,
                              "name": "_tokenURIs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12456,
                              "src": "9387:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                "typeString": "mapping(uint256 => string storage ref)"
                              }
                            },
                            "id": 9242,
                            "indexExpression": {
                              "id": 9241,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9193,
                              "src": "9398:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9387:19:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9243,
                            "name": "uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9189,
                            "src": "9409:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "9387:25:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 9245,
                        "nodeType": "ExpressionStatement",
                        "src": "9387:25:27"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 9248,
                    "name": "tokenId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9193,
                    "src": "9440:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9197,
                  "id": 9249,
                  "nodeType": "Return",
                  "src": "9433:14:27"
                }
              ]
            },
            "documentation": {
              "id": 9185,
              "nodeType": "StructuredDocumentation",
              "src": "8876:48:27",
              "text": " @dev Mint token via extension"
            },
            "id": 9251,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mintExtension",
            "nameLocation": "8938:14:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9187,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8961:2:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9251,
                  "src": "8953:10:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9186,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8953:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9189,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "8979:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9251,
                  "src": "8965:17:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9188,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8965:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9191,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "8991:4:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9251,
                  "src": "8984:11:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint80",
                    "typeString": "uint80"
                  },
                  "typeName": {
                    "id": 9190,
                    "name": "uint80",
                    "nodeType": "ElementaryTypeName",
                    "src": "8984:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint80",
                      "typeString": "uint80"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9193,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "9005:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9251,
                  "src": "8997:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9192,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8997:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8952:61:27"
            },
            "returnParameters": {
              "id": 9197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9196,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9251,
                  "src": "9039:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9195,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9039:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9038:9:27"
            },
            "scope": 9615,
            "src": "8929:525:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              15100
            ],
            "body": {
              "id": 9292,
              "nodeType": "Block",
              "src": "9621:264:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9262,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9254,
                            "src": "9647:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9261,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20175,
                          "src": "9639:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 9263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9639:16:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f6e6578697374656e7420746f6b656e",
                        "id": 9264,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9657:19:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        },
                        "value": "Nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        }
                      ],
                      "id": 9260,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9631:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9631:46:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9266,
                  "nodeType": "ExpressionStatement",
                  "src": "9631:46:27"
                },
                {
                  "expression": {
                    "id": 9271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 9267,
                      "name": "extension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9258,
                      "src": "9687:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 9269,
                          "name": "tokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9254,
                          "src": "9715:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 9268,
                        "name": "_tokenExtension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          9595
                        ],
                        "referencedDeclaration": 9595,
                        "src": "9699:15:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                          "typeString": "function (uint256) view returns (address)"
                        }
                      },
                      "id": 9270,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9699:24:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9687:36:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9272,
                  "nodeType": "ExpressionStatement",
                  "src": "9687:36:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 9279,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 9274,
                          "name": "extension",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9258,
                          "src": "9741:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 9277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9762:1:27",
                              "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": 9276,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9754:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 9275,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9754:7:27",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 9278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9754:10:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "9741:23:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f20657874656e73696f6e20666f7220746f6b656e",
                        "id": 9280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9766:24:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9af8056f7bbf995e43fff5dc3ca8e50b237f8938603e7ec81cea349a49fd0fcd",
                          "typeString": "literal_string \"No extension for token\""
                        },
                        "value": "No extension for token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9af8056f7bbf995e43fff5dc3ca8e50b237f8938603e7ec81cea349a49fd0fcd",
                          "typeString": "literal_string \"No extension for token\""
                        }
                      ],
                      "id": 9273,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9733:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9733:58:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9282,
                  "nodeType": "ExpressionStatement",
                  "src": "9733:58:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "9809:43:27",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 9286,
                              "name": "extension",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9258,
                              "src": "9842:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 9284,
                              "name": "_blacklistedExtensions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12440,
                              "src": "9810:22:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$3529_storage",
                                "typeString": "struct EnumerableSet.AddressSet storage ref"
                              }
                            },
                            "id": 9285,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9833:8:27",
                            "memberName": "contains",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3610,
                            "src": "9810:31:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$3529_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$3529_storage_ptr_$",
                              "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"
                            }
                          },
                          "id": 9287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9810:42:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "457874656e73696f6e20626c61636b6c6973746564",
                        "id": 9289,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9854:23:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4beb819a81c47e20a26775f9ad72b3da5e765415ddadbc3186b244e4bc01e621",
                          "typeString": "literal_string \"Extension blacklisted\""
                        },
                        "value": "Extension blacklisted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4beb819a81c47e20a26775f9ad72b3da5e765415ddadbc3186b244e4bc01e621",
                          "typeString": "literal_string \"Extension blacklisted\""
                        }
                      ],
                      "id": 9283,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9801:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9801:77:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9291,
                  "nodeType": "ExpressionStatement",
                  "src": "9801:77:27"
                }
              ]
            },
            "documentation": {
              "id": 9252,
              "nodeType": "StructuredDocumentation",
              "src": "9460:58:27",
              "text": " @dev See {ICreatorCore-tokenExtension}."
            },
            "functionSelector": "239be317",
            "id": 9293,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokenExtension",
            "nameLocation": "9532:14:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9256,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9584:8:27"
            },
            "parameters": {
              "id": 9255,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9254,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "9555:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9293,
                  "src": "9547:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9253,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9547:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9546:17:27"
            },
            "returnParameters": {
              "id": 9259,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9258,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "9610:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9293,
                  "src": "9602:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9257,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9602:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9601:19:27"
            },
            "scope": 9615,
            "src": "9523:362:27",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15398
            ],
            "body": {
              "id": 9333,
              "nodeType": "Block",
              "src": "10018:266:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 9304,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "10055:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10059:6:27",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "10055:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 9306,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9296,
                            "src": "10067:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9303,
                          "name": "_isApprovedOrOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20209,
                          "src": "10036:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 9307,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10036:39:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "43616c6c6572206973206e6f74206f776e6572206f7220617070726f766564",
                        "id": 9308,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10077:33:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_603f4022c7c9bca46ef8304cd6a88dd2e6d49898b43e3a9ed7aea6d1839c2f9e",
                          "typeString": "literal_string \"Caller is not owner or approved\""
                        },
                        "value": "Caller is not owner or approved"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_603f4022c7c9bca46ef8304cd6a88dd2e6d49898b43e3a9ed7aea6d1839c2f9e",
                          "typeString": "literal_string \"Caller is not owner or approved\""
                        }
                      ],
                      "id": 9302,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "10028:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10028:83:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9310,
                  "nodeType": "ExpressionStatement",
                  "src": "10028:83:27"
                },
                {
                  "assignments": [
                    9312
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9312,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "10129:5:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 9333,
                      "src": "10121:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9311,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10121:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9316,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 9314,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9296,
                        "src": "10145:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9313,
                      "name": "ownerOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19935,
                      "src": "10137:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 9315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10137:16:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10121:32:27"
                },
                {
                  "assignments": [
                    9318
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9318,
                      "mutability": "mutable",
                      "name": "extension",
                      "nameLocation": "10171:9:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 9333,
                      "src": "10163:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9317,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10163:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9322,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 9320,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9296,
                        "src": "10199:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9319,
                      "name": "_tokenExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9595
                      ],
                      "referencedDeclaration": 9595,
                      "src": "10183:15:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 9321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10183:24:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10163:44:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9324,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9296,
                        "src": "10223:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9323,
                      "name": "_burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20389,
                      "src": "10217:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 9325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10217:14:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9326,
                  "nodeType": "ExpressionStatement",
                  "src": "10217:14:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9328,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9312,
                        "src": "10251:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 9329,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9296,
                        "src": "10258:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 9330,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9318,
                        "src": "10267:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9327,
                      "name": "_postBurn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14114,
                      "src": "10241:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,uint256,address)"
                      }
                    },
                    "id": 9331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10241:36:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9332,
                  "nodeType": "ExpressionStatement",
                  "src": "10241:36:27"
                }
              ]
            },
            "documentation": {
              "id": 9294,
              "nodeType": "StructuredDocumentation",
              "src": "9891:54:27",
              "text": " @dev See {IERC721CreatorCore-burn}."
            },
            "functionSelector": "42966c68",
            "id": 9334,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 9300,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 9299,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "10005:12:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1187,
                  "src": "10005:12:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "10005:12:27"
              }
            ],
            "name": "burn",
            "nameLocation": "9959:4:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9298,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9996:8:27"
            },
            "parameters": {
              "id": 9297,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9296,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "9972:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9334,
                  "src": "9964:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9295,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9964:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9963:17:27"
            },
            "returnParameters": {
              "id": 9301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10018:0:27"
            },
            "scope": 9615,
            "src": "9950:334:27",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15110
            ],
            "body": {
              "id": 9356,
              "nodeType": "Block",
              "src": "10475:75:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 9350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10516:1:27",
                            "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": 9349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10508:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 9348,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10508:7:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9351,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10508:10:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 9352,
                        "name": "receivers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9338,
                        "src": "10520:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                          "typeString": "address payable[] calldata"
                        }
                      },
                      {
                        "id": 9353,
                        "name": "basisPoints",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9341,
                        "src": "10531:11:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                          "typeString": "address payable[] calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      ],
                      "id": 9347,
                      "name": "_setRoyaltiesExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13346,
                      "src": "10485:22:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_address_payable_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$__$",
                        "typeString": "function (address,address payable[] calldata,uint256[] calldata)"
                      }
                    },
                    "id": 9354,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10485:58:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9355,
                  "nodeType": "ExpressionStatement",
                  "src": "10485:58:27"
                }
              ]
            },
            "documentation": {
              "id": 9335,
              "nodeType": "StructuredDocumentation",
              "src": "10290:56:27",
              "text": " @dev See {ICreatorCore-setRoyalties}."
            },
            "functionSelector": "332dd1ae",
            "id": 9357,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 9345,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 9344,
                  "name": "adminRequired",
                  "nameLocations": [
                    "10461:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "10461:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "10461:13:27"
              }
            ],
            "name": "setRoyalties",
            "nameLocation": "10360:12:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9343,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10452:8:27"
            },
            "parameters": {
              "id": 9342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9338,
                  "mutability": "mutable",
                  "name": "receivers",
                  "nameLocation": "10400:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9357,
                  "src": "10373:36:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9336,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "10373:15:27",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 9337,
                    "nodeType": "ArrayTypeName",
                    "src": "10373:17:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9341,
                  "mutability": "mutable",
                  "name": "basisPoints",
                  "nameLocation": "10430:11:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9357,
                  "src": "10411:30:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9339,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10411:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9340,
                    "nodeType": "ArrayTypeName",
                    "src": "10411:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10372:70:27"
            },
            "returnParameters": {
              "id": 9346,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10475:0:27"
            },
            "scope": 9615,
            "src": "10351:199:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15122
            ],
            "body": {
              "id": 9385,
              "nodeType": "Block",
              "src": "10758:119:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9374,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9360,
                            "src": "10784:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9373,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20175,
                          "src": "10776:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 9375,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10776:16:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f6e6578697374656e7420746f6b656e",
                        "id": 9376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10794:19:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        },
                        "value": "Nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        }
                      ],
                      "id": 9372,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "10768:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10768:46:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9378,
                  "nodeType": "ExpressionStatement",
                  "src": "10768:46:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9380,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9360,
                        "src": "10838:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 9381,
                        "name": "receivers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9363,
                        "src": "10847:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                          "typeString": "address payable[] calldata"
                        }
                      },
                      {
                        "id": 9382,
                        "name": "basisPoints",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9366,
                        "src": "10858:11:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                          "typeString": "address payable[] calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      ],
                      "id": 9379,
                      "name": "_setRoyalties",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13295,
                      "src": "10824:13:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_array$_t_address_payable_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$__$",
                        "typeString": "function (uint256,address payable[] calldata,uint256[] calldata)"
                      }
                    },
                    "id": 9383,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10824:46:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9384,
                  "nodeType": "ExpressionStatement",
                  "src": "10824:46:27"
                }
              ]
            },
            "documentation": {
              "id": 9358,
              "nodeType": "StructuredDocumentation",
              "src": "10556:56:27",
              "text": " @dev See {ICreatorCore-setRoyalties}."
            },
            "functionSelector": "20e4afe2",
            "id": 9386,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 9370,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 9369,
                  "name": "adminRequired",
                  "nameLocations": [
                    "10744:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "10744:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "10744:13:27"
              }
            ],
            "name": "setRoyalties",
            "nameLocation": "10626:12:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9368,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10735:8:27"
            },
            "parameters": {
              "id": 9367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9360,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "10647:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9386,
                  "src": "10639:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9359,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10639:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9363,
                  "mutability": "mutable",
                  "name": "receivers",
                  "nameLocation": "10683:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9386,
                  "src": "10656:36:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9361,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "10656:15:27",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 9362,
                    "nodeType": "ArrayTypeName",
                    "src": "10656:17:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9366,
                  "mutability": "mutable",
                  "name": "basisPoints",
                  "nameLocation": "10713:11:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9386,
                  "src": "10694:30:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9364,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10694:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9365,
                    "nodeType": "ArrayTypeName",
                    "src": "10694:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10638:87:27"
            },
            "returnParameters": {
              "id": 9371,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10758:0:27"
            },
            "scope": 9615,
            "src": "10617:260:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15134
            ],
            "body": {
              "id": 9407,
              "nodeType": "Block",
              "src": "11105:74:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9402,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9389,
                        "src": "11138:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 9403,
                        "name": "receivers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9392,
                        "src": "11149:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                          "typeString": "address payable[] calldata"
                        }
                      },
                      {
                        "id": 9404,
                        "name": "basisPoints",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9395,
                        "src": "11160:11:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                          "typeString": "address payable[] calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      ],
                      "id": 9401,
                      "name": "_setRoyaltiesExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13346,
                      "src": "11115:22:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_address_payable_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$__$",
                        "typeString": "function (address,address payable[] calldata,uint256[] calldata)"
                      }
                    },
                    "id": 9405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11115:57:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9406,
                  "nodeType": "ExpressionStatement",
                  "src": "11115:57:27"
                }
              ]
            },
            "documentation": {
              "id": 9387,
              "nodeType": "StructuredDocumentation",
              "src": "10883:65:27",
              "text": " @dev See {ICreatorCore-setRoyaltiesExtension}."
            },
            "functionSelector": "b0fe87c9",
            "id": 9408,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 9399,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 9398,
                  "name": "adminRequired",
                  "nameLocations": [
                    "11091:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "11091:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "11091:13:27"
              }
            ],
            "name": "setRoyaltiesExtension",
            "nameLocation": "10962:21:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9397,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11082:8:27"
            },
            "parameters": {
              "id": 9396,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9389,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "10992:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9408,
                  "src": "10984:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9388,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10984:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9392,
                  "mutability": "mutable",
                  "name": "receivers",
                  "nameLocation": "11030:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9408,
                  "src": "11003:36:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9390,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "11003:15:27",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 9391,
                    "nodeType": "ArrayTypeName",
                    "src": "11003:17:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9395,
                  "mutability": "mutable",
                  "name": "basisPoints",
                  "nameLocation": "11060:11:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9408,
                  "src": "11041:30:27",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9393,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "11041:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9394,
                    "nodeType": "ArrayTypeName",
                    "src": "11041:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10983:89:27"
            },
            "returnParameters": {
              "id": 9400,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11105:0:27"
            },
            "scope": 9615,
            "src": "10953:226:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15146
            ],
            "body": {
              "id": 9432,
              "nodeType": "Block",
              "src": "11369:102:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9423,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9411,
                            "src": "11395:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9422,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20175,
                          "src": "11387:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 9424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11387:16:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f6e6578697374656e7420746f6b656e",
                        "id": 9425,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11405:19:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        },
                        "value": "Nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        }
                      ],
                      "id": 9421,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "11379:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11379:46:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9427,
                  "nodeType": "ExpressionStatement",
                  "src": "11379:46:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9429,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9411,
                        "src": "11456:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9428,
                      "name": "_getRoyalties",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13169,
                      "src": "11442:13:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_array$_t_address_payable_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) view returns (address payable[] memory,uint256[] memory)"
                      }
                    },
                    "id": 9430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11442:22:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_address_payable_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                      "typeString": "tuple(address payable[] memory,uint256[] memory)"
                    }
                  },
                  "functionReturnParameters": 9420,
                  "id": 9431,
                  "nodeType": "Return",
                  "src": "11435:29:27"
                }
              ]
            },
            "documentation": {
              "id": 9409,
              "nodeType": "StructuredDocumentation",
              "src": "11185:56:27",
              "text": " @dev See {ICreatorCore-getRoyalties}."
            },
            "functionSelector": "bb3bafd6",
            "id": 9433,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getRoyalties",
            "nameLocation": "11255:12:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9413,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11307:8:27"
            },
            "parameters": {
              "id": 9412,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9411,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "11276:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9433,
                  "src": "11268:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9410,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11268:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11267:17:27"
            },
            "returnParameters": {
              "id": 9420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9416,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9433,
                  "src": "11325:24:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_memory_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9414,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "11325:15:27",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 9415,
                    "nodeType": "ArrayTypeName",
                    "src": "11325:17:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9419,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9433,
                  "src": "11351:16:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9417,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "11351:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9418,
                    "nodeType": "ArrayTypeName",
                    "src": "11351:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11324:44:27"
            },
            "scope": 9615,
            "src": "11246:225:27",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15173
            ],
            "body": {
              "id": 9457,
              "nodeType": "Block",
              "src": "11651:102:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9448,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9436,
                            "src": "11677:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9447,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20175,
                          "src": "11669:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 9449,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11669:16:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f6e6578697374656e7420746f6b656e",
                        "id": 9450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11687:19:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        },
                        "value": "Nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        }
                      ],
                      "id": 9446,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "11661:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11661:46:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9452,
                  "nodeType": "ExpressionStatement",
                  "src": "11661:46:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9454,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9436,
                        "src": "11738:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9453,
                      "name": "_getRoyalties",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13169,
                      "src": "11724:13:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_array$_t_address_payable_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) view returns (address payable[] memory,uint256[] memory)"
                      }
                    },
                    "id": 9455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11724:22:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_address_payable_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                      "typeString": "tuple(address payable[] memory,uint256[] memory)"
                    }
                  },
                  "functionReturnParameters": 9445,
                  "id": 9456,
                  "nodeType": "Return",
                  "src": "11717:29:27"
                }
              ]
            },
            "documentation": {
              "id": 9434,
              "nodeType": "StructuredDocumentation",
              "src": "11477:51:27",
              "text": " @dev See {ICreatorCore-getFees}."
            },
            "functionSelector": "d5a06d4c",
            "id": 9458,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFees",
            "nameLocation": "11542:7:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9438,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11589:8:27"
            },
            "parameters": {
              "id": 9437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9436,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "11558:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9458,
                  "src": "11550:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9435,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11550:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11549:17:27"
            },
            "returnParameters": {
              "id": 9445,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9441,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9458,
                  "src": "11607:24:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_memory_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9439,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "11607:15:27",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 9440,
                    "nodeType": "ArrayTypeName",
                    "src": "11607:17:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9444,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9458,
                  "src": "11633:16:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9442,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "11633:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9443,
                    "nodeType": "ArrayTypeName",
                    "src": "11633:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11606:44:27"
            },
            "scope": 9615,
            "src": "11533:220:27",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15154
            ],
            "body": {
              "id": 9479,
              "nodeType": "Block",
              "src": "11933:109:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9470,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9461,
                            "src": "11959:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9469,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20175,
                          "src": "11951:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 9471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11951:16:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f6e6578697374656e7420746f6b656e",
                        "id": 9472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11969:19:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        },
                        "value": "Nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        }
                      ],
                      "id": 9468,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "11943:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11943:46:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9474,
                  "nodeType": "ExpressionStatement",
                  "src": "11943:46:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9476,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9461,
                        "src": "12027:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9475,
                      "name": "_getRoyaltyReceivers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13186,
                      "src": "12006:20:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_array$_t_address_payable_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) view returns (address payable[] memory)"
                      }
                    },
                    "id": 9477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12006:29:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_memory_ptr",
                      "typeString": "address payable[] memory"
                    }
                  },
                  "functionReturnParameters": 9467,
                  "id": 9478,
                  "nodeType": "Return",
                  "src": "11999:36:27"
                }
              ]
            },
            "documentation": {
              "id": 9459,
              "nodeType": "StructuredDocumentation",
              "src": "11759:60:27",
              "text": " @dev See {ICreatorCore-getFeeRecipients}."
            },
            "functionSelector": "b9c4d9fb",
            "id": 9480,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFeeRecipients",
            "nameLocation": "11833:16:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9463,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11889:8:27"
            },
            "parameters": {
              "id": 9462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9461,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "11858:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9480,
                  "src": "11850:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11850:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11849:17:27"
            },
            "returnParameters": {
              "id": 9467,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9466,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9480,
                  "src": "11907:24:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_memory_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9464,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "11907:15:27",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 9465,
                    "nodeType": "ArrayTypeName",
                    "src": "11907:17:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11906:26:27"
            },
            "scope": 9615,
            "src": "11824:218:27",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15162
            ],
            "body": {
              "id": 9501,
              "nodeType": "Block",
              "src": "12197:103:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9492,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9483,
                            "src": "12223:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9491,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20175,
                          "src": "12215:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 9493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12215:16:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f6e6578697374656e7420746f6b656e",
                        "id": 9494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12233:19:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        },
                        "value": "Nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        }
                      ],
                      "id": 9490,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "12207:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12207:46:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9496,
                  "nodeType": "ExpressionStatement",
                  "src": "12207:46:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9498,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9483,
                        "src": "12285:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9497,
                      "name": "_getRoyaltyBPS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13203,
                      "src": "12270:14:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) view returns (uint256[] memory)"
                      }
                    },
                    "id": 9499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12270:23:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 9489,
                  "id": 9500,
                  "nodeType": "Return",
                  "src": "12263:30:27"
                }
              ]
            },
            "documentation": {
              "id": 9481,
              "nodeType": "StructuredDocumentation",
              "src": "12048:53:27",
              "text": " @dev See {ICreatorCore-getFeeBps}."
            },
            "functionSelector": "0ebd4c7f",
            "id": 9502,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFeeBps",
            "nameLocation": "12115:9:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9485,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12164:8:27"
            },
            "parameters": {
              "id": 9484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9483,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "12133:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9502,
                  "src": "12125:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9482,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12125:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12124:17:27"
            },
            "returnParameters": {
              "id": 9489,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9488,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9502,
                  "src": "12182:13:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9486,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12182:4:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9487,
                    "nodeType": "ArrayTypeName",
                    "src": "12182:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12181:15:27"
            },
            "scope": 9615,
            "src": "12106:194:27",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              15184
            ],
            "body": {
              "id": 9527,
              "nodeType": "Block",
              "src": "12481:111:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9517,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9505,
                            "src": "12507:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9516,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20175,
                          "src": "12499:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 9518,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12499:16:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f6e6578697374656e7420746f6b656e",
                        "id": 9519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12517:19:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        },
                        "value": "Nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        }
                      ],
                      "id": 9515,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "12491:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12491:46:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9521,
                  "nodeType": "ExpressionStatement",
                  "src": "12491:46:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9523,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9505,
                        "src": "12570:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 9524,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9507,
                        "src": "12579:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9522,
                      "name": "_getRoyaltyInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13258,
                      "src": "12554:15:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_address_$_t_uint256_$",
                        "typeString": "function (uint256,uint256) view returns (address,uint256)"
                      }
                    },
                    "id": 9525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12554:31:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                      "typeString": "tuple(address,uint256)"
                    }
                  },
                  "functionReturnParameters": 9514,
                  "id": 9526,
                  "nodeType": "Return",
                  "src": "12547:38:27"
                }
              ]
            },
            "documentation": {
              "id": 9503,
              "nodeType": "StructuredDocumentation",
              "src": "12310:55:27",
              "text": " @dev See {ICreatorCore-royaltyInfo}."
            },
            "functionSelector": "2a55205a",
            "id": 9528,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "royaltyInfo",
            "nameLocation": "12379:11:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9509,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12445:8:27"
            },
            "parameters": {
              "id": 9508,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9505,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "12399:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9528,
                  "src": "12391:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9504,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12391:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9507,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "12416:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9528,
                  "src": "12408:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9506,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12408:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12390:32:27"
            },
            "returnParameters": {
              "id": 9514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9511,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9528,
                  "src": "12463:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9510,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12463:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9513,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9528,
                  "src": "12472:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9512,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12472:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12462:18:27"
            },
            "scope": 9615,
            "src": "12370:222:27",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              1580
            ],
            "body": {
              "id": 9548,
              "nodeType": "Block",
              "src": "12747:98:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9539,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9531,
                            "src": "12773:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9538,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20175,
                          "src": "12765:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 9540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12765:16:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f6e6578697374656e7420746f6b656e",
                        "id": 9541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12783:19:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        },
                        "value": "Nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7003d7428552fca483d8ae514dcdd858508b192cded55eb84b078a27247ab7e4",
                          "typeString": "literal_string \"Nonexistent token\""
                        }
                      ],
                      "id": 9537,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "12757:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9542,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12757:46:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9543,
                  "nodeType": "ExpressionStatement",
                  "src": "12757:46:27"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9545,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9531,
                        "src": "12830:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9544,
                      "name": "_tokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13017,
                      "src": "12820:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (uint256) view returns (string memory)"
                      }
                    },
                    "id": 9546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12820:18:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 9536,
                  "id": 9547,
                  "nodeType": "Return",
                  "src": "12813:25:27"
                }
              ]
            },
            "documentation": {
              "id": 9529,
              "nodeType": "StructuredDocumentation",
              "src": "12599:55:27",
              "text": " @dev See {IERC721Metadata-tokenURI}."
            },
            "functionSelector": "c87b56dd",
            "id": 9549,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokenURI",
            "nameLocation": "12668:8:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9533,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12714:8:27"
            },
            "parameters": {
              "id": 9532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9531,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "12685:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "12677:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9530,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12677:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12676:17:27"
            },
            "returnParameters": {
              "id": 9536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9535,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "12732:13:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9534,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12732:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12731:15:27"
            },
            "scope": 9615,
            "src": "12659:186:27",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              15190
            ],
            "body": {
              "id": 9562,
              "nodeType": "Block",
              "src": "12997:51:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9559,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9552,
                        "src": "13031:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9558,
                      "name": "_setApproveTransferBase",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13454,
                      "src": "13007:23:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 9560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13007:34:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9561,
                  "nodeType": "ExpressionStatement",
                  "src": "13007:34:27"
                }
              ]
            },
            "documentation": {
              "id": 9550,
              "nodeType": "StructuredDocumentation",
              "src": "12851:62:27",
              "text": " @dev See {ICreatorCore-setApproveTransfer}."
            },
            "functionSelector": "596798ad",
            "id": 9563,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 9556,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 9555,
                  "name": "adminRequired",
                  "nameLocations": [
                    "12983:13:27"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 62,
                  "src": "12983:13:27"
                },
                "nodeType": "ModifierInvocation",
                "src": "12983:13:27"
              }
            ],
            "name": "setApproveTransfer",
            "nameLocation": "12927:18:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9554,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12974:8:27"
            },
            "parameters": {
              "id": 9553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9552,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "12954:9:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9563,
                  "src": "12946:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9551,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12946:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12945:19:27"
            },
            "returnParameters": {
              "id": 9557,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12997:0:27"
            },
            "scope": 9615,
            "src": "12918:130:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              13472
            ],
            "body": {
              "id": 9594,
              "nodeType": "Block",
              "src": "13136:175:27",
              "statements": [
                {
                  "assignments": [
                    9572
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9572,
                      "mutability": "mutable",
                      "name": "extensionIndex",
                      "nameLocation": "13153:14:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 9594,
                      "src": "13146:21:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 9571,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "13146:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9580,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 9575,
                            "name": "_tokenData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19837,
                            "src": "13177:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenData_$19832_storage_$",
                              "typeString": "mapping(uint256 => struct ERC721Core.TokenData storage ref)"
                            }
                          },
                          "id": 9577,
                          "indexExpression": {
                            "id": 9576,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9565,
                            "src": "13188:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13177:19:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenData_$19832_storage",
                            "typeString": "struct ERC721Core.TokenData storage ref"
                          }
                        },
                        "id": 9578,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "13197:4:27",
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19831,
                        "src": "13177:24:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      ],
                      "id": 9574,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "13170:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint16_$",
                        "typeString": "type(uint16)"
                      },
                      "typeName": {
                        "id": 9573,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "13170:6:27",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 9579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13170:32:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13146:56:27"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 9583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9581,
                      "name": "extensionIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9572,
                      "src": "13216:14:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 9582,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13234:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "13216:19:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9589,
                  "nodeType": "IfStatement",
                  "src": "13212:42:27",
                  "trueBody": {
                    "expression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 9586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13252:1:27",
                          "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": 9585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13244:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 9584,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13244:7:27",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 9587,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13244:10:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "functionReturnParameters": 9570,
                    "id": 9588,
                    "nodeType": "Return",
                    "src": "13237:17:27"
                  }
                },
                {
                  "expression": {
                    "baseExpression": {
                      "id": 9590,
                      "name": "_indexToExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13895,
                      "src": "13271:17:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint16_$_t_address_$",
                        "typeString": "mapping(uint16 => address)"
                      }
                    },
                    "id": 9592,
                    "indexExpression": {
                      "id": 9591,
                      "name": "extensionIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9572,
                      "src": "13289:14:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13271:33:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 9570,
                  "id": 9593,
                  "nodeType": "Return",
                  "src": "13264:40:27"
                }
              ]
            },
            "id": 9595,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_tokenExtension",
            "nameLocation": "13063:15:27",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9567,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13110:8:27"
            },
            "parameters": {
              "id": 9566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9565,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "13087:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9595,
                  "src": "13079:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9564,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13079:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13078:17:27"
            },
            "returnParameters": {
              "id": 9570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9569,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9595,
                  "src": "13127:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9568,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13127:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13126:9:27"
            },
            "scope": 9615,
            "src": "13054:257:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              15406
            ],
            "body": {
              "id": 9613,
              "nodeType": "Block",
              "src": "13448:62:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "id": 9610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 9605,
                              "name": "_tokenData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19837,
                              "src": "13472:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenData_$19832_storage_$",
                                "typeString": "mapping(uint256 => struct ERC721Core.TokenData storage ref)"
                              }
                            },
                            "id": 9607,
                            "indexExpression": {
                              "id": 9606,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9598,
                              "src": "13483:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13472:19:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenData_$19832_storage",
                              "typeString": "struct ERC721Core.TokenData storage ref"
                            }
                          },
                          "id": 9608,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "13492:4:27",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19831,
                          "src": "13472:24:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "hexValue": "3136",
                          "id": 9609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13500:2:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_16_by_1",
                            "typeString": "int_const 16"
                          },
                          "value": "16"
                        },
                        "src": "13472:30:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      ],
                      "id": 9604,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "13465:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint80_$",
                        "typeString": "type(uint80)"
                      },
                      "typeName": {
                        "id": 9603,
                        "name": "uint80",
                        "nodeType": "ElementaryTypeName",
                        "src": "13465:6:27",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 9611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13465:38:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint80",
                      "typeString": "uint80"
                    }
                  },
                  "functionReturnParameters": 9602,
                  "id": 9612,
                  "nodeType": "Return",
                  "src": "13458:45:27"
                }
              ]
            },
            "documentation": {
              "id": 9596,
              "nodeType": "StructuredDocumentation",
              "src": "13317:59:27",
              "text": " @dev See {IERC721CreatorCore-tokenData}."
            },
            "functionSelector": "b4b5b48f",
            "id": 9614,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokenData",
            "nameLocation": "13390:9:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9599,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9598,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "13408:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 9614,
                  "src": "13400:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9597,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13400:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13399:17:27"
            },
            "returnParameters": {
              "id": 9602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9601,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9614,
                  "src": "13440:6:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint80",
                    "typeString": "uint80"
                  },
                  "typeName": {
                    "id": 9600,
                    "name": "uint80",
                    "nodeType": "ElementaryTypeName",
                    "src": "13440:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint80",
                      "typeString": "uint80"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13439:8:27"
            },
            "scope": 9615,
            "src": "13381:129:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 9616,
        "src": "286:13226:27",
        "usedErrors": []
      }
    ],
    "src": "33:13479:27"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.19+commit.7dd6d404.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.12",
  "updatedAt": "2023-03-22T17:07:39.674Z",
  "devdoc": {
    "details": "ERC721Creator implementation",
    "events": {
      "Approval(address,address,uint256)": {
        "details": "Emitted when `owner` enables `approved` to manage the `tokenId` token."
      },
      "ApprovalForAll(address,address,bool)": {
        "details": "Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."
      },
      "Transfer(address,address,uint256)": {
        "details": "Emitted when `tokenId` token is transferred from `from` to `to`."
      }
    },
    "kind": "dev",
    "methods": {
      "approve(address,uint256)": {
        "details": "See {IERC721-approve}."
      },
      "approveAdmin(address)": {
        "details": "See {IAdminControl-approveAdmin}."
      },
      "balanceOf(address)": {
        "details": "See {IERC721-balanceOf}."
      },
      "blacklistExtension(address)": {
        "details": "See {ICreatorCore-blacklistExtension}."
      },
      "burn(uint256)": {
        "details": "See {IERC721CreatorCore-burn}."
      },
      "getAdmins()": {
        "details": "See {IAdminControl-getAdmins}."
      },
      "getApproveTransfer()": {
        "details": "See {ICreatorCore-getApproveTransfer}."
      },
      "getApproved(uint256)": {
        "details": "See {IERC721-getApproved}."
      },
      "getExtensions()": {
        "details": "See {ICreatorCore-getExtensions}."
      },
      "getFeeBps(uint256)": {
        "details": "See {ICreatorCore-getFeeBps}."
      },
      "getFeeRecipients(uint256)": {
        "details": "See {ICreatorCore-getFeeRecipients}."
      },
      "getFees(uint256)": {
        "details": "See {ICreatorCore-getFees}."
      },
      "getRoyalties(uint256)": {
        "details": "See {ICreatorCore-getRoyalties}."
      },
      "isAdmin(address)": {
        "details": "See {IAdminControl-isAdmin}."
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC721-isApprovedForAll}."
      },
      "mintBase(address)": {
        "details": "See {IERC721CreatorCore-mintBase}."
      },
      "mintBase(address,string)": {
        "details": "See {IERC721CreatorCore-mintBase}."
      },
      "mintBaseBatch(address,string[])": {
        "details": "See {IERC721CreatorCore-mintBaseBatch}."
      },
      "mintBaseBatch(address,uint16)": {
        "details": "See {IERC721CreatorCore-mintBaseBatch}."
      },
      "mintExtension(address)": {
        "details": "See {IERC721CreatorCore-mintExtension}."
      },
      "mintExtension(address,string)": {
        "details": "See {IERC721CreatorCore-mintExtension}."
      },
      "mintExtension(address,uint80)": {
        "details": "See {IERC721CreatorCore-mintExtension}."
      },
      "mintExtensionBatch(address,string[])": {
        "details": "See {IERC721CreatorCore-mintExtensionBatch}."
      },
      "mintExtensionBatch(address,uint16)": {
        "details": "See {IERC721CreatorCore-mintExtensionBatch}."
      },
      "mintExtensionBatch(address,uint80[])": {
        "details": "See {IERC721CreatorCore-mintExtensionBatch}."
      },
      "name()": {
        "details": "See {IERC721Metadata-name}."
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "ownerOf(uint256)": {
        "details": "See {IERC721-ownerOf}."
      },
      "registerExtension(address,string)": {
        "details": "See {ICreatorCore-registerExtension}."
      },
      "registerExtension(address,string,bool)": {
        "details": "See {ICreatorCore-registerExtension}."
      },
      "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."
      },
      "revokeAdmin(address)": {
        "details": "See {IAdminControl-revokeAdmin}."
      },
      "royaltyInfo(uint256,uint256)": {
        "details": "See {ICreatorCore-royaltyInfo}."
      },
      "safeTransferFrom(address,address,uint256)": {
        "details": "See {IERC721-safeTransferFrom}."
      },
      "safeTransferFrom(address,address,uint256,bytes)": {
        "details": "See {IERC721-safeTransferFrom}."
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC721-setApprovalForAll}."
      },
      "setApproveTransfer(address)": {
        "details": "See {ICreatorCore-setApproveTransfer}."
      },
      "setApproveTransferExtension(bool)": {
        "details": "See {ICreatorCore-setApproveTransferExtension}."
      },
      "setBaseTokenURI(string)": {
        "details": "See {ICreatorCore-setBaseTokenURI}."
      },
      "setBaseTokenURIExtension(string)": {
        "details": "See {ICreatorCore-setBaseTokenURIExtension}."
      },
      "setBaseTokenURIExtension(string,bool)": {
        "details": "See {ICreatorCore-setBaseTokenURIExtension}."
      },
      "setMintPermissions(address,address)": {
        "details": "See {ICreatorCore-setMintPermissions}."
      },
      "setRoyalties(address[],uint256[])": {
        "details": "See {ICreatorCore-setRoyalties}."
      },
      "setRoyalties(uint256,address[],uint256[])": {
        "details": "See {ICreatorCore-setRoyalties}."
      },
      "setRoyaltiesExtension(address,address[],uint256[])": {
        "details": "See {ICreatorCore-setRoyaltiesExtension}."
      },
      "setTokenURI(uint256,string)": {
        "details": "See {ICreatorCore-setTokenURI}."
      },
      "setTokenURI(uint256[],string[])": {
        "details": "See {ICreatorCore-setTokenURI}."
      },
      "setTokenURIExtension(uint256,string)": {
        "details": "See {ICreatorCore-setTokenURIExtension}."
      },
      "setTokenURIExtension(uint256[],string[])": {
        "details": "See {ICreatorCore-setTokenURIExtension}."
      },
      "setTokenURIPrefix(string)": {
        "details": "See {ICreatorCore-setTokenURIPrefix}."
      },
      "setTokenURIPrefixExtension(string)": {
        "details": "See {ICreatorCore-setTokenURIPrefixExtension}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}."
      },
      "symbol()": {
        "details": "See {IERC721Metadata-symbol}."
      },
      "tokenData(uint256)": {
        "details": "See {IERC721CreatorCore-tokenData}."
      },
      "tokenExtension(uint256)": {
        "details": "See {ICreatorCore-tokenExtension}."
      },
      "tokenURI(uint256)": {
        "details": "See {IERC721Metadata-tokenURI}."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC721-transferFrom}."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      },
      "unregisterExtension(address)": {
        "details": "See {ICreatorCore-unregisterExtension}."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}