Overview ERC1155
Total Supply:
0

Holders:
23
Profile Summary
Blockchain:
Ethereum (1)

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

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 1000 runs

Created At:
Sat, 18 May 2024 20:02:35 GMT
OwnableDeferral.sol
@nftculture
nftc-contracts-private
contracts
access
v2
OwnableDeferral.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AuxProofInvalid_PhaseOne",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AuxProofInvalid_PhaseTwo",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CallerIsNotOwner",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CannotOverwriteData",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ClaimAlreadyMinted",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ExceedsBatchSize",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ExceedsSupplyCap",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "name": "InvalidAuxInfo",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidBurnAmount",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "InvalidExtraData",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "name": "InvalidLength",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidPayment",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidTokenId",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintNotAvailable",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "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": [],
    "name": "ContractURIUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "shares",
        "type": "uint256"
      }
    ],
    "name": "PayeeAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "oldOwner",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "PayeeTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "PaymentReceived",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "PaymentReleased",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "values",
        "type": "uint256[]"
      }
    ],
    "name": "TransferBatch",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "TransferSingle",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "value",
        "type": "string"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "URI",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      }
    ],
    "name": "balanceOfBatch",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenOwner",
        "type": "address"
      }
    ],
    "name": "balanceOwnedBy",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "values",
        "type": "uint256[]"
      }
    ],
    "name": "burnBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      },
      {
        "internalType": "string",
        "name": "auxInfo",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      }
    ],
    "name": "checkProof_PhaseOne",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      },
      {
        "internalType": "string",
        "name": "auxInfo",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      }
    ],
    "name": "checkProof_PhaseTwo",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "auxInfoAsInt",
        "type": "uint256"
      }
    ],
    "name": "decodeAuxInfoFromUint256",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "saltAsInt",
        "type": "uint256"
      }
    ],
    "name": "decodeSaltFromUint256",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      }
    ],
    "name": "deleteAux",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "auxInfo",
        "type": "string"
      }
    ],
    "name": "encodeAuxInfoToUint256",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "salt",
        "type": "string"
      }
    ],
    "name": "encodeSaltToUint256",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getArtURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "auxInfo",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      }
    ],
    "name": "getAuxillaryLeafFor",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "getMetadataProducer",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPhaseOnePricePerNft",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPhaseTwoPricePerNft",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPublicMintPricePerNft",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "wallet",
        "type": "address"
      }
    ],
    "name": "getTokensPurchased_PhaseOne",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "wallet",
        "type": "address"
      }
    ],
    "name": "getTokensPurchased_PhaseTwo",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      }
    ],
    "name": "hasAuxData",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isPhaseOneActive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isPhaseTwoActive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isPublicMintingActive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "nftcContractDefinition",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "name": "nftcTokenTypeDefinition",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint64",
            "name": "flavorId",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "maxSupply",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "totalMinted",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "totalSupply",
            "type": "uint64"
          },
          {
            "internalType": "address",
            "name": "provider",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "price",
            "type": "uint96"
          }
        ],
        "internalType": "struct FlavorInfo.FlavorInfoV4",
        "name": "emptyFlavor",
        "type": "tuple"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "nftcTokenTypeList",
    "outputs": [
      {
        "internalType": "uint64[]",
        "name": "",
        "type": "uint64[]"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "operatorFilteringEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "payee",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "phaseOneBatchSize",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      },
      {
        "internalType": "string",
        "name": "auxInfo",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "count",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "flavorId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "validationData",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "provider",
        "type": "address"
      }
    ],
    "name": "phaseOneMintTokens",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      },
      {
        "internalType": "string",
        "name": "auxInfo",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "count",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "flavorId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "validationData",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "provider",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "destination",
        "type": "address"
      }
    ],
    "name": "phaseOneMintTokensTo",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "phaseOnePricePerNft",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "phaseTwoBatchSize",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      },
      {
        "internalType": "string",
        "name": "auxInfo",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "count",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "flavorId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "validationData",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "provider",
        "type": "address"
      }
    ],
    "name": "phaseTwoMintTokens",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      },
      {
        "internalType": "string",
        "name": "auxInfo",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "count",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "flavorId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "validationData",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "provider",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "destination",
        "type": "address"
      }
    ],
    "name": "phaseTwoMintTokensTo",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "phaseTwoPricePerNft",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "name": "premintTokens",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "publicMintBatchSize",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "publicMintPricePerNft",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "publicMintTokens",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "publicMintTokensTo",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      }
    ],
    "name": "readFromAux",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "subscription",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "subscribe",
        "type": "bool"
      }
    ],
    "name": "registerForOperatorFiltering",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "releasable",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address payable",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "release",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "releaseToSelf",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "released",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "bookNumber",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "auxInfoAsInt",
        "type": "uint256"
      },
      {
        "internalType": "address[]",
        "name": "destinations",
        "type": "address[]"
      }
    ],
    "name": "reserveTokens",
    "outputs": [],
    "stateMutability": "payable",
    "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": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeBatchTransferFrom",
    "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": "uint256",
        "name": "amount",
        "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": "string",
        "name": "newuri",
        "type": "string"
      }
    ],
    "name": "setArtURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "__contractUri",
        "type": "string"
      }
    ],
    "name": "setContractURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newReceiver",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "newRoyalty",
        "type": "uint96"
      }
    ],
    "name": "setDefaultRoyalty",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "__phaseOneRoot",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "__phaseTwoRoot",
        "type": "bytes32"
      }
    ],
    "name": "setMerkleRoots",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "__metadataProducer",
        "type": "address"
      }
    ],
    "name": "setMetadataProducer",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "__phaseOnePricePerNft",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "__phaseTwoPricePerNft",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "__publicMintPricePerNft",
        "type": "uint256"
      }
    ],
    "name": "setMintingPrice",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "__phaseOneActive",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "__phaseTwoActive",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "__publicMintingActive",
        "type": "bool"
      }
    ],
    "name": "setMintingState",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "value",
        "type": "bool"
      }
    ],
    "name": "setOperatorFilteringEnabled",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "shares",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "extraData",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "auxInfo",
        "type": "string"
      },
      {
        "internalType": "bool",
        "name": "force",
        "type": "bool"
      }
    ],
    "name": "storeToAux",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "supportedPhases",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalMinted",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalReleased",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalShares",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalTokensExist",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address payable",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferPayee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "uri",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60c0604052732f950a29cb4a784a187032e9df33de289f1b46d460a09081526200002e90600790600162000843565b506040805160208101909152606481526200004e906008906001620008ad565b5060408051606081018252600080825260208201819052918101919091526200007c90601a906003620008ad565b503480156200008a57600080fd5b50604051806020016040528060008152506001601a805480602002602001604051908101604052809291908181526020018280548015620000eb57602002820191906000526020600020905b815481526020019060010190808311620000d6575b5050505050806000815181106200010657620001066200095a565b6020026020010151816001815181106200012457620001246200095a565b6020026020010151826002815181106200014257620001426200095a565b602002602001015180600373b5a9f4d240187a60a311a3fad7cc72dea59a06f887896007805480602002602001604051908101604052809291908181526020018280548015620001bc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200019d575b505050505060088054806020026020016040519081016040528092919081815260200182805480156200020f57602002820191906000526020600020905b815481526020019060010190808311620001fa575b5050505050306102ee83838051825114620002715760405162461bcd60e51b815260206004820181905260248201527f5061796d656e7453706c69747465723a206c656e677468206d69736d6174636860448201526064015b60405180910390fd5b6000825111620002c45760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f20706179656573000000000000604482015260640162000268565b60005b825181101562000330576200031b838281518110620002ea57620002ea6200095a565b60200260200101518383815181106200030757620003076200095a565b60200260200101516200040a60201b60201c565b80620003278162000986565b915050620002c7565b505050620003458282620005d760201b60201c565b505050506200035a81620006d860201b60201c565b50604080516064808252610ca082019092529060208201610c8080368337505081516200038f92600c925060200190620008f0565b506200039b33620006ea565b600f55620003a9816200073c565b50608052601355506014919091556015556001601855620003c96200076b565b5050600d805460ff60a01b1916600160a01b179055506040805160808101909152604f80825262000404919062005dc760208301396200078e565b62000b2f565b6001600160a01b038216620004625760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a207a65726f2061646472657373000000604482015260640162000268565b60008111620004b45760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f20736861726573000000000000604482015260640162000268565b6001600160a01b03821660009081526002602052604090205415620005265760405162461bcd60e51b815260206004820152602160248201527f5061796d656e7453706c69747465723a207061796565206861732073686172656044820152607360f81b606482015260840162000268565b60048054600181019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0384169081179091556000908152600260205260408120829055546200058e908290620009b8565b600055604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b6127106001600160601b0382161115620006475760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b606482015260840162000268565b6001600160a01b0382166200069f5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640162000268565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600555565b600b620006e6828262000a63565b5050565b600d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038116156200076857601180546001600160a01b0319166001600160a01b0383161790555b50565b6200078c733cc6cdda760b79bafa08df41ecfa224f810dceb66001620007c9565b565b60196200079c828262000a63565b506040517fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad96290600090a150565b6001600160a01b0390911690637d3e3dbe81620007f95782620007f25750634420e486620007f9565b5063a0af29035b8060e01b60005230600452826024526004600060446000806daaeb6d7670e522a718067333cd4e5af162000839578060005160e01c036200083957600080fd5b5060006024525050565b8280548282559060005260206000209081019282156200089b579160200282015b828111156200089b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000864565b50620008a992915062000943565b5090565b8280548282559060005260206000209081019282156200089b579160200282015b828111156200089b578251829060ff16905591602001919060010190620008ce565b8280548282559060005260206000209081019282156200089b579160200282015b828111156200089b57825182546001600160a01b03191660609190911c17825560209092019160019091019062000911565b5b80821115620008a9576000815560010162000944565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200099b576200099b62000970565b5060010190565b634e487b7160e01b600052604160045260246000fd5b80820180821115620009ce57620009ce62000970565b92915050565b600181811c90821680620009e957607f821691505b60208210810362000a0a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a5e57600081815260208120601f850160051c8101602086101562000a395750805b601f850160051c820191505b8181101562000a5a5782815560010162000a45565b5050505b505050565b81516001600160401b0381111562000a7f5762000a7f620009a2565b62000a978162000a908454620009d4565b8462000a10565b602080601f83116001811462000acf576000841562000ab65750858301515b600019600386901b1c1916600185901b17855562000a5a565b600085815260208120601f198616915b8281101562000b005788860151825594840194600190910190840162000adf565b508582101562000b1f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161526e62000b5960003960008181610efb015281816131040152613356015261526e6000f3fe6080604052600436106105255760003560e01c80638b83209b116102af578063b7c0b8e811610179578063e850216c116100d6578063f2fde38b1161008a578063fb796e6c1161006f578063fb796e6c14610fc8578063fd7f11ee14610fe9578063fdb8e8a2146107e557600080fd5b8063f2fde38b14610f88578063f5298aca14610fa857600080fd5b8063e8ad246f116100bb578063e8ad246f14610eec578063e985e9c514610f1f578063f242432a14610f6857600080fd5b8063e850216c14610ec4578063e8a3d48514610ed757600080fd5b8063ce99e37b1161012d578063db828e5d11610112578063db828e5d14610e85578063e228c6fe14610e9a578063e33b7de314610eaf57600080fd5b8063ce99e37b14610e51578063d5abeb0114610e7157600080fd5b8063bfbfa9651161015e578063bfbfa96514610de6578063c6625a9214610dfb578063ce7c2ac214610e1b57600080fd5b8063b7c0b8e814610da6578063be2100c514610dc657600080fd5b80639e04c45211610227578063a3f8eace116101db578063ac598c57116101c0578063ac598c5714610d50578063b640073914610d70578063b7438d6614610d9057600080fd5b8063a3f8eace14610d1b578063ab9f7e7514610d3b57600080fd5b8063a0e240621161020c578063a0e2406214610cba578063a22cb46514610cd0578063a2309ff814610cf057600080fd5b80639e04c45214610c845780639e75dd2c14610c9a57600080fd5b80639550398a1161027e57806396a968571161026357806396a9685714610c0e5780639852595c14610c2e5780639a48eb5114610c6457600080fd5b80639550398a14610bd95780639686323014610bf957600080fd5b80638b83209b14610b6d5780638d7f675b14610b8d5780638da5cb5b14610b9b578063938e3d7b14610bb957600080fd5b80633a98ef39116103f0578063585997e3116103685780636ef39a281161031c578063730ac12511610301578063730ac12514610b1f5780637fd0e4c414610b325780638534678714610b5857600080fd5b80636ef39a2814610af5578063715018a614610b0a57600080fd5b80635df20f301161034d5780635df20f3014610a95578063636af7e714610ab55780636b20c45414610ad557600080fd5b8063585997e314610a805780635b18692b146107e557600080fd5b80634cdb6f8d116103bf5780634f82db17116103a45780634f82db1714610987578063547117251461099a57806357bfc27f14610a6057600080fd5b80634cdb6f8d1461093a5780634e1273f41461095a57600080fd5b80633a98ef39146108e257806343a2b576146108f757806343b3763f1461090c57806346d8efad1461091a57600080fd5b806316f6fb4b1161049e5780632a55205a116104525780632eb2c2d6116104375780632eb2c2d61461088f578063307ce0d6146108af57806339388e4a146108c257600080fd5b80632a55205a1461083d5780632e4210e21461087c57600080fd5b8063191655871161048357806319165587146107c55780631df6051e146107e557806324cd7c28146107f957600080fd5b806316f6fb4b146106b9578063171fa11a1461062b57600080fd5b806304634d8d116104f55780630e89341c116104da5780630e89341c1461064c5780631487217d14610679578063163480091461069957600080fd5b806304634d8d1461060b57806307bc097d1461062b57600080fd5b8062fdd58e1461057357806301b1448d146105a657806301ffc9a7146105d657806303754c7a146105f657600080fd5b3661056e577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b34801561057f57600080fd5b5061059361058e366004614199565b611009565b6040519081526020015b60405180910390f35b3480156105b257600080fd5b506105c66105c13660046141c5565b6110b7565b604051901515815260200161059d565b3480156105e257600080fd5b506105c66105f13660046141f4565b6110c2565b610609610604366004614256565b6110eb565b005b34801561061757600080fd5b506106096106263660046142a9565b61111d565b34801561063757600080fd5b506105936106463660046142f3565b50600090565b34801561065857600080fd5b5061066c6106673660046141c5565b611133565b60405161059d9190614360565b34801561068557600080fd5b5061059361069436600461443a565b6112d4565b3480156106a557600080fd5b506106096106b43660046142f3565b6112df565b3480156106c557600080fd5b50604080517f7b0000000000000000000000000000000000000000000000000000000000000060208201527f226e636456657273696f6e223a312c000000000000000000000000000000000060218201527f22706861736573223a332c00000000000000000000000000000000000000000060308201527f2274797065223a22537461746963222c00000000000000000000000000000000603b8201527f226f70656e45646974696f6e223a66616c736500000000000000000000000000604b8201527f7d00000000000000000000000000000000000000000000000000000000000000605e8201528151808203603f018152605f90910190915261066c565b3480156107d157600080fd5b506106096107e03660046142f3565b611451565b3480156107f157600080fd5b506001610593565b34801561080557600080fd5b50610825610814366004614199565b50506011546001600160a01b031690565b6040516001600160a01b03909116815260200161059d565b34801561084957600080fd5b5061085d61085836600461446f565b611465565b604080516001600160a01b03909316835260208301919091520161059d565b61060961088a3660046144d3565b611522565b34801561089b57600080fd5b506106096108aa366004614611565b6115ab565b6106096108bd3660046146bf565b611607565b3480156108ce57600080fd5b506106096108dd3660046141c5565b611691565b3480156108ee57600080fd5b50600054610593565b34801561090357600080fd5b506105c66116a2565b61060961060436600461477c565b34801561092657600080fd5b506106096109353660046147cd565b6116b1565b34801561094657600080fd5b5061066c6109553660046141c5565b6116c3565b34801561096657600080fd5b5061097a610975366004614802565b6116ce565b60405161059d919061490a565b6106096109953660046144d3565b61180c565b3480156109a657600080fd5b506109eb6109b5366004614933565b506040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60405161059d9190600060c08201905067ffffffffffffffff808451168352806020850151166020840152806040850151166040840152806060850151166060840152506001600160a01b0360808401511660808301526bffffffffffffffffffffffff60a08401511660a083015292915050565b348015610a6c57600080fd5b5061066c610a7b3660046141c5565b611885565b348015610a8c57600080fd5b50610593611890565b348015610aa157600080fd5b5061066c610ab03660046141c5565b6118a5565b348015610ac157600080fd5b506105c6610ad0366004614950565b6118b0565b348015610ae157600080fd5b50610609610af03660046149c4565b61190c565b348015610b0157600080fd5b50601354610593565b348015610b1657600080fd5b5061060961199b565b610609610b2d366004614256565b6119af565b348015610b3e57600080fd5b506040805160008152602081019182905261059d91614a3a565b348015610b6457600080fd5b50601554610593565b348015610b7957600080fd5b50610825610b883660046141c5565b611aa2565b610609610604366004614a88565b348015610ba757600080fd5b50600d546001600160a01b0316610825565b348015610bc557600080fd5b50610609610bd4366004614ade565b611ad2565b348015610be557600080fd5b50610593610bf436600461443a565b611b19565b348015610c0557600080fd5b506105c6611b24565b348015610c1a57600080fd5b50610593610c293660046142f3565b611b2e565b348015610c3a57600080fd5b50610593610c493660046142f3565b6001600160a01b031660009081526003602052604090205490565b348015610c7057600080fd5b50610609610c7f36600461446f565b611b3c565b348015610c9057600080fd5b5061059360145481565b348015610ca657600080fd5b50610593610cb5366004614b20565b611b4e565b348015610cc657600080fd5b5061059360135481565b348015610cdc57600080fd5b50610609610ceb3660046147cd565b611b99565b348015610cfc57600080fd5b5060105468010000000000000000900467ffffffffffffffff16610593565b348015610d2757600080fd5b50610593610d363660046142f3565b611be3565b348015610d4757600080fd5b5061066c611bee565b348015610d5c57600080fd5b50610609610d6b366004614b6c565b611bf8565b348015610d7c57600080fd5b50610609610d8b366004614b98565b611c0e565b348015610d9c57600080fd5b5061059360155481565b348015610db257600080fd5b50610609610dc1366004614bef565b611c21565b348015610dd257600080fd5b506105c6610de1366004614950565b611c62565b348015610df257600080fd5b50601454610593565b348015610e0757600080fd5b50610609610e163660046142f3565b611cb4565b348015610e2757600080fd5b50610593610e363660046142f3565b6001600160a01b031660009081526002602052604090205490565b348015610e5d57600080fd5b50610609610e6c36600461443a565b611cc5565b348015610e7d57600080fd5b506064610593565b348015610e9157600080fd5b506105c6611ce3565b348015610ea657600080fd5b50610609611ced565b348015610ebb57600080fd5b50600154610593565b610609610ed23660046146bf565b611cf6565b348015610ee357600080fd5b5061066c611d6a565b348015610ef857600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610593565b348015610f2b57600080fd5b506105c6610f3a366004614c0a565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b348015610f7457600080fd5b50610609610f83366004614c38565b611dfc565b348015610f9457600080fd5b50610609610fa33660046142f3565b611e50565b348015610fb457600080fd5b50610609610fc3366004614ca1565b611edd565b348015610fd457600080fd5b50600d546105c690600160a01b900460ff1681565b348015610ff557600080fd5b50610609611004366004614cd6565b611f67565b60006001600160a01b03831661108c5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526009602090815260408083206001600160a01b03861684529091529020545b92915050565b60006110b182611f9f565b60006110cd8261200d565b806110dc57506110dc8261207b565b806110b157506110b1826120e2565b6040517fcb45d4ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611125612120565b61112f8282612128565b5050565b606061113e600f5490565b8214611176576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061118a6011546001600160a01b031690565b6040517f0e63540a000000000000000000000000000000000000000000000000000000008152306004820152602481018590526001600160a01b039190911690630e63540a90604401602060405180830381865afa1580156111f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112149190614d10565b90506112286011546001600160a01b031690565b6040517ff0f52cea00000000000000000000000000000000000000000000000000000000815230600482015267ffffffffffffffff8316602482015260448101859052600060648201526001600160a01b03919091169063f0f52cea90608401600060405180830381865afa1580156112a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112cd9190810190614d2d565b9392505050565b60006110b182612242565b6001600160a01b0381166113355760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a207a65726f20616464726573730000006044820152606401611083565b336000908152600260205260409020546113915760405162461bcd60e51b815260206004820181905260248201527f5061796d656e7453706c69747465723a206e6f206f776e6564207368617265736044820152606401611083565b6001600160a01b038116600090815260026020526040902054156114015760405162461bcd60e51b815260206004820152602160248201527f5061796d656e7453706c69747465723a207061796565206861732073686172656044820152607360f81b6064820152608401611083565b61140a8161227a565b7f6829b4029cd073199f80f49556d32953c9bc4e14d395388e678d2cc4604d481933604080516001600160a01b03928316815291841660208301520160405180910390a150565b611459612120565b61146281612353565b50565b60008281526006602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff169282019290925282916114e45750604080518082019091526005546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090611508906bffffffffffffffffffffffff1687614dbb565b6115129190614dd2565b91519350909150505b9250929050565b61152a61249a565b6012546115389060016124f3565b6115845760405162461bcd60e51b815260206004820152601160248201527f5068617365206f6e652073746f707065640000000000000000000000000000006044820152606401611083565b61159689898989898989898933612514565b6115a06001601855565b505050505050505050565b846001600160a01b03811633146115f257731e0049783f008a0085193e00003d00cd54003c7133146115f257600d54600160a01b900460ff16156115f2576115f2336126b3565b6115ff86868686866126f7565b505050505050565b61160f61249a565b60125461161d9060016124f3565b6116695760405162461bcd60e51b815260206004820152601160248201527f5068617365206f6e652073746f707065640000000000000000000000000000006044820152606401611083565b61167b8a8a8a8a8a8a8a8a8a8a612514565b6116856001601855565b50505050505050505050565b611699612120565b61146281612783565b60006116ac6127f7565b905090565b6116b9612120565b61112f8282612808565b60606110b18261287d565b606081518351146117475760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401611083565b6000835167ffffffffffffffff81111561176357611763614373565b60405190808252806020026020018201604052801561178c578160200160208202803683370190505b50905060005b8451811015611804576117d78582815181106117b0576117b0614df4565b60200260200101518583815181106117ca576117ca614df4565b6020026020010151611009565b8282815181106117e9576117e9614df4565b60209081029190910101526117fd81614e0a565b9050611792565b509392505050565b61181461249a565b6012546118229060026124f3565b61186e5760405162461bcd60e51b815260206004820152601160248201527f50686173652074776f2073746f707065640000000000000000000000000000006044820152606401611083565b61159689898989898989898933612931565b919050565b60606110b182612aca565b60006116ac60105467ffffffffffffffff1690565b60606110b182612b01565b600061190286866118f887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250612b2c915050565b6017929190612b5f565b9695505050505050565b6001600160a01b03831633148061192857506119288333610f3a565b61198b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401611083565b611996838383612b79565b505050565b6119a3612dd2565b6119ad6000612e2c565b565b6119b7612120565b6001808211156119da5760405163719b10a160e01b815260040160405180910390fd5b60646119e68284614dbb565b60105468010000000000000000900467ffffffffffffffff16611a099190614e23565b1115611a285760405163062aef3160e41b815260040160405180910390fd5b8315611a6957611a3785611f9f565b15611a5557604051637780002d60e01b815260040160405180910390fd5b611a6985611a6286612aca565b6000612e8b565b611a9b83836000818110611a7f57611a7f614df4565b9050602002016020810190611a9491906142f3565b8287612f92565b5050505050565b600060048281548110611ab757611ab7614df4565b6000918252602090912001546001600160a01b031692915050565b611ada612120565b61112f82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fb592505050565b60006110b182612fee565b60006116ac613026565b60006110b182600f54611009565b611b44612120565b61112f8282613037565b6000611b9184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250612b2c915050565b949350505050565b81731e0049783f008a0085193e00003d00cd54003c716001600160a01b03821614611bd957600d54600160a01b900460ff1615611bd957611bd9816126b3565b6119968383613055565b60006110b182613060565b60606116ac6130a1565b611c00612120565b601492909255601555601355565b611c16612120565b611996838383612e8b565b611c29612120565b600d8054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60006119028686611caa87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250612b2c915050565b6016929190612b5f565b611cbc612120565b611462816130b0565b611ccd612120565b600e611cd98282614eb6565b50611462816130ec565b60006116ac6130f8565b6119ad33612353565b611cfe61249a565b601254611d0c9060026124f3565b611d585760405162461bcd60e51b815260206004820152601160248201527f50686173652074776f2073746f707065640000000000000000000000000000006044820152606401611083565b61167b8a8a8a8a8a8a8a8a8a8a612931565b606060198054611d7990614e36565b80601f0160208091040260200160405190810160405280929190818152602001828054611da590614e36565b8015611df25780601f10611dc757610100808354040283529160200191611df2565b820191906000526020600020905b815481529060010190602001808311611dd557829003601f168201915b5050505050905090565b846001600160a01b0381163314611e4357731e0049783f008a0085193e00003d00cd54003c713314611e4357600d54600160a01b900460ff1615611e4357611e43336126b3565b6115ff8686868686613128565b611e58612dd2565b6001600160a01b038116611ed45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611083565b61146281612e2c565b6001600160a01b038316331480611ef95750611ef98333610f3a565b611f5c5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401611083565b6119968383836131b4565b611f6f612120565b6000611f7a8261334d565b9050611f8881600186613377565b9050611f9681600285613377565b60125550505050565b6000811580611fae5750606482115b15611fbb57506000919050565b6000600c611fca600185614f76565b81548110611fda57611fda614df4565b60009182526020909120015460601b6bffffffffffffffffffffffff19160361200557506000919050565b506001919050565b60006001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000148061207057506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b806110b157506110b1825b60006001600160e01b031982167f2a55205a0000000000000000000000000000000000000000000000000000000014806110b157507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146110b1565b60006001600160e01b031982167fe8a3d4850000000000000000000000000000000000000000000000000000000014806110b157506110b18261200d565b6119ad6133a0565b6127106bffffffffffffffffffffffff821611156121ae5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c655072696365000000000000000000000000000000000000000000006064820152608401611083565b6001600160a01b0382166122045760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401611083565b604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff9091166020909201829052600160a01b90910217600555565b600081516010146122685781604051633f1835e560e21b81526004016110839190614360565b61227182614f89565b60801c92915050565b6004546000036122875750565b60005b60045461229990600190614f76565b81101561112f57336001600160a01b0316600482815481106122bd576122bd614df4565b6000918252602090912001546001600160a01b0316036123415781600482815481106122eb576122eb614df4565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0394851617905533808352600290915260408083208054948716845290832093909355815290555b8061234b81614e0a565b91505061228a565b6001600160a01b0381166000908152600260205260409020546123b85760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f207368617265730000000000006044820152606401611083565b60006123c382613060565b9050806000036124155760405162461bcd60e51b815260206004820181905260248201527f5061796d656e7453706c69747465723a206e6f7420647565207061796d656e746044820152606401611083565b80600160008282546124279190614e23565b90915550506001600160a01b038216600090815260036020526040902080548201905561245482826133e4565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6002601854036124ec5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611083565b6002601855565b6000600183831c811690811461250a576000611b91565b6001949350505050565b8415806125215750600185115b1561253f5760405163719b10a160e01b815260040160405180910390fd5b8460145461254d9190614dbb565b341461256c5760405163078d696560e31b815260040160405180910390fd5b60648561258f60105467ffffffffffffffff680100000000000000009091041690565b6125999190614e23565b11156125b85760405163062aef3160e41b815260040160405180910390fd5b6125c186611f9f565b156125df57604051637780002d60e01b815260040160405180910390fd5b61261f8689898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250612e8b915050565b821561266b57600061263084612b01565b898960405160200161264493929190614fca565b6040516020818303038152906040529050612665338c8c848b8b8d896134fd565b50611685565b611685338b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508c9150829050886134fd565b69c617113400112233445560005230601a5280603a52600080604460166daaeb6d7670e522a718067333cd4e5afa6126ef573d6000803e3d6000fd5b6000603a5250565b6001600160a01b03851633148061271357506127138533610f3a565b6127765760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401611083565b611a9b8585858585613557565b8015806127905750606481115b156127b1576040516303d02bc560e11b815260048101829052602401611083565b600c6127be600183614f76565b815481106127ce576127ce614df4565b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905550565b6012546000906116ac9060016124f3565b6001600160a01b0390911690637d3e3dbe81612835578261282e5750634420e486612835565b5063a0af29035b8060e01b60005230600452826024526004600060446000806daaeb6d7670e522a718067333cd4e5af1612873578060005160e01c0361287357600080fd5b5060006024525050565b606081158061288c5750606482115b156128a557505060408051602081019091526000815290565b6000600c6128b4600185614f76565b815481106128c4576128c4614df4565b60009182526020909120015460601b90506bffffffffffffffffffffffff1981166128ff575050604080516020810190915260008152919050565b6040516bffffffffffffffffffffffff1982166020820152603401604051602081830303815290604052915050919050565b84158061293e5750600185115b1561295c5760405163719b10a160e01b815260040160405180910390fd5b8460155461296a9190614dbb565b34146129895760405163078d696560e31b815260040160405180910390fd5b6064856129ac60105467ffffffffffffffff680100000000000000009091041690565b6129b69190614e23565b11156129d55760405163062aef3160e41b815260040160405180910390fd5b6129de86611f9f565b156129fc57604051637780002d60e01b815260040160405180910390fd5b612a3c8689898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250612e8b915050565b8215612a82576000612a4d84612b01565b8989604051602001612a6193929190614fca565b6040516020818303038152906040529050612665338c8c848b8b8d896137be565b611685338b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508c9150829050886137be565b604051606082811b6bffffffffffffffffffffffff19166020830152906034015b6040516020818303038152906040529050919050565b6040516fffffffffffffffffffffffffffffffff19608083901b166020820152606090603001612aeb565b60008282604051602001612b41929190615001565b60405160208183030381529060405280519060200120905092915050565b8354600090612b7090858585613803565b95945050505050565b6001600160a01b038316612bdb5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401611083565b8051825114612c3d5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401611083565b6000339050612c6081856000868660405180602001604052806000815250613847565b60005b8351811015612d64576000848281518110612c8057612c80614df4565b602002602001015190506000848381518110612c9e57612c9e614df4565b60209081029190910181015160008481526009835260408082206001600160a01b038c168352909352919091205490915081811015612d2b5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401611083565b60009283526009602090815260408085206001600160a01b038b1686529091529092209103905580612d5c81614e0a565b915050612c63565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051612db592919061502e565b60405180910390a460408051602081019091526000905250505050565b600d546001600160a01b031633146119ad5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611083565b600d80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b821580612e985750606483115b15612eb9576040516303d02bc560e11b815260048101849052602401611083565b8151601414612ef657816040517fd1e5b9b40000000000000000000000000000000000000000000000000000000081526004016110839190614360565b80158015612f085750612f0883611f9f565b15612f3f576040517f7bd8604a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f4882615053565b600c612f55600186614f76565b81548110612f6557612f65614df4565b9060005260206000200160006101000a8154816001600160a01b03021916908360601c0217905550505050565b61199683612f9f600f5490565b8460405180602001604052806000815250613a00565b6019612fc18282614eb6565b506040517fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad96290600090a150565b600081516014146130145781604051633f1835e560e21b81526004016110839190614360565b61301d82615053565b60601c92915050565b6012546000906116ac9060026124f3565b81156130465761304682613b1c565b801561112f5761112f81613b26565b61112f338383613b30565b60008061306c60015490565b6130769047614e23565b90506112cd838261309c866001600160a01b031660009081526003602052604090205490565b613c24565b6060600e8054611d7990614e36565b6001600160a01b0381161561146257601180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600b61112f8282614eb6565b6012546000906116ac907f00000000000000000000000000000000000000000000000000000000000000006124f3565b6001600160a01b03851633148061314457506131448533610f3a565b6131a75760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401611083565b611a9b8585858585613c5f565b6001600160a01b0383166132165760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401611083565b33600061322284613e11565b9050600061322f84613e11565b905061324f83876000858560405180602001604052806000815250613847565b60008581526009602090815260408083206001600160a01b038a168452909152902054848110156132ce5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401611083565b60008681526009602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46040805160208101909152600090525b50505050505050565b6000806112cd817f0000000000000000000000000000000000000000000000000000000000000000855b6000811561338f57506001821b9290921791826112cd565b506001821b199290921691826112cd565b600d546001600160a01b031633146119ad576040517f6db2465f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b804710156134345760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611083565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613481576040519150601f19603f3d011682016040523d82523d6000602084013e613486565b606091505b50509050806119965760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611083565b61350c8787611caa8888612b2c565b613542576040517fc32e777e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61354d818484612f92565b5050505050505050565b81518351146135b95760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401611083565b6001600160a01b03841661361d5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401611083565b3361362c818787878787613847565b60005b845181101561375857600085828151811061364c5761364c614df4565b60200260200101519050600085838151811061366a5761366a614df4565b60209081029190910181015160008481526009835260408082206001600160a01b038e1683529093529190912054909150818110156136fe5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401611083565b60008381526009602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061373d908490614e23565b925050819055505050508061375190614e0a565b905061362f565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516137a892919061502e565b60405180910390a46115ff818787878787613e5c565b6137cd87876118f88888612b2c565b613542576040517f6538062700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b7085838686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509294939250506140019050565b6001600160a01b038516613924576000805b845181101561388b5783818151811061387457613874614df4565b602002602001015182019150806001019050613859565b5080601060088282829054906101000a900467ffffffffffffffff166138b1919061508b565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080601060008282829054906101000a900467ffffffffffffffff166138fc919061508b565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b6001600160a01b0384166115ff576000805b84518110156139685783818151811061395157613951614df4565b602002602001015182019150806001019050613936565b5060105467ffffffffffffffff808316911610156139b2576040517f2075cc1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601080548291906000906139d190849067ffffffffffffffff166150b3565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050505050565b6001600160a01b038416613a605760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401611083565b336000613a6c85613e11565b90506000613a7985613e11565b9050613a8a83600089858589613847565b60008681526009602090815260408083206001600160a01b038b16845290915281208054879290613abc908490614e23565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461334483600089898989614017565b6114626016829055565b6114626017829055565b816001600160a01b0316836001600160a01b031603613bb75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401611083565b6001600160a01b038381166000818152600a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600080546001600160a01b038516825260026020526040822054839190613c4b9086614dbb565b613c559190614dd2565b611b919190614f76565b6001600160a01b038416613cc35760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401611083565b336000613ccf85613e11565b90506000613cdc85613e11565b9050613cec838989858589613847565b60008681526009602090815260408083206001600160a01b038c16845290915290205485811015613d725760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401611083565b60008781526009602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290613db1908490614e23565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46115a0848a8a8a8a8a614017565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613e4b57613e4b614df4565b602090810291909101015292915050565b6001600160a01b0384163b156115ff5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190613ea090899089908890889088906004016150d4565b6020604051808303816000875af1925050508015613edb575060408051601f3d908101601f19168201909252613ed891810190615132565b60015b613f9057613ee761514f565b806308c379a003613f205750613efb61516b565b80613f065750613f22565b8060405162461bcd60e51b81526004016110839190614360565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401611083565b6001600160e01b0319811663bc197c8160e01b146133445760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401611083565b60008261400e8584614113565b14949350505050565b6001600160a01b0384163b156115ff5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061405b90899089908890889088906004016151f5565b6020604051808303816000875af1925050508015614096575060408051601f3d908101601f1916820190925261409391810190615132565b60015b6140a257613ee761514f565b6001600160e01b0319811663f23a6e6160e01b146133445760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401611083565b600081815b8451811015611804576141448286838151811061413757614137614df4565b6020026020010151614158565b91508061415081614e0a565b915050614118565b60008183106141745760008281526020849052604090206112cd565b5060009182526020526040902090565b6001600160a01b038116811461146257600080fd5b600080604083850312156141ac57600080fd5b82356141b781614184565b946020939093013593505050565b6000602082840312156141d757600080fd5b5035919050565b6001600160e01b03198116811461146257600080fd5b60006020828403121561420657600080fd5b81356112cd816141de565b60008083601f84011261422357600080fd5b50813567ffffffffffffffff81111561423b57600080fd5b6020830191508360208260051b850101111561151b57600080fd5b6000806000806060858703121561426c57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561429157600080fd5b61429d87828801614211565b95989497509550505050565b600080604083850312156142bc57600080fd5b82356142c781614184565b915060208301356bffffffffffffffffffffffff811681146142e857600080fd5b809150509250929050565b60006020828403121561430557600080fd5b81356112cd81614184565b60005b8381101561432b578181015183820152602001614313565b50506000910152565b6000815180845261434c816020860160208601614310565b601f01601f19169290920160200192915050565b6020815260006112cd6020830184614334565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff811182821017156143af576143af614373565b6040525050565b600067ffffffffffffffff8211156143d0576143d0614373565b50601f01601f191660200190565b600082601f8301126143ef57600080fd5b81356143fa816143b6565b6040516144078282614389565b82815285602084870101111561441c57600080fd5b82602086016020830137600092810160200192909252509392505050565b60006020828403121561444c57600080fd5b813567ffffffffffffffff81111561446357600080fd5b611b91848285016143de565b6000806040838503121561448257600080fd5b50508035926020909101359150565b60008083601f8401126144a357600080fd5b50813567ffffffffffffffff8111156144bb57600080fd5b60208301915083602082850101111561151b57600080fd5b600080600080600080600080600060e08a8c0312156144f157600080fd5b893567ffffffffffffffff8082111561450957600080fd5b6145158d838e01614211565b909b50995060208c013591508082111561452e57600080fd5b5061453b8c828d01614491565b90985096505060408a0135945060608a0135935060808a0135925060a08a0135915060c08a013561456b81614184565b809150509295985092959850929598565b600067ffffffffffffffff82111561459657614596614373565b5060051b60200190565b600082601f8301126145b157600080fd5b813560206145be8261457c565b6040516145cb8282614389565b83815260059390931b85018201928281019150868411156145eb57600080fd5b8286015b8481101561460657803583529183019183016145ef565b509695505050505050565b600080600080600060a0868803121561462957600080fd5b853561463481614184565b9450602086013561464481614184565b9350604086013567ffffffffffffffff8082111561466157600080fd5b61466d89838a016145a0565b9450606088013591508082111561468357600080fd5b61468f89838a016145a0565b935060808801359150808211156146a557600080fd5b506146b2888289016143de565b9150509295509295909350565b6000806000806000806000806000806101008b8d0312156146df57600080fd5b8a3567ffffffffffffffff808211156146f757600080fd5b6147038e838f01614211565b909c509a5060208d013591508082111561471c57600080fd5b506147298d828e01614491565b90995097505060408b0135955060608b0135945060808b0135935060a08b0135925060c08b013561475981614184565b915060e08b013561476981614184565b809150509295989b9194979a5092959850565b6000806000806080858703121561479257600080fd5b84359350602085013592506040850135915060608501356147b281614184565b939692955090935050565b8035801515811461188057600080fd5b600080604083850312156147e057600080fd5b82356147eb81614184565b91506147f9602084016147bd565b90509250929050565b6000806040838503121561481557600080fd5b823567ffffffffffffffff8082111561482d57600080fd5b818501915085601f83011261484157600080fd5b8135602061484e8261457c565b60405161485b8282614389565b83815260059390931b850182019282810191508984111561487b57600080fd5b948201945b838610156148a257853561489381614184565b82529482019490820190614880565b965050860135925050808211156148b857600080fd5b506148c5858286016145a0565b9150509250929050565b600081518084526020808501945080840160005b838110156148ff578151875295820195908201906001016148e3565b509495945050505050565b6020815260006112cd60208301846148cf565b67ffffffffffffffff8116811461146257600080fd5b60006020828403121561494557600080fd5b81356112cd8161491d565b60008060008060006060868803121561496857600080fd5b853567ffffffffffffffff8082111561498057600080fd5b61498c89838a01614211565b909750955060208801359150808211156149a557600080fd5b506149b288828901614491565b96999598509660400135949350505050565b6000806000606084860312156149d957600080fd5b83356149e481614184565b9250602084013567ffffffffffffffff80821115614a0157600080fd5b614a0d878388016145a0565b93506040860135915080821115614a2357600080fd5b50614a30868287016145a0565b9150509250925092565b6020808252825182820181905260009190848201906040850190845b81811015614a7c57835167ffffffffffffffff1683529284019291840191600101614a56565b50909695505050505050565b600080600080600060a08688031215614aa057600080fd5b8535945060208601359350604086013592506060860135614ac081614184565b91506080860135614ad081614184565b809150509295509295909350565b60008060208385031215614af157600080fd5b823567ffffffffffffffff811115614b0857600080fd5b614b1485828601614491565b90969095509350505050565b600080600060408486031215614b3557600080fd5b833567ffffffffffffffff811115614b4c57600080fd5b614b5886828701614491565b909790965060209590950135949350505050565b600080600060608486031215614b8157600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215614bad57600080fd5b83359250602084013567ffffffffffffffff811115614bcb57600080fd5b614bd7868287016143de565b925050614be6604085016147bd565b90509250925092565b600060208284031215614c0157600080fd5b6112cd826147bd565b60008060408385031215614c1d57600080fd5b8235614c2881614184565b915060208301356142e881614184565b600080600080600060a08688031215614c5057600080fd5b8535614c5b81614184565b94506020860135614c6b81614184565b93506040860135925060608601359150608086013567ffffffffffffffff811115614c9557600080fd5b6146b2888289016143de565b600080600060608486031215614cb657600080fd5b8335614cc181614184565b95602085013595506040909401359392505050565b600080600060608486031215614ceb57600080fd5b614cf4846147bd565b9250614d02602085016147bd565b9150614be6604085016147bd565b600060208284031215614d2257600080fd5b81516112cd8161491d565b600060208284031215614d3f57600080fd5b815167ffffffffffffffff811115614d5657600080fd5b8201601f81018413614d6757600080fd5b8051614d72816143b6565b604051614d7f8282614389565b828152866020848601011115614d9457600080fd5b611902836020830160208701614310565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176110b1576110b1614da5565b600082614def57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201614e1c57614e1c614da5565b5060010190565b808201808211156110b1576110b1614da5565b600181811c90821680614e4a57607f821691505b602082108103614e6a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561199657600081815260208120601f850160051c81016020861015614e975750805b601f850160051c820191505b818110156115ff57828155600101614ea3565b815167ffffffffffffffff811115614ed057614ed0614373565b614ee481614ede8454614e36565b84614e70565b602080601f831160018114614f195760008415614f015750858301515b600019600386901b1c1916600185901b1785556115ff565b600085815260208120601f198616915b82811015614f4857888601518255948401946001909101908401614f29565b5085821015614f665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156110b1576110b1614da5565b6000815160208301516fffffffffffffffffffffffffffffffff1980821693506010831015614fc25780818460100360031b1b83161693505b505050919050565b60008451614fdc818460208901614310565b605f60f81b908301908152838560018301376000930160010192835250909392505050565b60008351615013818460208801614310565b605f60f81b9201918252506001810191909152602101919050565b60408152600061504160408301856148cf565b8281036020840152612b7081856148cf565b805160208201516bffffffffffffffffffffffff198082169291906014831015614fc25760149290920360031b82901b161692915050565b67ffffffffffffffff8181168382160190808211156150ac576150ac614da5565b5092915050565b67ffffffffffffffff8281168282160390808211156150ac576150ac614da5565b60006001600160a01b03808816835280871660208401525060a0604083015261510060a08301866148cf565b828103606084015261511281866148cf565b905082810360808401526151268185614334565b98975050505050505050565b60006020828403121561514457600080fd5b81516112cd816141de565b600060033d11156151685760046000803e5060005160e01c5b90565b600060443d10156151795790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156151a957505050505090565b82850191508151818111156151c15750505050505090565b843d87010160208285010111156151db5750505050505090565b6151ea60208286010187614389565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261522d60a0830184614334565b97965050505050505056fea26469706673582212201ac2c1e58f046f55fef2854e57605cfb6e8dde73704e9d70c1f090bcda20cc5c64736f6c6343000813003368747470733a2f2f617277656176652e6e65742f644b4644636b4d5849794a306f73334b5a594c6832556e6739644a6435446f544d452d52653051374c41552f6f6e6e6674732d6165322e6a736f6e