Overview ERC721
Total Supply:
1 SALE-17286

Holders:
1
Profile Summary
Blockchain:
zkEvm Amoy (80002)

Contract Source Code Verified (Partial Match)
Contract Name:
SignatureERC721

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Created At:
Fri, 12 Apr 2024 16:31:20 GMT
SignatureERC721.sol
contracts
platform
nft
SignatureERC721.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "ApprovalCallerNotOwnerNorApproved",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ApprovalQueryForNonexistentToken",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BalanceQueryForZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CannotBeZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CannotIncreaseMaxSupply",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CannotUpdatePermanentURI",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InsufficientPayment",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidPaymentAmount",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidSignature",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidVoucher",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintERC2309QuantityExceedsLimit",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintToZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintZeroQuantity",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OwnerQueryForNonexistentToken",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OwnershipNotInitializedForExtraData",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferCallerNotOwnerNorApproved",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferFromIncorrectOwner",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferNotAllowed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferToNonERC721ReceiverImplementer",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferToZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "URIQueryForNonexistentToken",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ValueBelowCurrentSupply",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ValueCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ValueExceedsMaxSupply",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "VoucherIsExpired",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "VoucherNonceTooLow",
    "type": "error"
  },
  {
    "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": "string",
        "name": "newlyUpdatedURI",
        "type": "string"
      }
    ],
    "name": "BaseURIUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "fromTokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "toTokenId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "ConsecutiveTransfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "prevURI",
        "type": "string"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "newURI",
        "type": "string"
      }
    ],
    "name": "ContractURIUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "oldMaxSupply",
        "type": "uint128"
      },
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "newMaxSupply",
        "type": "uint128"
      }
    ],
    "name": "MaxSupplyUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferStarted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "_value",
        "type": "string"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "_id",
        "type": "uint256"
      }
    ],
    "name": "PermanentURI",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "SoulBoundToken",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "oldMaxSupply",
        "type": "uint128"
      },
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "newMaxSupply",
        "type": "uint128"
      }
    ],
    "name": "TokenMaxSupplyUpdated",
    "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"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "minter",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "nonce",
        "type": "uint256"
      }
    ],
    "name": "VoucherCancelled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "signature",
        "type": "bytes"
      }
    ],
    "name": "VoucherRedeemed",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "SIGNER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "acceptOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "quantity",
        "type": "uint256"
      }
    ],
    "name": "adminMintMultiple",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseURIPermanent",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "voucherNonce",
        "type": "uint256"
      }
    ],
    "name": "cancelVoucher",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentSupply",
    "outputs": [
      {
        "internalType": "uint128",
        "name": "",
        "type": "uint128"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "getLastNonce",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantAdminRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "admin_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "owner_",
        "type": "address"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol_",
        "type": "string"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "signer",
        "type": "address"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "soulbound_",
        "type": "bool"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "admin",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "owner_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "signer",
        "type": "address"
      },
      {
        "internalType": "uint128",
        "name": "maxSupply_",
        "type": "uint128"
      },
      {
        "internalType": "bool",
        "name": "soulBound_",
        "type": "bool"
      },
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "baseURI_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "baseContractURI_",
        "type": "string"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": "isInitialized",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxSupply",
    "outputs": [
      {
        "internalType": "uint128",
        "name": "",
        "type": "uint128"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "netRecipient",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "initialRecipient",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "initialRecipientAmount",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "quantity",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "nonce",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "expiry",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "price",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tokenId",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          }
        ],
        "internalType": "struct MintVoucherVerification.MintVoucher",
        "name": "voucher",
        "type": "tuple"
      },
      {
        "internalType": "bytes",
        "name": "signature",
        "type": "bytes"
      }
    ],
    "name": "mintWithVoucher",
    "outputs": [],
    "stateMutability": "payable",
    "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": "pendingOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "resetTokenRoyalty",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeAdminRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_salePrice",
        "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": "payable",
    "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": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "baseURI_",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "contractURI_",
        "type": "string"
      }
    ],
    "name": "setContractURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "feeNumerator",
        "type": "uint96"
      }
    ],
    "name": "setDefaultRoyalty",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint128",
        "name": "maxSupply_",
        "type": "uint128"
      }
    ],
    "name": "setMaxSupply",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "baseURI_",
        "type": "string"
      }
    ],
    "name": "setPermanentBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "feeNumerator",
        "type": "uint96"
      }
    ],
    "name": "setTokenRoyalty",
    "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": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "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": "transferFrom",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b506200001c6200002d565b6200002733620000ef565b6200016b565b600054610100900460ff16156200009a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000ed576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600d80546001600160a01b0319169055620001168162000119602090811b6200185317901c565b50565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b613eb2806200017b6000396000f3fe6080604052600436106102ff5760003560e01c80638a616bc011610190578063c4d66de8116100dc578063d5abeb0111610095578063e8a3d4851161006f578063e8a3d48514610927578063e985e9c51461093c578063ecc6aa2514610985578063f2fde38b146109a557600080fd5b8063d5abeb01146108c2578063de8817d9146108e9578063e30c39781461090957600080fd5b8063c4d66de81461080f578063c634b78e1461082f578063c87b56dd1461084f578063d4dfd6bc1461086f578063d53a822f14610882578063d547741f146108a257600080fd5b80639a19c7b011610149578063a22cb46511610123578063a22cb46514610786578063b009fdd5146107a6578063b88d4fde146107dc578063bed3ac50146107ef57600080fd5b80639a19c7b01461071d578063a1ebf35d1461073d578063a217fddf1461077157600080fd5b80638a616bc01461066a5780638ac068a21461068a5780638da5cb5b146106aa57806391d14854146106c8578063938e3d7b146106e857806395d89b411461070857600080fd5b8063392e53cd1161024f5780635944c7531161020857806370a08231116101e257806370a08231146105e8578063715018a614610608578063771282f61461061d57806379ba50971461065557600080fd5b80635944c753146105935780636352211e146105b35780636c0360eb146105d357600080fd5b8063392e53cd146104eb57806342842e0e1461050057806342966c6814610513578063485cc955146105335780634cd88b761461055357806355f804b31461057357600080fd5b806318160ddd116102bc5780632a55205a116102965780632a55205a1461044c5780632e4853941461048b5780632f2ff15d146104ab57806336568abe146104cb57600080fd5b806318160ddd146103e257806323b872dd14610409578063248a9ca31461041c57600080fd5b806301ffc9a71461030457806304634d8d1461033957806306fdde031461035b578063081812fc1461037d578063095ea7b3146103b55780631179ebad146103c8575b600080fd5b34801561031057600080fd5b5061032461031f36600461333a565b6109c5565b60405190151581526020015b60405180910390f35b34801561034557600080fd5b5061035961035436600461338a565b6109f4565b005b34801561036757600080fd5b50610370610a1e565b604051610330919061340d565b34801561038957600080fd5b5061039d610398366004613420565b610ab0565b6040516001600160a01b039091168152602001610330565b6103596103c3366004613439565b610af4565b3480156103d457600080fd5b506010546103249060ff1681565b3480156103ee57600080fd5b5060025460015403600019015b604051908152602001610330565b610359610417366004613463565b610b29565b34801561042857600080fd5b506103fb610437366004613420565b6000908152600b602052604090206001015490565b34801561045857600080fd5b5061046c61046736600461349f565b610b64565b604080516001600160a01b039093168352602083019190915201610330565b34801561049757600080fd5b506103596104a636600461356d565b610c12565b3480156104b757600080fd5b506103596104c63660046135a2565b610c47565b3480156104d757600080fd5b506103596104e63660046135a2565b610c6c565b3480156104f757600080fd5b50610324610ceb565b61035961050e366004613463565b610d03565b34801561051f57600080fd5b5061035961052e366004613420565b610d39565b34801561053f57600080fd5b5061035961054e3660046135c5565b610dd4565b34801561055f57600080fd5b5061035961056e3660046135ef565b610e95565b34801561057f57600080fd5b5061035961058e36600461356d565b610ede565b34801561059f57600080fd5b506103596105ae366004613653565b610f65565b3480156105bf57600080fd5b5061039d6105ce366004613420565b610f8c565b3480156105df57600080fd5b50610370610f97565b3480156105f457600080fd5b506103fb61060336600461368f565b611025565b34801561061457600080fd5b50610359611074565b34801561062957600080fd5b50600f5461063d906001600160801b031681565b6040516001600160801b039091168152602001610330565b34801561066157600080fd5b50610359611088565b34801561067657600080fd5b50610359610685366004613420565b6110ff565b34801561069657600080fd5b506103596106a53660046136c1565b61112c565b3480156106b657600080fd5b50600c546001600160a01b031661039d565b3480156106d457600080fd5b506103246106e33660046135a2565b611236565b3480156106f457600080fd5b5061035961070336600461356d565b611261565b34801561071457600080fd5b506103706112c3565b34801561072957600080fd5b5061035961073836600461368f565b6112d2565b34801561074957600080fd5b506103fb7fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f7081565b34801561077d57600080fd5b506103fb600081565b34801561079257600080fd5b506103596107a13660046136f5565b6112e5565b3480156107b257600080fd5b506103fb6107c136600461368f565b6001600160a01b03166000908152600e602052604090205490565b6103596107ea36600461372c565b61131a565b3480156107fb57600080fd5b5061035961080a366004613420565b611357565b34801561081b57600080fd5b5061035961082a36600461368f565b611397565b34801561083b57600080fd5b5061035961084a36600461368f565b6113e8565b34801561085b57600080fd5b5061037061086a366004613420565b6113fb565b61035961087d3660046137a8565b61147f565b34801561088e57600080fd5b5061035961089d366004613835565b611514565b3480156108ae57600080fd5b506103596108bd3660046135a2565b61158e565b3480156108ce57600080fd5b50600f5461063d90600160801b90046001600160801b031681565b3480156108f557600080fd5b50610359610904366004613852565b6115b3565b34801561091557600080fd5b50600d546001600160a01b031661039d565b34801561093357600080fd5b5061037061172d565b34801561094857600080fd5b506103246109573660046135c5565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b34801561099157600080fd5b506103596109a0366004613439565b61173a565b3480156109b157600080fd5b506103596109c036600461368f565b6117e2565b60006109d0826118a5565b806109df57506109df826118ca565b806109ee57506109ee82611918565b92915050565b600c546001600160a01b03163314610a1057610a10600061194d565b610a1a8282611957565b5050565b606060038054610a2d90613953565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5990613953565b8015610aa65780601f10610a7b57610100808354040283529160200191610aa6565b820191906000526020600020905b815481529060010190602001808311610a8957829003601f168201915b5050505050905090565b6000610abb82611a11565b610ad8576040516333d1c03960e21b815260040160405180910390fd5b506000908152600760205260409020546001600160a01b031690565b600d54600160a01b900460ff1615610b1f57604051638cd22d1960e01b815260040160405180910390fd5b610a1a8282611a46565b600d54600160a01b900460ff1615610b5457604051638cd22d1960e01b815260040160405180910390fd5b610b5f838383611ae6565b505050565b6000828152600a602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610bd95750604080518082019091526009546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610bf8906001600160601b0316876139a3565b610c0291906139c2565b91519350909150505b9250929050565b600c546001600160a01b03163314610c2e57610c2e600061194d565b610c3781610ede565b506010805460ff19166001179055565b6000828152600b6020526040902060010154610c628161194d565b610b5f8383611c77565b6001600160a01b0381163314610ce15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610a1a8282611cfd565b600080610cfa60005460ff1690565b60ff1611905090565b600d54600160a01b900460ff1615610d2e57604051638cd22d1960e01b815260040160405180910390fd5b610b5f838383611d64565b600f80546001600160801b0316906000610d52836139e4565b82546001600160801b039182166101009390930a92830291909202199091161790555060105460ff1615610dc657600f8054600160801b90046001600160801b0316906010610da0836139e4565b91906101000a8154816001600160801b0302191690836001600160801b03160217905550505b610dd1816001611d7f565b50565b600054610100900460ff16610dfb5760405162461bcd60e51b8152600401610cd890613a07565b6001600160a01b038216158015610e1957506001600160a01b038116155b15610e5a5760405162461bcd60e51b815260206004820152601160248201527034b73b30b634b230b236b4b737bbb732b960791b6044820152606401610cd8565b6001600160a01b03821615610e7457610e74600083611c77565b6001600160a01b03811615610e8c57610a1a81611eaf565b610a1a82611eaf565b600054610100900460ff16610ebc5760405162461bcd60e51b8152600401610cd890613a07565b6003610ec88382613a98565b506004610ed58282613a98565b50600180555050565b600c546001600160a01b03163314610efa57610efa600061194d565b60105460ff1615610f1e57604051633900de5360e01b815260040160405180910390fd5b6012610f2a8282613a98565b507f6741b2fc379fad678116fe3d4d4b9a1a184ab53ba36b86ad0fa66340b1ab41ad81604051610f5a919061340d565b60405180910390a150565b600c546001600160a01b03163314610f8157610f81600061194d565b610b5f838383611ec8565b60006109ee82611f93565b60128054610fa490613953565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd090613953565b801561101d5780601f10610ff25761010080835404028352916020019161101d565b820191906000526020600020905b81548152906001019060200180831161100057829003601f168201915b505050505081565b60006001600160a01b03821661104e576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526006602052604090205467ffffffffffffffff1690565b61107c612002565b6110866000611eaf565b565b600d5433906001600160a01b031681146110f65760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610cd8565b610dd181611eaf565b600c546001600160a01b0316331461111b5761111b600061194d565b6000908152600a6020526040812055565b600c546001600160a01b0316331461114857611148600061194d565b600f546001600160801b03600160801b9091048116908216111561117f5760405163c4469e5b60e01b815260040160405180910390fd5b600f546001600160801b03828116600160801b9092041614610dd157600f546001600160801b0390811690821610156111cb5760405163e9519eaf60e01b815260040160405180910390fd5b600f54604080516001600160801b03600160801b9093048316815291831660208301527f30009ebdfe108ec5238d9bfdb65c7cd05abaf5879f705788da7feda30d415fb4910160405180910390a1600f80546001600160801b03808416600160801b02911617905550565b6000918252600b602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600c546001600160a01b0316331461127d5761127d600061194d565b7fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a166011826040516112af929190613b58565b60405180910390a16011610a1a8282613a98565b606060048054610a2d90613953565b6112da612002565b610dd1600082611cfd565b600d54600160a01b900460ff161561131057604051638cd22d1960e01b815260040160405180910390fd5b610a1a828261205c565b600d54600160a01b900460ff161561134557604051638cd22d1960e01b815260040160405180910390fd5b611351848484846120c8565b50505050565b611361338261210c565b60408051338152602081018390527f3df5d8f8ab64f627d3b9fb62a5f047e29b7f4c287c9ce1b095ab5465a28ab34c9101610f5a565b600054610100900460ff166113be5760405162461bcd60e51b8152600401610cd890613a07565b610dd17fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f7082611c77565b6113f0612002565b610dd1600082611c77565b606061140682611a11565b61142357604051630a14c4b560e41b815260040160405180910390fd5b600061142d612160565b9050805160000361144d5760405180602001604052806000815250611478565b806114578461216f565b604051602001611468929190613bf7565b6040516020818303038152906040525b9392505050565b600f546001600160801b03600160801b82048116916114a49160608701359116613c26565b11156114c35760405163b4632d5160e01b815260040160405180910390fd5b600f8054606085013591906000906114e59084906001600160801b0316613c39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610b5f8383836121b3565b600054610100900460ff1661153b5760405162461bcd60e51b8152600401610cd890613a07565b600d805460ff60a01b1916600160a01b8315158102919091179182905560ff91041615610dd1576040517fc2812778e8871cf60af834692db801a7a79df8acead429394ed6c876b992418d90600090a150565b6000828152600b60205260409020600101546115a98161194d565b610b5f8383611cfd565b600054610100900460ff16158080156115d35750600054600160ff909116105b806115ed5750303b1580156115ed575060005460ff166001145b6116505760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610cd8565b6000805460ff191660011790558015611673576000805461ff0019166101001790555b60405163266c45bb60e11b81523090634cd88b76906116989088908890600401613c60565b600060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b505050506116db8a8a8a8a8a8a8a8a8a6122be565b8015611721576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b60118054610fa490613953565b600c546001600160a01b0316331461175657611756600061194d565b600f546001600160801b03600160801b820481169161177791849116613c26565b11156117965760405163b4632d5160e01b815260040160405180910390fd5b600f80548291906000906117b49084906001600160801b0316613c39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610a1a828261248d565b6117ea612002565b600d80546001600160a01b0383166001600160a01b0319909116811790915561181b600c546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160e01b03198216637965db0b60e01b14806109ee57506109ee82611918565b60006301ffc9a760e01b6001600160e01b0319831614806118fb57506380ac58cd60e01b6001600160e01b03198316145b806109ee5750506001600160e01b031916635b5e139f60e01b1490565b60006001600160e01b0319821663152a902d60e11b14806109ee57506301ffc9a760e01b6001600160e01b03198316146109ee565b610dd181336124a7565b6127106001600160601b03821611156119825760405162461bcd60e51b8152600401610cd890613c85565b6001600160a01b0382166119d85760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610cd8565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600955565b600081600111158015611a25575060015482105b80156109ee575050600090815260056020526040902054600160e01b161590565b6000611a5182610f8c565b9050336001600160a01b03821614611a8a57611a6d8133610957565b611a8a576040516367d9dca160e11b815260040160405180910390fd5b60008281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000611af182611f93565b9050836001600160a01b0316816001600160a01b031614611b245760405162a1148160e81b815260040160405180910390fd5b60008281526007602052604090208054611b508187335b6001600160a01b039081169116811491141790565b611b7b57611b5e8633610957565b611b7b57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516611ba257604051633a954ecd60e21b815260040160405180910390fd5b8015611bad57600082555b6001600160a01b038681166000908152600660205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260056020526040812091909155600160e11b84169003611c3f57600184016000818152600560205260408120549003611c3d576001548114611c3d5760008181526005602052604090208490555b505b83856001600160a01b0316876001600160a01b0316600080516020613e5d83398151915260405160405180910390a45b505050505050565b611c818282611236565b610a1a576000828152600b602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611cb93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611d078282611236565b15610a1a576000828152600b602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610b5f8383836040518060200160405280600081525061131a565b6000611d8a83611f93565b905080600080611da886600090815260076020526040902080549091565b915091508415611de857611dbd818433611b3b565b611de857611dcb8333610957565b611de857604051632ce44b5f60e11b815260040160405180910390fd5b8015611df357600082555b6001600160a01b038316600081815260066020526040902080546001600160801b030190554260a01b17600360e01b17600087815260056020526040812091909155600160e11b85169003611e7857600186016000818152600560205260408120549003611e76576001548114611e765760008181526005602052604090208590555b505b60405186906000906001600160a01b03861690600080516020613e5d833981519152908390a4505060028054600101905550505050565b600d80546001600160a01b0319169055610dd181611853565b6127106001600160601b0382161115611ef35760405162461bcd60e51b8152600401610cd890613c85565b6001600160a01b038216611f495760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606401610cd8565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600a90529190942093519051909116600160a01b029116179055565b60008180600111611fe957600154811015611fe95760008181526005602052604081205490600160e01b82169003611fe7575b80600003611478575060001901600081815260056020526040902054611fc6565b505b604051636f96cda160e11b815260040160405180910390fd5b600c546001600160a01b031633146110865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd8565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6120d3848484610b29565b6001600160a01b0383163b15611351576120ef84848484612500565b611351576040516368d2bf6b60e11b815260040160405180910390fd5b6001600160a01b0382166000908152600e60205260409020548111612144576040516313b42f4d60e31b815260040160405180910390fd5b6001600160a01b039091166000908152600e6020526040902055565b606060128054610a2d90613953565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806121895750819003601f19909101908152919050565b428360a0013510156121d85760405163455c7d6b60e11b815260040160405180910390fd5b61222f6121e8602085018561368f565b6121f8604086016020870161368f565b60408601356060870135608088013560a089013560c08a013560e08b01356122286101208d016101008e0161368f565b8b8b6125ec565b61223d33846080013561210c565b60006122516101208501610100860161368f565b6001600160a01b03160361226d5761226883612752565b612276565b61227683612874565b61228033846129f3565b7fd787a81976c7ae74647fc73d6574ab6333e0d888828e3b934b2570a70b78384e82826040516122b1929190613ccf565b60405180910390a1505050565b60405163485cc95560e01b81526001600160a01b03808b16600483015289166024820152309063485cc95590604401600060405180830381600087803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b505060405163d53a822f60e01b8152871515600482015230925063d53a822f9150602401600060405180830381600087803b15801561235957600080fd5b505af115801561236d573d6000803e3d6000fd5b505060405163189acdbd60e31b81526001600160a01b038a16600482015230925063c4d66de89150602401600060405180830381600087803b1580156123b257600080fd5b505af11580156123c6573d6000803e3d6000fd5b5050505083601390816123d99190613a98565b5060146123e68482613a98565b50856001600160801b0316600003612411576040516363868c5560e11b815260040160405180910390fd5b81511561245d5760126124248382613a98565b507f6741b2fc379fad678116fe3d4d4b9a1a184ab53ba36b86ad0fa66340b1ab41ad82604051612454919061340d565b60405180910390a15b600f80546001600160801b03808916600160801b02911617905561248081612a01565b6011906117219082613a98565b610a1a828260405180602001604052806000815250612a53565b6124b18282611236565b610a1a576124be81612ac0565b6124c9836020612ad2565b6040516020016124da929190613cfe565b60408051601f198184030181529082905262461bcd60e51b8252610cd89160040161340d565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290612535903390899088908890600401613d73565b6020604051808303816000875af1925050508015612570575060408051601f3d908101601f1916820190925261256d91810190613db0565b60015b6125ce573d80801561259e576040519150601f19603f3d011682016040523d82523d6000602084013e6125a3565b606091505b5080516000036125c6576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b604080516001600160a01b038d81166020808401919091528d821683850152606083018d9052608083018c905260a083018b905260c083018a905260e08301899052610100830188905290861661012083015233610140830152306101608301524661018080840191909152835180840390910181526101a0830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a3332000000006101c08401526101dc80840191909152835180840390910181526101fc909201909252805191012060006126fa8285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c6e92505050565b90506127267fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f7082611236565b61274357604051638baa579f60e01b815260040160405180910390fd5b50505050505050505050505050565b34612765606083013560c08401356139a3565b11156127845760405163cd1c886760e01b815260040160405180910390fd5b3415610dd15734816040013511156127af57604051637e2897ef60e11b815260040160405180910390fd5b60408101351561280f5760006127cb604083016020840161368f565b6001600160a01b0316036127f257604051631e7d738760e21b815260040160405180910390fd5b61280f612805604083016020840161368f565b8260400135612c92565b8060400135341115610dd157600061282a602083018361368f565b6001600160a01b03160361285157604051631e7d738760e21b815260040160405180910390fd5b610dd1612861602083018361368f565b61286f604084013534613dcd565b612c92565b6000612888606083013560c08401356139a3565b10156128a7576040516336b3edeb60e11b815260040160405180910390fd5b6128b9606082013560c08301356139a3565b816040013511156128dd57604051637e2897ef60e11b815260040160405180910390fd5b60408101351561295c5760006128f9604083016020840161368f565b6001600160a01b03160361292057604051631e7d738760e21b815260040160405180910390fd5b61295c33612934604084016020850161368f565b604084013561294b6101208601610100870161368f565b6001600160a01b0316929190612dab565b6040810135612973606083013560c08401356139a3565b1115610dd1576000612988602083018361368f565b6001600160a01b0316036129af57604051631e7d738760e21b815260040160405180910390fd5b610dd1336129c0602084018461368f565b60408401356129d7606086013560c08701356139a3565b6129e19190613dcd565b61294b6101208601610100870161368f565b610a1a82826060013561248d565b60606000825111612a2157604051806020016040528060008152506109ee565b81612a2d306014612ad2565b604051602001612a3e929190613bf7565b60405160208183030381529060405292915050565b612a5d8383612e05565b6001600160a01b0383163b15610b5f576001548281035b612a876000868380600101945086612500565b612aa4576040516368d2bf6b60e11b815260040160405180910390fd5b818110612a74578160015414612ab957600080fd5b5050505050565b60606109ee6001600160a01b03831660145b60606000612ae18360026139a3565b612aec906002613c26565b67ffffffffffffffff811115612b0457612b046134c1565b6040519080825280601f01601f191660200182016040528015612b2e576020820181803683370190505b509050600360fc1b81600081518110612b4957612b49613de0565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612b7857612b78613de0565b60200101906001600160f81b031916908160001a9053506000612b9c8460026139a3565b612ba7906001613c26565b90505b6001811115612c1f576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612bdb57612bdb613de0565b1a60f81b828281518110612bf157612bf1613de0565b60200101906001600160f81b031916908160001a90535060049490941c93612c1881613df6565b9050612baa565b5083156114785760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610cd8565b6000806000612c7d8585612edf565b91509150612c8a81612f21565b509392505050565b80471015612ce25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610cd8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612d2f576040519150601f19603f3d011682016040523d82523d6000602084013e612d34565b606091505b5050905080610b5f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610cd8565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261135190859061306b565b6001546000829003612e2a5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526006602090815260408083208054680100000000000000018802019055848352600590915281206001851460e11b4260a01b17831790558284019083908390600080516020613e5d8339815191528180a4600183015b818114612eb55780836000600080516020613e5d833981519152600080a4600101612e8f565b5081600003612ed657604051622e076360e81b815260040160405180910390fd5b60015550505050565b6000808251604103612f155760208301516040840151606085015160001a612f098782858561313d565b94509450505050610c0b565b50600090506002610c0b565b6000816004811115612f3557612f35613e0d565b03612f3d5750565b6001816004811115612f5157612f51613e0d565b03612f9e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610cd8565b6002816004811115612fb257612fb2613e0d565b03612fff5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610cd8565b600381600481111561301357613013613e0d565b03610dd15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610cd8565b60006130c0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166132019092919063ffffffff16565b805190915015610b5f57808060200190518101906130de9190613e23565b610b5f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610cd8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561317457506000905060036131f8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156131c8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166131f1576000600192509250506131f8565b9150600090505b94509492505050565b60606125e4848460008585600080866001600160a01b031685876040516132289190613e40565b60006040518083038185875af1925050503d8060008114613265576040519150601f19603f3d011682016040523d82523d6000602084013e61326a565b606091505b509150915061327b87838387613286565b979650505050505050565b606083156132f55782516000036132ee576001600160a01b0385163b6132ee5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610cd8565b50816125e4565b6125e4838381511561330a5781518083602001fd5b8060405162461bcd60e51b8152600401610cd8919061340d565b6001600160e01b031981168114610dd157600080fd5b60006020828403121561334c57600080fd5b813561147881613324565b80356001600160a01b038116811461336e57600080fd5b919050565b80356001600160601b038116811461336e57600080fd5b6000806040838503121561339d57600080fd5b6133a683613357565b91506133b460208401613373565b90509250929050565b60005b838110156133d85781810151838201526020016133c0565b50506000910152565b600081518084526133f98160208601602086016133bd565b601f01601f19169290920160200192915050565b60208152600061147860208301846133e1565b60006020828403121561343257600080fd5b5035919050565b6000806040838503121561344c57600080fd5b61345583613357565b946020939093013593505050565b60008060006060848603121561347857600080fd5b61348184613357565b925061348f60208501613357565b9150604084013590509250925092565b600080604083850312156134b257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156134f2576134f26134c1565b604051601f8501601f19908116603f0116810190828211818310171561351a5761351a6134c1565b8160405280935085815286868601111561353357600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261355e57600080fd5b611478838335602085016134d7565b60006020828403121561357f57600080fd5b813567ffffffffffffffff81111561359657600080fd5b6125e48482850161354d565b600080604083850312156135b557600080fd5b823591506133b460208401613357565b600080604083850312156135d857600080fd5b6135e183613357565b91506133b460208401613357565b6000806040838503121561360257600080fd5b823567ffffffffffffffff8082111561361a57600080fd5b6136268683870161354d565b9350602085013591508082111561363c57600080fd5b506136498582860161354d565b9150509250929050565b60008060006060848603121561366857600080fd5b8335925061367860208501613357565b915061368660408501613373565b90509250925092565b6000602082840312156136a157600080fd5b61147882613357565b80356001600160801b038116811461336e57600080fd5b6000602082840312156136d357600080fd5b611478826136aa565b8015158114610dd157600080fd5b803561336e816136dc565b6000806040838503121561370857600080fd5b61371183613357565b91506020830135613721816136dc565b809150509250929050565b6000806000806080858703121561374257600080fd5b61374b85613357565b935061375960208601613357565b925060408501359150606085013567ffffffffffffffff81111561377c57600080fd5b8501601f8101871361378d57600080fd5b61379c878235602084016134d7565b91505092959194509250565b60008060008385036101408112156137bf57600080fd5b610120808212156137cf57600080fd5b859450840135905067ffffffffffffffff808211156137ed57600080fd5b818601915086601f83011261380157600080fd5b81358181111561381057600080fd5b87602082850101111561382257600080fd5b6020830194508093505050509250925092565b60006020828403121561384757600080fd5b8135611478816136dc565b60008060008060008060008060006101208a8c03121561387157600080fd5b61387a8a613357565b985061388860208b01613357565b975061389660408b01613357565b96506138a460608b016136aa565b95506138b260808b016136ea565b945060a08a013567ffffffffffffffff808211156138cf57600080fd5b6138db8d838e0161354d565b955060c08c01359150808211156138f157600080fd5b6138fd8d838e0161354d565b945060e08c013591508082111561391357600080fd5b61391f8d838e0161354d565b93506101008c013591508082111561393657600080fd5b506139438c828d0161354d565b9150509295985092959850929598565b600181811c9082168061396757607f821691505b60208210810361398757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156139bd576139bd61398d565b500290565b6000826139df57634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160801b038216806139fd576139fd61398d565b6000190192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f821115610b5f57600081815260208120601f850160051c81016020861015613a795750805b601f850160051c820191505b81811015611c6f57828155600101613a85565b815167ffffffffffffffff811115613ab257613ab26134c1565b613ac681613ac08454613953565b84613a52565b602080601f831160018114613afb5760008415613ae35750858301515b600019600386901b1c1916600185901b178555611c6f565b600085815260208120601f198616915b82811015613b2a57888601518255948401946001909101908401613b0b565b5085821015613b485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000808454613b6a81613953565b8060408601526060600180841660008114613b8c5760018114613ba657613bd7565b60ff1985168884015283151560051b880183019550613bd7565b8960005260208060002060005b86811015613bce5781548b8201870152908401908201613bb3565b8a018501975050505b50505050508281036020840152613bee81856133e1565b95945050505050565b60008351613c098184602088016133bd565b835190830190613c1d8183602088016133bd565b01949350505050565b808201808211156109ee576109ee61398d565b6001600160801b03818116838216019080821115613c5957613c5961398d565b5092915050565b604081526000613c7360408301856133e1565b8281036020840152613bee81856133e1565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613d368160178501602088016133bd565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613d678160288401602088016133bd565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613da6908301846133e1565b9695505050505050565b600060208284031215613dc257600080fd5b815161147881613324565b818103818111156109ee576109ee61398d565b634e487b7160e01b600052603260045260246000fd5b600081613e0557613e0561398d565b506000190190565b634e487b7160e01b600052602160045260246000fd5b600060208284031215613e3557600080fd5b8151611478816136dc565b60008251613e528184602087016133bd565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122034812ff1cc84e5fec2d51417904a72c195140da957eab5f00e0dc17c0e408e2464736f6c63430008100033