Overview ERC721
Total Supply:
3,333,000,000,000,000,000,000 MOR

Holders:
293
Profile Summary
Blockchain:
C-Chain (43114)

Contract Source Code Verified (Exact Match)
Contract Name:
Majinoors

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Created At:
Sat, 20 Apr 2024 23:57:52 GMT
IERC721Metadata.sol
@openzeppelin
contracts
token
ERC721
extensions
IERC721Metadata.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AlreadyExists",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidOwner",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidRecipient",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidSender",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotFound",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Unauthorized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UnsafeRecipient",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "AccountExcludeFromFee",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "pair",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "value",
        "type": "bool"
      }
    ],
    "name": "AutomatedMarketMakerPairUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "ERC20Transfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "ERC721Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "SwapTokensAmountUpdated",
    "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": "id",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "activePhase",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amountOrId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "artist",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "availableIds",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseTokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "phase",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "quantity",
        "type": "uint256"
      }
    ],
    "name": "canMintAmountInPhase",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_contract",
        "type": "address"
      }
    ],
    "name": "contractNFTBalance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "distributionEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "distributorGas",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_contract",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "enoughTokenBalance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "excludeFromFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "phase",
        "type": "uint256"
      },
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "internalType": "uint256",
        "name": "quantity",
        "type": "uint256"
      }
    ],
    "name": "grantPhaseAccess",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "phase",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasPhaseAccess",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "hiddenMetadataUri",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "isAutomatedMarketMakerPairs",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "isExcludedFromFee",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isInMintPhase",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "joePair",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "joeRouter",
    "outputs": [
      {
        "internalType": "contract IJoeRouter",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "liquidityTokensSent",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "majin",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "majinLiquidity",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxMintPerTx",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxMintable",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "quantity",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mintHasStarted",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "minted",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "phaseDuration",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "phaseMintsRemaining",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "phases",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "price",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "publicMinted",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "reflectionFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "revealMetadata",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "revealed",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "revokeOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "royaltyAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_salePrice",
        "type": "uint256"
      }
    ],
    "name": "royaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_artist",
        "type": "address"
      }
    ],
    "name": "setArtist",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pair",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "value",
        "type": "bool"
      }
    ],
    "name": "setAutomatedMarketMakerPair",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_baseURI",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "minPeriod",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minDistribution",
        "type": "uint256"
      }
    ],
    "name": "setDistributionCriteria",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "setDistributionStatus",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "gas",
        "type": "uint256"
      }
    ],
    "name": "setDistributorGas",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_hiddenUri",
        "type": "string"
      }
    ],
    "name": "setHiddenURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_reflectionFee",
        "type": "uint256"
      }
    ],
    "name": "setReflectionFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_startTime",
        "type": "uint256"
      }
    ],
    "name": "setStartTime",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "setSwapTokensAtAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "target",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "state",
        "type": "bool"
      }
    ],
    "name": "setWhitelist",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "startTime",
    "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": "swapTokensAtAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalAvailableIds",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "totalNFTsOwned",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalNativeSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tradingRoyalty",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "unsafeInitialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "whitelist",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60e06040523480156200001157600080fd5b5060405162005de338038062005de383398101604081905262000034916200082f565b60408051808201825260098152684d616a696e6f6f727360b81b6020808301919091528251808401909352600383526226a7a960e91b90830152906012610d0584806001600160a01b0381166200009e576040516349e27cff60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001620000f5868262000905565b50600262000104858262000905565b5060ff8316608081905260c08390526200012090600a62000ae4565b6200012c908362000af5565b60a05250506017805473ca9460e7d4122456abd8acfc048b77c65826d49d6001600160a01b031991821617909155602380547373f49d00ac1b520f94d11248808c40774aeb08029083161790556024805473f261ebd3e99deaee37f4e1e15d7c05c9476e6d4e908316179055602180547360ae616a2155ee3d9a68541ba4544862310933d49216821790556040805163c45a015560e01b8152905130955091935063c45a015592506004808201926020929091908290030181865afa158015620001fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022091906200082f565b6001600160a01b031663c9c6539682602160009054906101000a90046001600160a01b03166001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a991906200082f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031d91906200082f565b602280546001600160a01b0319166001600160a01b03929092169190911790556040516200034b9062000821565b604051809103906000f08015801562000368573d6000803e3d6000fd5b50602580546001600160a01b039283166001600160a01b03199091161781556101f4601d8190558383166000818152602760209081526040808320805460ff199081166001908117909255601754891685528285208054821683179055602280548a16865260268552838620805483168417905595855282852080548216831790557f673668fde1539921a3231470503848f53fc614c057a2345bc3a2f36758a6d3ac805482168317905594549097168352602882529182902080548416871790556706f05b59d3b20000601e55620493e0601f55845460ff60a81b1916600160a81b1790945567016345785d8a0000601655636626a5a0601c55601392909255603260145560056015556106726012556010805482169055601b805490911690931790925581516060810190925260358083529062005dae90830139600f90620004b4908262000905565b506001600160a01b038082166000908152600560209081526040808320602180548616855292529091206000199055601754620004f392169062000506565b5050610708601a55600160195562000b83565b620005106200058e565b6200051c908262000af5565b6001600160a01b038316600090815260046020526040812080549091906200054690849062000b0f565b9091555062000557905082620005a6565b6200058a5760005b8181101562000588576200057383620005d2565b806200057f8162000b25565b9150506200055f565b505b5050565b6000608051600a620005a1919062000ae4565b905090565b6001600160a01b0381166000908152600c602052604081205460ff1680620005cc5750813b5b92915050565b6001600160a01b038116620005fa57604051634e46966960e11b815260040160405180910390fd5b600d5460009081036200067e57600380546001019081905560c0511015620006745760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74206d696e74206d6f7265207468616e20676976656e2073757070604482015262363c9760e91b606482015260840160405180910390fd5b50600354620006db565b600d8054620006909060019062000b41565b81548110620006a357620006a362000b57565b90600052602060002001549050600d805480620006c457620006c462000b6d565b600190038181906000526020600020016000905590555b6000818152600860205260409020546001600160a01b031615620007125760405163119b4fd360e11b815260040160405180910390fd5b6200071e82826200075a565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600081815260086020526040902080546001600160a01b0319166001600160a01b0384161790556200078a823b90565b15620007e2576001600160a01b0382166000818152600a60209081526040822080546001818101835582855292842001859055929091529054620007cf919062000b41565b6000828152600b60205260409020555050565b6001600160a01b0382166000818152600960209081526040822080546001818101835582855292842001859055929091529054620007cf919062000b41565b610c76806200513883390190565b6000602082840312156200084257600080fd5b81516001600160a01b03811681146200085a57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200088c57607f821691505b602082108103620008ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200058857600081815260208120601f850160051c81016020861015620008dc5750805b601f850160051c820191505b81811015620008fd57828155600101620008e8565b505050505050565b81516001600160401b0381111562000921576200092162000861565b620009398162000932845462000877565b84620008b3565b602080601f831160018114620009715760008415620009585750858301515b600019600386901b1c1916600185901b178555620008fd565b600085815260208120601f198616915b82811015620009a25788860151825594840194600190910190840162000981565b5085821015620009c15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000a2857816000190482111562000a0c5762000a0c620009d1565b8085161562000a1a57918102915b93841c9390800290620009ec565b509250929050565b60008262000a4157506001620005cc565b8162000a5057506000620005cc565b816001811462000a69576002811462000a745762000a94565b6001915050620005cc565b60ff84111562000a885762000a88620009d1565b50506001821b620005cc565b5060208310610133831016604e8410600b841016171562000ab9575081810a620005cc565b62000ac58383620009e7565b806000190482111562000adc5762000adc620009d1565b029392505050565b60006200085a60ff84168362000a30565b8082028115828204841417620005cc57620005cc620009d1565b80820180821115620005cc57620005cc620009d1565b60006001820162000b3a5762000b3a620009d1565b5060010190565b81810381811115620005cc57620005cc620009d1565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60805160a05160c05161457062000bc86000396000818161092701526135e30152600081816105990152611c5e0152600081816106e701526121e901526145706000f3fe6080604052600436106104405760003560e01c80638660832611610234578063ac5553ce1161012e578063d9adc191116100b6578063e547be691161007a578063e547be6914610d56578063e985e9c514610d76578063ef1f3ebb14610db1578063f2fde38b14610de7578063ff6728ad14610e0757600080fd5b8063d9adc19114610c9c578063dd62ed3e14610cd2578063de7fcb1d14610d0a578063df8408fe14610d20578063e2f4560514610d4057600080fd5b8063bbaac02f116100fd578063bbaac02f14610c07578063c87b56dd14610c27578063d4c9753314610c47578063d528d11814610c67578063d547cfb714610c8757600080fd5b8063ac5553ce14610b9b578063afa4f3b214610bb1578063b76b8ced14610bd1578063b88d4fde14610be757600080fd5b8063a0712d68116101bc578063a4f4f8af11610180578063a4f4f8af14610ae6578063a4fd255914610afc578063a61d3ef214610b1c578063a9059cbb14610b36578063a96fd9d514610b5657600080fd5b8063a0712d6814610a66578063a21b5fe914610a79578063a22cb46514610a91578063a35e7c0814610ab1578063a45ba8e714610ad157600080fd5b80639a7a23d6116102035780639a7a23d6146109ca5780639b19251a146109ea5780639c34a49b14610a1a5780639dfafd0a14610a30578063a035b1fe14610a5057600080fd5b8063866083261461095f5780638da5cb5b146109805780639182a9df146109a057806395d89b41146109b557600080fd5b80633e0a322d1161034557806359f571e8116102cd57806378e979251161029157806378e97925146108d35780637c6e551d146108e95780637ffaf092146108ff57806381456f481461091557806383ad79941461094957600080fd5b806359f571e81461083057806360e71962146108505780636352211e146108665780636bca89cb1461088657806370a08231146108a657600080fd5b80634f9e623d116103145780634f9e623d1461079157806351830227146107a65780635342acb4146107c057806353d6fd59146107f057806355f804b31461081057600080fd5b80633e0a322d1461071b57806342842e0e1461073b57806343bc16121461075b5780634f02c4201461077b57600080fd5b80631ae24366116103c8578063255fe84711610397578063255fe847146106315780632a55205a146106615780632b968958146106a05780632d48e896146106b5578063313ce567146106d557600080fd5b80631ae24366146105bb5780632154dc39146105db57806323b872dd146105f1578063244ce7db1461061157600080fd5b8063095ea7b31161040f578063095ea7b3146105105780630a2d140c146105305780630ca793c3146105525780630e1b26c61461057257806318160ddd1461058757600080fd5b806301ffc9a71461044c57806304bdc76b1461048157806306fdde03146104a0578063081812fc146104c257600080fd5b3661044757005b600080fd5b34801561045857600080fd5b5061046c610467366004613b31565b610e3f565b60405190151581526020015b60405180910390f35b34801561048d57600080fd5b50600d545b604051908152602001610478565b3480156104ac57600080fd5b506104b5610eac565b6040516104789190613b72565b3480156104ce57600080fd5b506104f86104dd366004613ba5565b6006602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610478565b34801561051c57600080fd5b5061046c61052b366004613bd3565b610f3a565b34801561053c57600080fd5b5061055061054b366004613c0d565b61108a565b005b34801561055e57600080fd5b5061046c61056d366004613c2a565b6110d2565b34801561057e57600080fd5b50610492611100565b34801561059357600080fd5b506104927f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c757600080fd5b5061046c6105d6366004613bd3565b611166565b3480156105e757600080fd5b5061049260125481565b3480156105fd57600080fd5b5061046c61060c366004613c62565b6111c2565b34801561061d57600080fd5b5061055061062c366004613ba5565b611282565b34801561063d57600080fd5b5061046c61064c366004613c92565b60286020526000908152604090205460ff1681565b34801561066d57600080fd5b5061068161067c366004613caf565b611303565b604080516001600160a01b039093168352602083019190915201610478565b3480156106ac57600080fd5b5061055061133d565b3480156106c157600080fd5b506105506106d0366004613caf565b6113a3565b3480156106e157600080fd5b506107097f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610478565b34801561072757600080fd5b50610550610736366004613ba5565b611437565b34801561074757600080fd5b50610550610756366004613c62565b611466565b34801561076757600080fd5b506017546104f8906001600160a01b031681565b34801561078757600080fd5b5061049260035481565b34801561079d57600080fd5b50610550611541565b3480156107b257600080fd5b5060105461046c9060ff1681565b3480156107cc57600080fd5b5061046c6107db366004613c92565b60276020526000908152604090205460ff1681565b3480156107fc57600080fd5b5061055061080b366004613cd1565b61161b565b34801561081c57600080fd5b5061055061082b366004613d51565b611670565b34801561083c57600080fd5b506021546104f8906001600160a01b031681565b34801561085c57600080fd5b50610492601f5481565b34801561087257600080fd5b506104f8610881366004613ba5565b6116aa565b34801561089257600080fd5b506022546104f8906001600160a01b031681565b3480156108b257600080fd5b506104926108c1366004613c92565b60046020526000908152604090205481565b3480156108df57600080fd5b50610492601c5481565b3480156108f557600080fd5b5061049260135481565b34801561090b57600080fd5b5061049260145481565b34801561092157600080fd5b506104927f000000000000000000000000000000000000000000000000000000000000000081565b34801561095557600080fd5b50610492601d5481565b34801561096b57600080fd5b5060255461046c90600160a81b900460ff1681565b34801561098c57600080fd5b506000546104f8906001600160a01b031681565b3480156109ac57600080fd5b506105506116e5565b3480156109c157600080fd5b506104b561171e565b3480156109d657600080fd5b506105506109e5366004613cd1565b61172b565b3480156109f657600080fd5b5061046c610a05366004613c92565b600c6020526000908152604090205460ff1681565b348015610a2657600080fd5b5061049260205481565b348015610a3c57600080fd5b506024546104f8906001600160a01b031681565b348015610a5c57600080fd5b5061049260165481565b610550610a74366004613ba5565b6117fe565b348015610a8557600080fd5b50601c5442101561046c565b348015610a9d57600080fd5b50610550610aac366004613cd1565b611b07565b348015610abd57600080fd5b506023546104f8906001600160a01b031681565b348015610add57600080fd5b506104b5611b73565b348015610af257600080fd5b5061049260115481565b348015610b0857600080fd5b50610550610b17366004613de6565b611b80565b348015610b2857600080fd5b50601b5461046c9060ff1681565b348015610b4257600080fd5b5061046c610b51366004613bd3565b611c20565b348015610b6257600080fd5b5061046c610b71366004613eac565b60009182526018602090815260408084206001600160a01b03939093168452919052902054151590565b348015610ba757600080fd5b50610492601a5481565b348015610bbd57600080fd5b50610550610bcc366004613ba5565b611c2d565b348015610bdd57600080fd5b5061049260195481565b348015610bf357600080fd5b50610550610c02366004613ed1565b611d81565b348015610c1357600080fd5b50610550610c22366004613d51565b611e4c565b348015610c3357600080fd5b506104b5610c42366004613ba5565b611e82565b348015610c5357600080fd5b50610550610c62366004613c92565b611f58565b348015610c7357600080fd5b50610492610c82366004613ba5565b611fa4565b348015610c9357600080fd5b506104b5611fc5565b348015610ca857600080fd5b50610492610cb7366004613c92565b6001600160a01b031660009081526009602052604090205490565b348015610cde57600080fd5b50610492610ced366004613f70565b600560209081526000928352604080842090915290825290205481565b348015610d1657600080fd5b5061049260155481565b348015610d2c57600080fd5b50610550610d3b366004613cd1565b611fd2565b348015610d4c57600080fd5b50610492601e5481565b348015610d6257600080fd5b50610550610d71366004613ba5565b6120d9565b348015610d8257600080fd5b5061046c610d91366004613f70565b600760209081526000928352604080842090915290825290205460ff1681565b348015610dbd57600080fd5b50610492610dcc366004613c92565b6001600160a01b03166000908152600a602052604090205490565b348015610df357600080fd5b50610550610e02366004613c92565b612146565b348015610e1357600080fd5b50610492610e22366004613eac565b601860209081526000928352604080842090915290825290205481565b60006001600160e01b031982166380ac58cd60e01b1480610e7057506001600160e01b03198216635b5e139f60e01b145b80610e8b57506001600160e01b0319821663152a902d60e11b145b80610ea657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60018054610eb990613f9e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee590613f9e565b8015610f325780601f10610f0757610100808354040283529160200191610f32565b820191906000526020600020905b815481529060010190602001808311610f1557829003601f168201915b505050505081565b60006003548211158015610f4e5750600082115b15611025576000828152600860205260409020546001600160a01b0316338114801590610f9f57506001600160a01b038116600090815260076020908152604080832033845290915290205460ff16155b15610fbc576040516282b42960e81b815260040160405180910390fd5b60008381526006602090815260409182902080546001600160a01b0319166001600160a01b038881169182179092559251868152908416917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350611081565b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50600192915050565b6000546001600160a01b031633146110b4576040516282b42960e81b815260040160405180910390fd5b60258054911515600160a81b0260ff60a81b19909216919091179055565b60008381526018602090815260408083206001600160a01b03861684529091529020548111155b9392505050565b600061110e601c5442101590565b6111185750600090565b6000601c54426111289190613fee565b90506000601a548261113a9190614001565b611145906001614023565b9050601954811115610ea65760195461115f906001614023565b9250505090565b6000806111716121e2565b6001600160a01b0385166000908152600a60205260409020546111949190614036565b6001600160a01b0385166000908152600460205260409020546111b79190613fee565b909211159392505050565b6001600160a01b0383166000908152600560209081526040808320338452909152812054828110156112335760405162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b41030b63637bbb0b731b29760591b60448201526064015b60405180910390fd5b600019811461126b576112468382613fee565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b611276858585612214565b50600195945050505050565b6000546001600160a01b031633146112ac576040516282b42960e81b815260040160405180910390fd5b620b71b081106112fe5760405162461bcd60e51b815260206004820152601960248201527f4761732069732067726561746572207468616e206c696d697400000000000000604482015260640161122a565b601f55565b60175460135460009182916001600160a01b0390911690612710906113289086614036565b6113329190614001565b915091509250929050565b6000546001600160a01b03163314611367576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b031916815560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3565b6000546001600160a01b031633146113cd576040516282b42960e81b815260040160405180910390fd5b6025546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561141b57600080fd5b505af115801561142f573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314611461576040516282b42960e81b815260040160405180910390fd5b601c55565b611472338484846128cf565b6001600160a01b0382163b1580159061151e5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af11580156114ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611511919061404d565b6001600160e01b03191614155b1561153c57604051633da6393160e01b815260040160405180910390fd5b505050565b6000546001600160a01b0316331461156b576040516282b42960e81b815260040160405180910390fd5b601b5460ff166115b35760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015260640161122a565b601c546115c39062015180614023565b42116116115760405162461bcd60e51b815260206004820152601a60248201527f4c657473207761697420612064617920616e64207365652e2e2e000000000000604482015260640161122a565b611619612a08565b565b6000546001600160a01b03163314611645576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461169a576040516282b42960e81b815260040160405180910390fd5b600e6116a682826140b0565b5050565b6000818152600860205260409020546001600160a01b0316806116e05760405163c5723b5160e01b815260040160405180910390fd5b919050565b6000546001600160a01b0316331461170f576040516282b42960e81b815260040160405180910390fd5b6010805460ff19166001179055565b60028054610eb990613f9e565b6000546001600160a01b03163314611755576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03821661179a5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161122a565b6001600160a01b038216600081815260286020908152604091829020805460ff19168515159081179091558251938452908301527fef0b71f3a695ce5a89064cc2745d0c503cf766ed985e781607660be6010b8e9091015b60405180910390a15050565b601c544210156118505760405162461bcd60e51b815260206004820152601c60248201527f4d696e74696e6720686173206e6f742073746172746564207965742e00000000604482015260640161122a565b600081116118905760405162461bcd60e51b815260206004820152600d60248201526c043616e6e6f74206d696e74203609c1b604482015260640161122a565b6015548111156118e25760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206d696e742074686174206d616e79206174206f6e63652e0000604482015260640161122a565b601254816011546118f39190614023565b11156119355760405162461bcd60e51b81526020600482015260116024820152702334b734b9b432b21036b4b73a34b7339760791b604482015260640161122a565b6016546119429082614036565b3410156119895760405162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b41020ab20ac1039b2b73a1760591b604482015260640161122a565b60015b6019548111611a36578061199e611100565b03611a24576119ae8133846110d2565b6119b782612b10565b6040516020016119c79190614170565b604051602081830303815290604052906119f45760405162461bcd60e51b815260040161122a9190613b72565b50600081815260186020908152604080832033845290915281208054849290611a1e908490613fee565b90915550505b80611a2e816141b6565b91505061198c565b508060116000828254611a499190614023565b90915550611a5990503382612ba3565b3360009081526026602052604090205460ff16611ae15760255433600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201526001600160a01b03909116906314b6ca9690604401600060405180830381600087803b158015611ace57600080fd5b505af1925050508015611adf575060015b505b60125460115410158015611af75750601b5460ff165b15611b0457611b04612a08565b50565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600f8054610eb990613f9e565b6000546001600160a01b03163314611baa576040516282b42960e81b815260040160405180910390fd5b60005b8251811015611c1a5760008481526018602052604081208451849290869085908110611bdb57611bdb6141cf565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080611c12906141b6565b915050611bad565b50505050565b60006110f9338484612214565b6000546001600160a01b03163314611c57576040516282b42960e81b815260040160405180910390fd5b611c8260647f0000000000000000000000000000000000000000000000000000000000000000614001565b811115611ce35760405162461bcd60e51b815260206004820152602960248201527f416d6f756e742063616e6e6f74206265206f766572203125206f6620746f7461604482015268361039bab838363c9760b91b606482015260840161122a565b67016345785d8a0000811015611d465760405162461bcd60e51b815260206004820152602260248201527f416d6f756e742073686f756c64206265206d6f7265207468616e20302e31204d60448201526127a960f11b606482015260840161122a565b601e8190556040518181527f28ea3a80049e637c2f1bf658d47a07f688bea6e931f3c1930cf4a4daf97b18609060200160405180910390a150565b611d8d338686866128cf565b6001600160a01b0384163b15801590611e275750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290611dd79033908a908990899089906004016141e5565b6020604051808303816000875af1158015611df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1a919061404d565b6001600160e01b03191614155b15611e4557604051633da6393160e01b815260040160405180910390fd5b5050505050565b6000546001600160a01b03163314611e76576040516282b42960e81b815260040160405180910390fd5b600f6116a682826140b0565b60105460609060ff161515600003611f2657600f8054611ea190613f9e565b80601f0160208091040260200160405190810160405280929190818152602001828054611ecd90613f9e565b8015611f1a5780601f10611eef57610100808354040283529160200191611f1a565b820191906000526020600020905b815481529060010190602001808311611efd57829003601f168201915b50505050509050919050565b600e611f3183612b10565b604051602001611f42929190614239565b6040516020818303038152906040529050919050565b6000546001600160a01b03163314611f82576040516282b42960e81b815260040160405180910390fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600d8181548110611fb457600080fd5b600091825260209091200154905081565b600e8054610eb990613f9e565b6000546001600160a01b03163314611ffc576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03821660009081526027602052604090205481151560ff90911615150361207d5760405162461bcd60e51b815260206004820152602860248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015267277374617475732760c01b606482015260840161122a565b6001600160a01b038216600081815260276020908152604091829020805460ff19168515159081179091558251938452908301527ff1bf6e8d74573725f529c5a07fb53656b9c97a10602a75631f57c1be07769e2b91016117f2565b6000546001600160a01b03163314612103576040516282b42960e81b815260040160405180910390fd5b6101f48111156121415760405162461bcd60e51b81526020600482015260096024820152684d6178206f6620352560b81b604482015260640161122a565b601d55565b6000546001600160a01b03163314612170576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116612197576040516349e27cff60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600061220f7f0000000000000000000000000000000000000000000000000000000000000000600a6143a4565b905090565b601b54600090309060ff16156122c157806001600160a01b0316856001600160a01b0316148061224b57506001600160a01b038516155b6122ab5760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f74207472616e73666572206672616374696f6e616c20756e74696c60448201526a1036b4b73a1032b732399760a91b606482015260840161122a565b6122b6858585612c16565b5060019150506110f9565b601e546001600160a01b0382166000908152600460205260409020541080159081906122f75750602554600160a01b900460ff16155b801561231b57506001600160a01b03851660009081526028602052604090205460ff165b15612633576025805460ff60a01b1916600160a01b1790556001600160a01b03821660009081526004602052604090205461235590612e7c565b601d546001600160a01b03831631906000036123ab576017546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156123a5573d6000803e3d6000fd5b50612624565b601754601454601d546001600160a01b03909216916108fc916123cd91614023565b6014546123da9085614036565b6123e49190614001565b6040518115909202916000818181858888f1935050505015801561240c573d6000803e3d6000fd5b50600061242460026001600160a01b03861631614001565b905080156126225761243581612f87565b6023546040516370a0823160e01b81526001600160a01b03868116600483015260009216906370a0823190602401602060405180830381865afa158015612480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a491906143b3565b90506001600160a01b038516316124bb81836130d5565b602480546040516370a0823160e01b81526001600160a01b0389811660048301526000939216916370a082319101602060405180830381865afa158015612506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252a91906143b3565b6024805460255460405163a9059cbb60e01b81526001600160a01b039182166004820152928301849052929350919091169063a9059cbb906044016020604051808303816000875af1158015612584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a891906143cc565b5060255460405163b6b55f2560e01b8152600481018390526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b1580156125ef57600080fd5b505af1158015612603573d6000803e3d6000fd5b5050505080602060008282546126199190614023565b90915550505050505b505b506025805460ff60a01b191690555b6001600160a01b03861660009081526027602052604090205460ff168061267257506001600160a01b03851660009081526027602052604090205460ff165b1561268857612682868686612c16565b50612713565b6001600160a01b03851660009081526028602052604090205460ff16806126c757506001600160a01b03861660009081526028602052604090205460ff165b156127065760006126d7856131d4565b90506126ed87876126e88489613fee565b612c16565b508015612682576126ff878483612c16565b5050612713565b612711868686612c16565b505b6001600160a01b03861660009081526026602052604090205460ff166127a5576025546001600160a01b03878116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561279257600080fd5b505af19250505080156127a3575060015b505b6001600160a01b03851660009081526026602052604090205460ff16612837576025546001600160a01b03868116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561282457600080fd5b505af1925050508015612835575060015b505b602554600160a81b900460ff16801561285a5750602554600160a01b900460ff16155b1561127657602554601f546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916128979160040190815260200190565b600060405180830381600087803b1580156128b157600080fd5b505af19250505080156128c2575060015b5050600195945050505050565b6128db84848484613228565b6001600160a01b03831660009081526026602052604090205460ff1661296d576025546001600160a01b03848116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561295a57600080fd5b505af192505050801561296b575060015b505b6001600160a01b03821660009081526026602052604090205460ff16611c1a576025546001600160a01b03838116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156129ec57600080fd5b505af19250505080156129fd575060015b15611c1a5750505050565b601b5460ff16612a505760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015260640161122a565b306000612a5b6121e2565b601254612a689190614036565b6001600160a01b0380841660008181526004602081905260408083208690556021549051637c8d9fb960e11b81529596509093169363f91b3f7293923192612abc9288928892829161dead914291016143e9565b60606040518083038185885af1158015612ada573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612aff9190614424565b5050601b805460ff19169055505050565b60606000612b1d836134a2565b600101905060008167ffffffffffffffff811115612b3d57612b3d613d0a565b6040519080825280601f01601f191660200182016040528015612b67576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612b7157509392505050565b612bab6121e2565b612bb59082614036565b6001600160a01b03831660009081526004602052604081208054909190612bdd908490614023565b90915550612bec90508261357a565b6116a65760005b8181101561153c57612c04836135a3565b80612c0e816141b6565b915050612bf3565b600080612c216121e2565b6001600160a01b0386811660009081526004602052604080822054928816825290205491925090863b15612cd1576001600160a01b0387166000908152600a6020526040812054612c73908590614036565b612c7d9084613fee565b905085811015612ccf5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420656e6f75676820746f6b656e2062616c616e63652e00000000000000604482015260640161122a565b505b6001600160a01b03871660009081526004602052604081208054879290612cf9908490613fee565b90915550506001600160a01b0386166000908152600460205260409020805486019055612d258761357a565b1580612d4857506001600160a01b03871660009081526009602052604090205415155b15612db0576001600160a01b038716600090815260046020526040812054612d71908590614001565b612d7b8585614001565b612d859190613fee565b905060005b81811015612dad57612d9b89613736565b80612da5816141b6565b915050612d8a565b50505b612db98661357a565b612e22576000612dc98483614001565b6001600160a01b038816600090815260046020526040902054612ded908690614001565b612df79190613fee565b905060005b81811015612e1f57612e0d886135a3565b80612e17816141b6565b915050612dfc565b50505b856001600160a01b0316876001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148787604051612e6791815260200190565b60405180910390a35060019695505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612eb157612eb16141cf565b6001600160a01b03928316602091820292909201810191909152602154604080516339d94ae160e11b8152905191909316926373b295c29260048083019391928290030181865afa158015612f0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2e9190614452565b81600181518110612f4157612f416141cf565b6001600160a01b039283166020918202929092010152602154604051633b158ab160e11b815291169063762b1562906114019085906000908690309042906004016144b3565b6040805160028082526060820183526000926020830190803683375050602154604080516339d94ae160e11b815290519394506001600160a01b03909116926373b295c2925060048083019260209291908290030181865afa158015612ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130159190614452565b81600081518110613028576130286141cf565b6001600160a01b039283166020918202929092010152602354825191169082906001908110613059576130596141cf565b6001600160a01b03928316602091820292909201015260215460405163a2a1623d60e01b815291169063a2a1623d90849061309f906000908690309042906004016144ef565b6000604051808303818588803b1580156130b857600080fd5b505af11580156130cc573d6000803e3d6000fd5b50505050505050565b60235460215460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af115801561312a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314e91906143cc565b50602154602354604051637c8d9fb960e11b81526001600160a01b039283169263f91b3f72928692613191929091169086906000908190309042906004016143e9565b60606040518083038185885af11580156131af573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e459190614424565b600080612710601d54846131e89190614036565b6131f29190614001565b90506000612710601454856132079190614036565b6132119190614001565b9050600061321f8284614023565b95945050505050565b6000818152600860205260409020546001600160a01b038481169116146132915760405162461bcd60e51b815260206004820152601b60248201527f53656e646572206973206e6f74206f776e6572206f66204e46542e0000000000604482015260640161122a565b6001600160a01b0382166132e75760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742073656e6420746f206e756c6c20616464726573732e00000000604482015260640161122a565b826001600160a01b0316846001600160a01b0316148061332c57506001600160a01b0380841660009081526007602090815260408083209388168352929052205460ff165b8061335057506000818152600660205260409020546001600160a01b038581169116145b61339c5760405162461bcd60e51b815260206004820152601960248201527f4f70657261746f72206973206e6f7420617070726f7665642e00000000000000604482015260640161122a565b6133a46121e2565b6001600160a01b038416600090815260046020526040812080549091906133cc908490613fee565b909155506133da90506121e2565b6001600160a01b0383166000908152600460205260409020805490910190556134038382613890565b61340d8282613a60565b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4816001600160a01b0316836001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148761348b6121e2565b60405190815260200160405180910390a350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106134e15772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061350d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061352b57662386f26fc10000830492506010015b6305f5e1008310613543576305f5e100830492506008015b612710831061355757612710830492506004015b60648310613569576064830492506002015b600a8310610ea65760010192915050565b6001600160a01b0381166000908152600c602052604081205460ff1680610ea65750813b610ea6565b6001600160a01b0381166135ca57604051634e46966960e11b815260040160405180910390fd5b600d5460009081036136655760038054600101908190557f0000000000000000000000000000000000000000000000000000000000000000101561365c5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74206d696e74206d6f7265207468616e20676976656e2073757070604482015262363c9760e91b606482015260840161122a565b506003546136ba565b600d805461367590600190613fee565b81548110613685576136856141cf565b90600052602060002001549050600d8054806136a3576136a3614524565b600190038181906000526020600020016000905590555b6000818152600860205260409020546001600160a01b0316156136f05760405163119b4fd360e11b815260040160405180910390fd5b6136fa8282613a60565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b03811661375d57604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0381166000908152600960205260408120805461378390600190613fee565b81548110613793576137936141cf565b9060005260206000200154905060096000836001600160a01b03166001600160a01b031681526020019081526020016000208054806137d4576137d4614524565b600082815260208082208301600019908101839055909201909255828252600b815260408083208390556008825280832080546001600160a01b031990811690915560069092528083208054909216909155600d80546001810182559083527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb501839055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000823b15613963576001600160a01b0383166000908152600a6020526040902080546138bf90600190613fee565b815481106138cf576138cf6141cf565b60009182526020808320909101546001600160a01b0386168352600a82526040808420868552600b90935290922054815492935083928110613913576139136141cf565b60009182526020808320909101929092556001600160a01b0385168152600a9091526040902080548061394857613948614524565b60019003818190600052602060002001600090559055613a29565b6001600160a01b0383166000908152600960205260409020805461398990600190613fee565b81548110613999576139996141cf565b60009182526020808320909101546001600160a01b0386168352600982526040808420868552600b909352909220548154929350839281106139dd576139dd6141cf565b60009182526020808320909101929092556001600160a01b0385168152600990915260409020805480613a1257613a12614524565b600190038181906000526020600020016000905590555b6000828152600b6020908152604080832054938352808320939093559281526006909252902080546001600160a01b031916905550565b600081815260086020526040902080546001600160a01b0319166001600160a01b038416179055813b15613ade576001600160a01b0382166000818152600a60209081526040822080546001818101835582855292842001859055929091529054613acb9190613fee565b6000828152600b60205260409020555050565b6001600160a01b0382166000818152600960209081526040822080546001818101835582855292842001859055929091529054613acb9190613fee565b6001600160e01b031981168114611b0457600080fd5b600060208284031215613b4357600080fd5b81356110f981613b1b565b60005b83811015613b69578181015183820152602001613b51565b50506000910152565b6020815260008251806020840152613b91816040850160208701613b4e565b601f01601f19169190910160400192915050565b600060208284031215613bb757600080fd5b5035919050565b6001600160a01b0381168114611b0457600080fd5b60008060408385031215613be657600080fd5b8235613bf181613bbe565b946020939093013593505050565b8015158114611b0457600080fd5b600060208284031215613c1f57600080fd5b81356110f981613bff565b600080600060608486031215613c3f57600080fd5b833592506020840135613c5181613bbe565b929592945050506040919091013590565b600080600060608486031215613c7757600080fd5b8335613c8281613bbe565b92506020840135613c5181613bbe565b600060208284031215613ca457600080fd5b81356110f981613bbe565b60008060408385031215613cc257600080fd5b50508035926020909101359150565b60008060408385031215613ce457600080fd5b8235613cef81613bbe565b91506020830135613cff81613bff565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613d4957613d49613d0a565b604052919050565b60006020808385031215613d6457600080fd5b823567ffffffffffffffff80821115613d7c57600080fd5b818501915085601f830112613d9057600080fd5b813581811115613da257613da2613d0a565b613db4601f8201601f19168501613d20565b91508082528684828501011115613dca57600080fd5b8084840185840137600090820190930192909252509392505050565b600080600060608486031215613dfb57600080fd5b8335925060208085013567ffffffffffffffff80821115613e1b57600080fd5b818701915087601f830112613e2f57600080fd5b813581811115613e4157613e41613d0a565b8060051b9150613e52848301613d20565b818152918301840191848101908a841115613e6c57600080fd5b938501935b83851015613e965784359250613e8683613bbe565b8282529385019390850190613e71565b979a979950505050604095909501359450505050565b60008060408385031215613ebf57600080fd5b823591506020830135613cff81613bbe565b600080600080600060808688031215613ee957600080fd5b8535613ef481613bbe565b94506020860135613f0481613bbe565b935060408601359250606086013567ffffffffffffffff80821115613f2857600080fd5b818801915088601f830112613f3c57600080fd5b813581811115613f4b57600080fd5b896020828501011115613f5d57600080fd5b9699959850939650602001949392505050565b60008060408385031215613f8357600080fd5b8235613f8e81613bbe565b91506020830135613cff81613bbe565b600181811c90821680613fb257607f821691505b602082108103613fd257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ea657610ea6613fd8565b60008261401e57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610ea657610ea6613fd8565b8082028115828204841417610ea657610ea6613fd8565b60006020828403121561405f57600080fd5b81516110f981613b1b565b601f82111561153c57600081815260208120601f850160051c810160208610156140915750805b601f850160051c820191505b8181101561142f5782815560010161409d565b815167ffffffffffffffff8111156140ca576140ca613d0a565b6140de816140d88454613f9e565b8461406a565b602080601f83116001811461411357600084156140fb5750858301515b600019600386901b1c1916600185901b17855561142f565b600085815260208120601f198616915b8281101561414257888601518255948401946001909101908401614123565b50858210156141605787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b72021bab93932b73a363c9034b710383430b9b29606d1b81526000825161419e816013850160208701613b4e565b601760f91b6013939091019283015250601401919050565b6000600182016141c8576141c8613fd8565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600080845461424781613f9e565b6001828116801561425f5760018114614274576142a3565b60ff19841687528215158302870194506142a3565b8860005260208060002060005b8581101561429a5781548a820152908401908201614281565b50505082870194505b5050505083516142b7818360208801613b4e565b01949350505050565b600181815b808511156142fb5781600019048211156142e1576142e1613fd8565b808516156142ee57918102915b93841c93908002906142c5565b509250929050565b60008261431257506001610ea6565b8161431f57506000610ea6565b8160018114614335576002811461433f5761435b565b6001915050610ea6565b60ff84111561435057614350613fd8565b50506001821b610ea6565b5060208310610133831016604e8410600b841016171561437e575081810a610ea6565b61438883836142c0565b806000190482111561439c5761439c613fd8565b029392505050565b60006110f960ff841683614303565b6000602082840312156143c557600080fd5b5051919050565b6000602082840312156143de57600080fd5b81516110f981613bff565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561443957600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561446457600080fd5b81516110f981613bbe565b600081518084526020808501945080840160005b838110156144a85781516001600160a01b031687529582019590820190600101614483565b509495945050505050565b85815284602082015260a0604082015260006144d260a083018661446f565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000614508608083018661446f565b6001600160a01b03949094166040830152506060015292915050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220511537536a9669228b94d3b974258f0d771366c3097760318fce187701e5564564736f6c634300081400336080604052600180546001600160a01b03191673f261ebd3e99deaee37f4e1e15d7c05c9476e6d4e179055610e10600a55683635c9adc5dea00000600b5534801561004957600080fd5b50600080546001600160a01b03191633179055610c0b8061006b6000396000f3fe6080604052600436106100f75760003560e01c8063997664d71161008a578063e2d2e21911610059578063e2d2e219146102c3578063efca2eed146102d9578063ffb2c479146102ef578063ffd49c841461030f57600080fd5b8063997664d714610209578063b6b55f251461021f578063ce7c2ac21461023f578063d4fda1f21461029657600080fd5b806337563293116100c6578063375632931461019b5780633a98ef39146101b05780634fab0ae8146101c657806366817df5146101dc57600080fd5b806311ce023d1461010357806314b6ca961461013957806328fd31981461015b5780632d48e8961461017b57600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b506101266ec097ce7bc90715b34b9f100000000081565b6040519081526020015b60405180910390f35b34801561014557600080fd5b50610159610154366004610a52565b610325565b005b34801561016757600080fd5b50610126610176366004610a7c565b6104b9565b34801561018757600080fd5b50610159610196366004610a9e565b610544565b3480156101a757600080fd5b506101596105b5565b3480156101bc57600080fd5b5061012660065481565b3480156101d257600080fd5b50610126600b5481565b3480156101e857600080fd5b506101266101f7366004610a7c565b60046020526000908152604090205481565b34801561021557600080fd5b5061012660075481565b34801561022b57600080fd5b5061015961023a366004610ac0565b6105ce565b34801561024b57600080fd5b5061027b61025a366004610a7c565b60056020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610130565b3480156102a257600080fd5b506101266102b1366004610a7c565b60036020526000908152604090205481565b3480156102cf57600080fd5b5061012660095481565b3480156102e557600080fd5b5061012660085481565b3480156102fb57600080fd5b5061015961030a366004610ac0565b610675565b34801561031b57600080fd5b50610126600a5481565b6000546001600160a01b031633146103585760405162461bcd60e51b815260040161034f90610ad9565b60405180910390fd5b6001600160a01b0382166000908152600560205260409020541561037f5761037f8261078c565b6000811180156103a557506001600160a01b038216600090815260056020526040902054155b1561040b57600280546001600160a01b0384166000818152600360205260408120839055600183018455929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b031916909117905561043e565b8015801561043057506001600160a01b03821660009081526005602052604090205415155b1561043e5761043e826108ac565b6001600160a01b038216600090815260056020526040902054600654829161046591610b0f565b61046f9190610b22565b6006556001600160a01b0382166000908152600560205260409020819055610496816109c1565b6001600160a01b0390921660009081526005602052604090206001019190915550565b6001600160a01b03811660009081526005602052604081205481036104e057506000919050565b6001600160a01b038216600090815260056020526040812054610502906109c1565b6001600160a01b038416600090815260056020526040902060010154909150808211610532575060009392505050565b61053c8183610b0f565b949350505050565b6000546001600160a01b0316331461056e5760405162461bcd60e51b815260040161034f90610ad9565b600a829055600b81905560408051838152602081018390527f7d38de579bb682aa05ace7e32d15f88df69a3a53f6f89fcd0236f93fcc7e6362910160405180910390a15050565b6105be336109f1565b156105cc576105cc3361078c565b565b6000546001600160a01b031633146105f85760405162461bcd60e51b815260040161034f90610ad9565b806007546106069190610b22565b600755600654610625826ec097ce7bc90715b34b9f1000000000610b35565b61062f9190610b4c565b60095461063c9190610b22565b6009556040518181527f6a464fbfd2428ef7edab93930e64042148498d37c64c5122c4ab37843d6a3d119060200160405180910390a150565b6000546001600160a01b0316331461069f5760405162461bcd60e51b815260040161034f90610ad9565b60025460008190036106af575050565b6000805a905060005b84831080156106c657508381105b156107855783600c54106106da576000600c555b61070c6002600c54815481106106f2576106f2610b6e565b6000918252602090912001546001600160a01b03166109f1565b15610743576107436002600c548154811061072957610729610b6e565b6000918252602090912001546001600160a01b031661078c565b5a61074e8385610b22565b6107589190610b0f565b92505a600c8054919350600061076d83610b84565b9190505550808061077d90610b84565b9150506106b8565b5050505050565b6001600160a01b03811660009081526005602052604081205490036107ae5750565b60006107b9826104b9565b905080156108a85760015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610b9d565b50806008546108479190610b22565b6008556001600160a01b0382166000908152600460209081526040808320429055600590915290206002015461087e908290610b22565b6001600160a01b0383166000908152600560205260409020600281019190915554610496906109c1565b5050565b600280546108bc90600190610b0f565b815481106108cc576108cc610b6e565b60009182526020808320909101546001600160a01b038481168452600390925260409092205460028054929093169291811061090a5761090a610b6e565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526003918290526040812054600280549193929161095690600190610b0f565b8154811061096657610966610b6e565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600280548061099c5761099c610bbf565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60006ec097ce7bc90715b34b9f1000000000600954836109e19190610b35565b6109eb9190610b4c565b92915050565b600a546001600160a01b03821660009081526004602052604081205490914291610a1b9190610b22565b1080156109eb5750600b54610a2f836104b9565b1192915050565b80356001600160a01b0381168114610a4d57600080fd5b919050565b60008060408385031215610a6557600080fd5b610a6e83610a36565b946020939093013593505050565b600060208284031215610a8e57600080fd5b610a9782610a36565b9392505050565b60008060408385031215610ab157600080fd5b50508035926020909101359150565b600060208284031215610ad257600080fd5b5035919050565b60208082526006908201526510aa37b5b2b760d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156109eb576109eb610af9565b808201808211156109eb576109eb610af9565b80820281158282048414176109eb576109eb610af9565b600082610b6957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201610b9657610b96610af9565b5060010190565b600060208284031215610baf57600080fd5b81518015158114610a9757600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220cc45311af6ee8a63139d75f24df07bc98e8531a5e01ea31c45ff634b7f3268eb64736f6c63430008140033697066733a2f2f516d5179384a6f61753469635559736144737753643579667036434169744c5535486b4747624777416d476b4248000000000000000000000000ca9460e7d4122456abd8acfc048b77c65826d49d