Overview ERC721
Total Supply:
0

Profile Summary
Blockchain:
C-Chain (43114)

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

Compiler Version
v0.6.5+commit.f956cc89

Optimization Enabled:
Yes with 200 runs

Created At:
Thu, 31 Mar 2022 13:01:49 GMT
shields.sol
C
Users
Karola
repo
cryptoblades
contracts
shields.sol


Contract ABI
[
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "approved",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "shield",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "burner",
        "type": "address"
      }
    ],
    "name": "Burned",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "shield",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "minter",
        "type": "address"
      }
    ],
    "name": "NewShield",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "GAME_ADMIN",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "NFTVAR_BUSY",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "NFTVAR_SHIELD_TYPE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenID",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "tokenIDs",
        "type": "uint256[]"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "defenseMultPerPointBasic",
    "outputs": [
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "defenseMultPerPointDEF",
    "outputs": [
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "defenseMultPerPointMatching",
    "outputs": [
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "amount",
        "type": "uint8"
      }
    ],
    "name": "drainDurability",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "get",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "_properties",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "_stat1",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "_stat2",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "_stat3",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getCosmeticsSeed",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getDefenseMultiplier",
    "outputs": [
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "properties",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "stat1",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "stat2",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "stat3",
        "type": "uint16"
      },
      {
        "internalType": "uint8",
        "name": "trait",
        "type": "uint8"
      }
    ],
    "name": "getDefenseMultiplierForTrait",
    "outputs": [
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "trait",
        "type": "uint8"
      }
    ],
    "name": "getDefenseMultiplierForTrait",
    "outputs": [
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getDurabilityMaxWait",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getDurabilityPoints",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint64",
        "name": "timestamp",
        "type": "uint64"
      }
    ],
    "name": "getDurabilityPointsFromTimestamp",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getDurabilityTimestamp",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "charTrait",
        "type": "uint8"
      }
    ],
    "name": "getFightData",
    "outputs": [
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      },
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      },
      {
        "internalType": "uint24",
        "name": "",
        "type": "uint24"
      },
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "charTrait",
        "type": "uint8"
      },
      {
        "internalType": "uint8",
        "name": "drainAmount",
        "type": "uint8"
      }
    ],
    "name": "getFightDataAndDrainDurability",
    "outputs": [
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      },
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      },
      {
        "internalType": "uint24",
        "name": "",
        "type": "uint24"
      },
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "shieldID",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "nftVar",
        "type": "uint256"
      }
    ],
    "name": "getNftVar",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getOwned",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "getOwnedBy",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getProperties",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "seed",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "seed2",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "limit",
        "type": "uint8"
      }
    ],
    "name": "getRandomCosmetic",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "stars",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "seed",
        "type": "uint256"
      }
    ],
    "name": "getRandomProperties",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "minRoll",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "maxRoll",
        "type": "uint16"
      },
      {
        "internalType": "uint256",
        "name": "seed",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "seed2",
        "type": "uint256"
      }
    ],
    "name": "getRandomStat",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getRoleMember",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleMemberCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      }
    ],
    "name": "getStars",
    "outputs": [
      {
        "internalType": "uint8[]",
        "name": "",
        "type": "uint8[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getStars",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "properties",
        "type": "uint16"
      }
    ],
    "name": "getStarsFromProperties",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getStat1",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "statPattern",
        "type": "uint8"
      }
    ],
    "name": "getStat1Trait",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getStat2",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "statPattern",
        "type": "uint8"
      }
    ],
    "name": "getStat2Trait",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getStat3",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "statPattern",
        "type": "uint8"
      }
    ],
    "name": "getStat3Trait",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "stars",
        "type": "uint256"
      }
    ],
    "name": "getStatCount",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "stars",
        "type": "uint256"
      }
    ],
    "name": "getStatMaxRoll",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "stars",
        "type": "uint256"
      }
    ],
    "name": "getStatMinRoll",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getStatPattern",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "properties",
        "type": "uint16"
      }
    ],
    "name": "getStatPatternFromProperties",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getTrait",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "properties",
        "type": "uint16"
      }
    ],
    "name": "getTraitFromProperties",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "isDurabilityFull",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxDurability",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "contract Promos",
        "name": "_promos",
        "type": "address"
      }
    ],
    "name": "migrateTo_surprise",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "minter",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "shieldType",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "seed",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "stars",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "shieldType",
        "type": "uint256"
      }
    ],
    "name": "mintGiveawayShield",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "minter",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "stars",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "shieldType",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "seed",
        "type": "uint256"
      }
    ],
    "name": "mintShieldWithStars",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "minter",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "stars",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "shieldType",
        "type": "uint256"
      },
      {
        "internalType": "uint32",
        "name": "amount",
        "type": "uint32"
      },
      {
        "internalType": "uint256",
        "name": "seed",
        "type": "uint256"
      }
    ],
    "name": "mintShieldsWithStars",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "tokenIDs",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "nftVars",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "minter",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "shieldType",
        "type": "uint256"
      },
      {
        "internalType": "uint16",
        "name": "properties",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "stat1",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "stat2",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "stat3",
        "type": "uint16"
      },
      {
        "internalType": "uint256",
        "name": "cosmeticSeed",
        "type": "uint256"
      }
    ],
    "name": "performMintShield",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "tokenID",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "minter",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "metaData",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "cosmeticSeed",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "tokenID",
        "type": "uint256"
      }
    ],
    "name": "performMintShieldDetailed",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "promos",
    "outputs": [
      {
        "internalType": "contract Promos",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "secondsPerDurability",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "baseUri",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint64",
        "name": "timestamp",
        "type": "uint64"
      }
    ],
    "name": "setDurabilityTimestamp",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "shieldID",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "nftVar",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "setNftVar",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256",
        "name": "nftVar",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "setNftVars",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "shieldBaseMultiplier",
    "outputs": [
      {
        "internalType": "int128",
        "name": "",
        "type": "int128"
      }
    ],
    "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": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenOfOwnerByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
608060405234801561001057600080fd5b5061517c806100206000396000f3fe608060405234801561001057600080fd5b50600436106104c25760003560e01c806380aa68cd11610278578063c30275251161015c578063e06efad8116100ce578063ecd4738b11610092578063ecd4738b1461130d578063f5de8f4b14611339578063f8e678a71461135f578063fa9b6e8714611367578063fa9e839814611384578063fbb8ef78146113a1576104c2565b8063e06efad81461126e578063e07608861461128b578063e291298f146112b1578063e985e9c5146112d7578063eacd7df714611305576104c2565b8063d3f6797c11610120578063d3f6797c1461119b578063d547741f146111b8578063d58227c8146111e4578063d7af7ad21461120a578063d9514cb314611230578063dfd371291461124d576104c2565b8063c302752514611115578063c366620b1461111d578063c6a5108814611141578063c87b56dd14611161578063ca15c8731461117e576104c2565b806395d89b41116101f5578063adf04f20116101b9578063adf04f2014610f3e578063af8a29bf14610f5b578063b07f67b014610f63578063b80f55c914610f6b578063b88d4fde1461100c578063baa049f4146110d0576104c2565b806395d89b4114610eb157806395fc2f9214610eb9578063a217fddf14610eeb578063a22cb46514610ef3578063acb586df14610f21576104c2565b80638cfd4e2d1161023c5780638cfd4e2d14610ded5780639010d07c14610df557806391d1485414610e185780639507d39a14610e4457806395d06a0f14610e90576104c2565b806380aa68cd14610d615780638129fc1c14610d84578063821715f314610d8c5780638b9b57bf14610dc45780638c7f724214610de5576104c2565b8063316a7ba5116103aa5780634fbff6a21161031c5780636352211e116102e05780636352211e14610c295780636c0360eb14610c4657806370a0823114610c4e57806372f9360014610c74578063783efb2514610cca5780637f3c8a2814610ced576104c2565b80634fbff6a214610b3857806351e717ac14610b5857806352bc59ea14610b605780635504d3d214610b7d57806355f804b314610b85576104c2565b8063424fa66d1161036e578063424fa66d14610a2357806342842e0e14610a2b57806342966c6814610a6157806344d59e0a14610a7e57806348b1b41c14610ae35780634f6ccce714610b1b576104c2565b8063316a7ba51461086e5780633381c7f41461088b57806336568abe1461091f57806338b003541461094b5780633e68b604146109ec576104c2565b80631b8ca2171161044357806327cd91de1161040757806327cd91de146107935780632a9f22f2146107b05780632c3048a2146107cd5780632c3fc619146107ea5780632f2ff15d146108165780632f745c5914610842576104c2565b80631b8ca217146106d257806323b872dd14610706578063248a9ca31461073c57806324f7bb1b14610759578063262b581414610776576104c2565b80630a724cff1161048a5780630a724cff1461061d578063156e29f61461063d57806316f1daf61461068157806317b199a4146106a757806318160ddd146106ca576104c2565b806301ffc9a7146104c757806306fdde0314610502578063081812fc1461057f578063095ea7b3146105b85780630a583a93146105e6575b600080fd5b6104ee600480360360208110156104dd57600080fd5b50356001600160e01b0319166113ca565b604080519115158252519081900360200190f35b61050a6113ed565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561054457818101518382015260200161052c565b50505050905090810190601f1680156105715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61059c6004803603602081101561059557600080fd5b5035611484565b604080516001600160a01b039092168252519081900360200190f35b6105e4600480360360408110156105ce57600080fd5b506001600160a01b0381351690602001356114e6565b005b610607600480360360208110156105fc57600080fd5b503561ffff166115c1565b6040805160ff9092168252519081900360200190f35b6106076004803603602081101561063357600080fd5b503560ff166115c7565b61066f6004803603606081101561065357600080fd5b506001600160a01b0381351690602081013590604001356115e7565b60408051918252519081900360200190f35b6106076004803603602081101561069757600080fd5b50356001600160401b031661165c565b61066f600480360360408110156106bd57600080fd5b508035906020013561169a565b61066f6116b7565b6106ef600480360360208110156106e857600080fd5b50356116c8565b6040805161ffff9092168252519081900360200190f35b6105e46004803603606081101561071c57600080fd5b506001600160a01b038135811691602081013590911690604001356116f8565b61066f6004803603602081101561075257600080fd5b503561174f565b6106076004803603602081101561076f57600080fd5b5035611764565b61066f6004803603602081101561078c57600080fd5b5035611781565b6106ef600480360360208110156107a957600080fd5b50356117d6565b610607600480360360208110156107c657600080fd5b503561180d565b6106ef600480360360208110156107e357600080fd5b5035611828565b6105e46004803603604081101561080057600080fd5b50803590602001356001600160401b031661185e565b6105e46004803603604081101561082c57600080fd5b50803590602001356001600160a01b0316611895565b61066f6004803603604081101561085857600080fd5b506001600160a01b038135169060200135611901565b6106ef6004803603602081101561088457600080fd5b5035611929565b6108cf600480360360a08110156108a157600080fd5b506001600160a01b038135169060208101359060408101359063ffffffff6060820135169060800135611975565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561090b5781810151838201526020016108f3565b505050509050019250505060405180910390f35b6105e46004803603604081101561093557600080fd5b50803590602001356001600160a01b0316611a5a565b6108cf6004803603602081101561096157600080fd5b810190602081018135600160201b81111561097b57600080fd5b82018360208201111561098d57600080fd5b803590602001918460208302840111600160201b831117156109ae57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611abb945050505050565b6106ef60048036036080811015610a0257600080fd5b5061ffff813581169160208101359091169060408101359060600135611b57565b61066f611b80565b6105e460048036036060811015610a4157600080fd5b506001600160a01b03813581169160208101359091169060400135611b85565b6105e460048036036020811015610a7757600080fd5b5035611ba0565b610aac60048036036060811015610a9457600080fd5b5080359060ff60208201358116916040013516611bf8565b60408051600f95860b860b815293850b90940b602084015262ffffff9091168284015260ff16606082015290519081900360800190f35b61066f60048036036080811015610af957600080fd5b506001600160a01b038135169060208101359060408101359060600135611e51565b61066f60048036036020811015610b3157600080fd5b5035611f67565b61060760048036036020811015610b4e57600080fd5b503560ff16611f83565b61059c611f95565b61060760048036036020811015610b7657600080fd5b5035611fa4565b61066f611fc5565b6105e460048036036020811015610b9b57600080fd5b810190602081018135600160201b811115610bb557600080fd5b820183602082011115610bc757600080fd5b803590602001918460018302840111600160201b83111715610be857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611fe7945050505050565b61059c60048036036020811015610c3f57600080fd5b5035611ffb565b61050a612029565b61066f60048036036020811015610c6457600080fd5b50356001600160a01b031661208a565b61066f600480360360e0811015610c8a57600080fd5b506001600160a01b038135169060208101359061ffff60408201358116916060810135821691608082013581169160a08101359091169060c001356120f2565b61066f60048036036040811015610ce057600080fd5b5080359060200135612307565b6105e460048036036060811015610d0357600080fd5b810190602081018135600160201b811115610d1d57600080fd5b820183602082011115610d2f57600080fd5b803590602001918460208302840111600160201b83111715610d5057600080fd5b919350915080359060200135612324565b6106ef60048036036040811015610d7757600080fd5b508035906020013561237e565b6105e46123c0565b61066f60048036036080811015610da257600080fd5b506001600160a01b038135169060208101359060408101359060600135612595565b610dcc612621565b60408051600f92830b90920b8252519081900360200190f35b61066f612631565b610dcc612637565b61059c60048036036040811015610e0b57600080fd5b5080359060200135612640565b6104ee60048036036040811015610e2e57600080fd5b50803590602001356001600160a01b031661265e565b610e6160048036036020811015610e5a57600080fd5b503561267c565b6040805161ffff9586168152938516602085015291841683830152909216606082015290519081900360800190f35b61060760048036036020811015610ea657600080fd5b503561ffff166126a5565b61050a6126ae565b61066f60048036036060811015610ecf57600080fd5b506001600160a01b03813516906020810135906040013561270f565b61066f6127b1565b6105e460048036036040811015610f0957600080fd5b506001600160a01b03813516906020013515156127b6565b61060760048036036020811015610f3757600080fd5b50356128bb565b61060760048036036020811015610f5457600080fd5b50356128d8565b610dcc6128f5565b610dcc612905565b6105e460048036036020811015610f8157600080fd5b810190602081018135600160201b811115610f9b57600080fd5b820183602082011115610fad57600080fd5b803590602001918460208302840111600160201b83111715610fce57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061290e945050505050565b6105e46004803603608081101561102257600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561105c57600080fd5b82018360208201111561106e57600080fd5b803590602001918460018302840111600160201b8311171561108f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612946945050505050565b610dcc600480360360a08110156110e657600080fd5b50803561ffff90811691602081013582169160408201358116916060810135909116906080013560ff166129a4565b6108cf612b9d565b611125612ba8565b604080516001600160401b039092168252519081900360200190f35b6106076004803603602081101561115757600080fd5b503560ff16612bae565b61050a6004803603602081101561117757600080fd5b5035612bbb565b61066f6004803603602081101561119457600080fd5b5035612e3e565b610dcc600480360360208110156111b157600080fd5b5035612e55565b6105e4600480360360408110156111ce57600080fd5b50803590602001356001600160a01b0316612f4c565b610aac600480360360408110156111fa57600080fd5b508035906020013560ff16612fa5565b6105e46004803603602081101561122057600080fd5b50356001600160a01b031661305c565b6111256004803603602081101561124657600080fd5b50356130c6565b6106076004803603602081101561126357600080fd5b503561ffff166130e1565b6106ef6004803603602081101561128457600080fd5b50356130ea565b6105e4600480360360408110156112a157600080fd5b508035906020013560ff16613121565b6108cf600480360360208110156112c757600080fd5b50356001600160a01b0316613234565b6104ee600480360360408110156112ed57600080fd5b506001600160a01b03813581169160200135166132b7565b61066f6132e5565b6106076004803603606081101561132357600080fd5b508035906020810135906040013560ff166132ea565b610dcc6004803603604081101561134f57600080fd5b508035906020013560ff166132ff565b61066f61334b565b6104ee6004803603602081101561137d57600080fd5b5035613350565b6106ef6004803603602081101561139a57600080fd5b5035613368565b6105e4600480360360608110156113b757600080fd5b5080359060208101359060400135613393565b6001600160e01b0319811660009081526033602052604090205460ff165b919050565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156114795780601f1061144e57610100808354040283529160200191611479565b820191906000526020600020905b81548152906001019060200180831161145c57829003601f168201915b505050505090505b90565b600061148f826133b7565b6114ca5760405162461bcd60e51b815260040180806020018281038252602c815260200180615042602c913960400191505060405180910390fd5b506000908152606860205260409020546001600160a01b031690565b60006114f182611ffb565b9050806001600160a01b0316836001600160a01b031614156115445760405162461bcd60e51b81526004018080602001828103825260218152602001806150c66021913960400191505060405180910390fd5b806001600160a01b03166115566133ca565b6001600160a01b031614806115775750611577816115726133ca565b6132b7565b6115b25760405162461bcd60e51b8152600401808060200182810382526038815260200180614f676038913960400191505060405180910390fd5b6115bc83836133ce565b505050565b60071690565b600060056115d98360ff16601961343c565b816115e057fe5b0692915050565b60006115f16134a3565b60006064830660018110156116095760049150611644565b600681101561161b5760039150611644565b601581101561162d5760029150611644565b603881101561163f5760019150611644565b600091505b61165086838787612595565b925050505b9392505050565b600042826001600160401b03161115611677575060006113e8565b610bb86001600160401b0383164203046014811115611694575060145b92915050565b60d160209081526000928352604080842090915290825290205481565b60006116c36066613510565b905090565b6000816116d48161351b565b60c983815481106116e157fe5b60009182526020909120015461ffff169392505050565b6117096117036133ca565b82613574565b6117445760405162461bcd60e51b81526004018080602001828103825260318152602001806150e76031913960400191505060405180910390fd5b6115bc838383613610565b60009081526097602052604090206002015490565b6000816117708161351b565b61165561177c846116c8565b6130e1565b60008161178d8161351b565b611795614d28565b60ca84815481106117a257fe5b600091825260209182902060408051808201909152600290920201805460ff16825260010154910181905292505050919050565b6000816117e28161351b565b60c983815481106117ef57fe5b600091825260209091200154600160301b900461ffff169392505050565b60006003821015611820575060016113e8565b506000190190565b6000816118348161351b565b60c9838154811061184157fe5b60009182526020909120015462010000900461ffff169392505050565b6118666134a3565b600091825260cf6020526040909120805467ffffffffffffffff19166001600160401b03909216919091179055565b6000828152609760205260409020600201546118b8906118b36133ca565b61265e565b6118f35760405162461bcd60e51b815260040180806020018281038252602f815260200180614e86602f913960400191505060405180910390fd5b6118fd828261376e565b5050565b6001600160a01b0382166000908152606560205260408120611655908363ffffffff6137dd16565b600081611938575060046113e8565b8160011415611949575060b46113e8565b816002141561195b57506101186113e8565b816003141561196c575060c86113e8565b5061010c919050565b606061197f6134a3565b600885106119be5760405162461bcd60e51b8152600401808060200182810382526021815260200180614e436021913960400191505060405180910390fd5b8263ffffffff166001600160401b03811180156119da57600080fd5b50604051908082528060200260200182016040528015611a04578160200160208202803683370190505b50905060005b8363ffffffff16811015611a5057611a2487878786612595565b828281518110611a3057fe5b602002602001018181525050611a4683826137e9565b9250600101611a0a565b5095945050505050565b611a626133ca565b6001600160a01b0316816001600160a01b031614611ab15760405162461bcd60e51b815260040180806020018281038252602f815260200180615118602f913960400191505060405180910390fd5b6118fd8282613815565b60608082516001600160401b0381118015611ad557600080fd5b50604051908082528060200260200182016040528015611aff578160200160208202803683370190505b50905060005b8351811015611b5057611b2a848281518110611b1d57fe5b60200260200101516128d8565b828281518110611b3657fe5b60ff90921660209283029190910190910152600101611b05565b5092915050565b6000611b758561ffff168561ffff16611b7086866137e9565b613884565b90505b949350505050565b600181565b6115bc83838360405180602001604052806000815250612946565b611ba86134a3565b6000611bb382611ffb565b9050611bbe826138f0565b6040516001600160a01b0382169083907fe861e0b12c283de7ca3f4d68d33f3bfc6fc01e4896cddf05e52b8f2a1e548e2490600090a35050565b600080600080611c066134a3565b86611c108161351b565b600088815260d1602090815260408083206001845290915290205415611c6e576040805162461bcd60e51b815260206004820152600e60248201526d536869656c64206973206275737960901b604482015290519081900360640190fd5b600088815260cf6020526040812054611c8f906001600160401b031661165c565b90508660ff168160ff161015611ce5576040805162461bcd60e51b81526020600482015260166024820152754e6f7420656e6f756768206475726162696c6974792160501b604482015290519081900360640190fd5b60ff808816610bb80290601490831610611d4557806001600160401b0316611d0b612ba8565b60008c815260cf60205260409020805467ffffffffffffffff19166001600160401b03928316420393909301909116919091179055611d74565b60008a815260cf6020526040902080546001600160401b0380821684011667ffffffffffffffff199091161790555b600060c98b81548110611d8357fe5b60009182526020909120018054909150611dfc90611de690611dc99062010000810461ffff908116600160201b8304821601600160301b909204811691909101166139c9565b60cb54600160801b9004600f90810b900b9063ffffffff6139e716565b60cb54600f90810b900b9063ffffffff613a1e16565b8154611e2a9061ffff80821691620100008104821691600160201b8204811691600160301b9004168f6129a4565b8254600090611e3c9061ffff166126a5565b929e919d509b50909950975050505050505050565b6000611e5b6134a3565b61ffff601085901c811690602086901c811690603087901c811690604088901c1660ff881686611e9f57611e988a8260ff168486888a60006120f2565b9650611f09565b600060c98881548110611eae57fe5b6000918252602090912001805461ffff191661ffff8581169190911763ffff0000191662010000878316021765ffff000000001916600160201b888316021767ffff0000000000001916600160301b91891691909102179055505b600060ca8881548110611f1857fe5b600091825260208083206002929092029091016001019a909a5588815260cf90995250506040909620805467ffffffffffffffff1916426001600160401b031617905550929695505050505050565b600080611f7b60668463ffffffff613a5116565b509392505050565b600060056115d98360ff16600561343c565b60d0546001600160a01b031681565b600081815260cf6020526040812054611694906001600160401b031661165c565b604080516923a0a6a2afa0a226a4a760b11b8152905190819003600a01902081565b611fef6134a3565b611ff881613a6d565b50565b600061169482604051806060016040528060298152602001614fc9602991396066919063ffffffff613a8016565b606d8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156114795780601f1061144e57610100808354040283529160200191611479565b60006001600160a01b0382166120d15760405162461bcd60e51b815260040180806020018281038252602a815260200180614f9f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260656020526040902061169490613510565b60006120fc6134a3565b5060c95460cd54431461210f5760ce8190555b4360cd556040805160808101825261ffff808916825287811660208084019182528883168486019081528884166060860190815260c9805460018181018355600092835297517f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d2890910180549651945193518816600160301b0267ffff00000000000019948916600160201b0265ffff0000000019968a16620100000263ffff00001994909a1661ffff1990991698909817929092169790971793909316949094171617909255835180850190945280845290830185815260ca8054938401815590915291516002919091027f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee18101805460ff9390931660ff199093169290921790915590517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee2909101556122648882613a8d565b61228561226f612ba8565b42906001600160401b031663ffffffff613bc716565b600082815260cf60209081526040808320805467ffffffffffffffff19166001600160401b03959095169490941790935560d1815282822060028352905281812089905590516001600160a01b038a169183917f9f6c6fa7de67d487c8373360cc88ddcf9b3c5a0416d887ede5b0358fad1c71689190a3979650505050505050565b600091825260d16020908152604080842092845291905290205490565b61232c6134a3565b60005b83811015612377578160d1600087878581811061234857fe5b60209081029290920135835250818101929092526040908101600090812087825290925290205560010161232f565b5050505050565b600060056123946000607c611b708660026137e9565b607f16901b60036123ad60006003611b708760016137e9565b600316901b846007161717905092915050565b600054610100900460ff16806123d957506123d9613c24565b806123e7575060005460ff16155b6124225760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff1615801561244d576000805460ff1961ff0019909116610100171660011790555b61249d6040518060400160405280601381526020017210dc9e5c1d1bd09b1859195cc81cda1a595b19606a1b8152506040518060400160405280600381526020016243425360e81b815250613c35565b6124a5613cf2565b6124b06000336118f3565b6124ba60016139c9565b60cb8054600f9290920b6001600160801b03166001600160801b03199092169190911790556124ec6001610190613d93565b60cb60106101000a8154816001600160801b030219169083600f0b6001600160801b03160217905550612524611dc960676064613d93565b60cc8054600f9290920b6001600160801b03166001600160801b0319909216919091179055612558611dc9606b6064613d93565b60cc60106101000a8154816001600160801b030219169083600f0b6001600160801b031602179055508015611ff8576000805461ff001916905550565b600061259f6134a3565b600884106125de5760405162461bcd60e51b8152600401808060200182810382526021815260200180614e436021913960400191505060405180910390fd5b60008060006125ed8786613dca565b92509250925061261588876126028a8961237e565b8686866126108c60036137e9565b6120f2565b98975050505050505050565b60cc54600160801b9004600f0b81565b610bb881565b60cb54600f0b81565b6000828152609760205260408120611655908363ffffffff6137dd16565b6000828152609760205260408120611655908363ffffffff613e5216565b6000806000808461268c8161351b565b61269586613e67565b9450945094509450509193509193565b600390811c1690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156114795780601f1061144e57610100808354040283529160200191611479565b60006127196134a3565b816001141561276f576040805162461bcd60e51b815260206004820152601a60248201527f43616e2774206d696e7420666f756e6465727320736869656c64000000000000604482015290519081900360640190fd5b611b788484844260c98054905060405160200180838152602001828152602001925050506040516020818303038152906040528051906020012060001c612595565b600081565b6127be6133ca565b6001600160a01b0316826001600160a01b03161415612824576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b80606960006128316133ca565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556128756133ca565b60408051841515815290516001600160a01b0392909216917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319181900360200190a35050565b6000816128c78161351b565b6116556128d3846116c8565b6126a5565b6000816128e48161351b565b6116556128f0846116c8565b6115c1565b60cb54600160801b9004600f0b81565b60cc54600f0b81565b6129166134a3565b60005b81518110156118fd5761293e82828151811061293157fe5b6020026020010151611ba0565b600101612919565b6129576129516133ca565b83613574565b6129925760405162461bcd60e51b81526004018080602001828103825260318152602001806150e76031913960400191505060405180910390fd5b61299e84848484613e85565b50505050565b6000806129b0876130e1565b60cb54909150600f0b60ff84166129c683612bae565b60ff161415612a185760cc54612a1190612a0090600160801b9004600f0b6129f161ffff8b166139c9565b600f0b9063ffffffff6139e716565b600f83900b9063ffffffff613a1e16565b9050612a6c565b612a2182612bae565b60ff1660041415612a475760cc54612a1190612a0090600f0b6129f161ffff8b166139c9565b60cb54612a6990612a0090600160801b9004600f0b6129f161ffff8b166139c9565b90505b8360ff16612a7983611f83565b60ff161415612aab5760cc54612aa490612a0090600160801b9004600f0b6129f161ffff8a166139c9565b9050612aff565b612ab482611f83565b60ff1660041415612ada5760cc54612aa490612a0090600f0b6129f161ffff8a166139c9565b60cb54612afc90612a0090600160801b9004600f0b6129f161ffff8a166139c9565b90505b8360ff16612b0c836115c7565b60ff161415612b3e5760cc54612b3790612a0090600160801b9004600f0b6129f161ffff89166139c9565b9050612b92565b612b47826115c7565b60ff1660041415612b6d5760cc54612b3790612a0090600f0b6129f161ffff89166139c9565b60cb54612b8f90612a0090600160801b9004600f0b6129f161ffff89166139c9565b90505b979650505050505050565b60606116c333613234565b61ea6090565b6000600560ff83166115e0565b6060612bc6826133b7565b612c015760405162461bcd60e51b815260040180806020018281038252602f815260200180615097602f913960400191505060405180910390fd5b6000828152606c602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015612c965780601f10612c6b57610100808354040283529160200191612c96565b820191906000526020600020905b815481529060010190602001808311612c7957829003601f168201915b505050505090506060612ca7612029565b9050805160001415612cbb575090506113e8565b815115612d7c5780826040516020018083805190602001908083835b60208310612cf65780518252601f199092019160209182019101612cd7565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310612d3e5780518252601f199092019160209182019101612d1f565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506113e8565b80612d8685613ed7565b6040516020018083805190602001908083835b60208310612db85780518252601f199092019160209182019101612d99565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310612e005780518252601f199092019160209182019101612de1565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b600081815260976020526040812061169490613510565b600081612e618161351b565b612e69614d3f565b60c98481548110612e7657fe5b6000918252602080832060408051608081018252939091015461ffff80821685526201000082048116938501849052600160201b8204811692850192909252600160301b900416606083015260cb54919350600160801b909104600f0b9190612ee49083906129f1906139c9565b90506000612efd836129f1866040015161ffff166139c9565b90506000612f16846129f1876060015161ffff166139c9565b60cb54909150612615908290612f3d9085908290600f90810b900b8863ffffffff613a1e16565b600f0b9063ffffffff613a1e16565b600082815260976020526040902060020154612f6a906118b36133ca565b611ab15760405162461bcd60e51b8152600401808060200182810382526030815260200180614f376030913960400191505060405180910390fd5b60008060008085612fb58161351b565b600060c98881548110612fc457fe5b6000918252602090912001805490915061300a90611de690611dc99062010000810461ffff908116600160201b8304821601600160301b909204811691909101166139c9565b81546130389061ffff80821691620100008104821691600160201b8204811691600160301b9004168c6129a4565b825460009061304a9061ffff166126a5565b929b919a509850909650945050505050565b61306760003361265e565b6130a4576040805162461bcd60e51b81526020600482015260096024820152682737ba1030b236b4b760b91b604482015290519081900360640190fd5b60d080546001600160a01b0319166001600160a01b0392909216919091179055565b600090815260cf60205260409020546001600160401b031690565b60051c607f1690565b6000816130f68161351b565b60c9838154811061310357fe5b600091825260209091200154600160201b900461ffff169392505050565b6131296134a3565b600082815260cf602052604081205461314a906001600160401b031661165c565b90508160ff168160ff1610156131a0576040805162461bcd60e51b81526020600482015260166024820152754e6f7420656e6f756768206475726162696c6974792160501b604482015290519081900360640190fd5b60ff808316610bb8029060149083161061320057806001600160401b03166131c6612ba8565b600086815260cf60205260409020805467ffffffffffffffff19166001600160401b0392831642039390930190911691909117905561299e565b600084815260cf6020526040902080546001600160401b0380821684011667ffffffffffffffff1990911617905550505050565b6060806132408361208a565b6001600160401b038111801561325557600080fd5b5060405190808252806020026020018201604052801561327f578160200160208202803683370190505b50905060005b8151811015611b50576132988482611901565b8282815181106132a457fe5b6020908102919091010152600101613285565b6001600160a01b03918216600090815260696020908152604080832093909416825291909152205460ff1690565b600281565b6000611b7860008360ff16611b7087876137e9565b60008060c9848154811061330f57fe5b60009182526020909120018054909150611b789061ffff80821691620100008104821691600160201b8204811691600160301b900416876129a4565b601481565b6000601461335d83611fa4565b60ff16101592915050565b6000600182111561337c57506101906113e8565b811561338b575061012c6113e8565b5060c8919050565b61339b6134a3565b600092835260d160209081526040808520938552929052912055565b600061169460668363ffffffff613fb116565b3390565b600081815260686020526040902080546001600160a01b0319166001600160a01b038416908117909155819061340382611ffb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000808211613492576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161349b57fe5b049392505050565b604080516923a0a6a2afa0a226a4a760b11b8152905190819003600a0190206134cc903361265e565b61350e576040805162461bcd60e51b815260206004820152600e60248201526d2737ba1033b0b6b29030b236b4b760911b604482015290519081900360640190fd5b565b600061169482613fbd565b60ce5481108061352c57504360cd54105b611ff8576040805162461bcd60e51b81526020600482015260146024820152730546f6f20667265736820666f72206c6f6f6b75760641b604482015290519081900360640190fd5b600061357f826133b7565b6135ba5760405162461bcd60e51b815260040180806020018281038252602c815260200180614f0b602c913960400191505060405180910390fd5b60006135c583611ffb565b9050806001600160a01b0316846001600160a01b031614806136005750836001600160a01b03166135f584611484565b6001600160a01b0316145b80611b785750611b7881856132b7565b826001600160a01b031661362382611ffb565b6001600160a01b0316146136685760405162461bcd60e51b815260040180806020018281038252602981526020018061506e6029913960400191505060405180910390fd5b6001600160a01b0382166136ad5760405162461bcd60e51b8152600401808060200182810382526024815260200180614ee76024913960400191505060405180910390fd5b6136b8838383613fc1565b6136c36000826133ce565b6001600160a01b03831660009081526065602052604090206136eb908263ffffffff6140fc16565b506001600160a01b0382166000908152606560205260409020613714908263ffffffff61410816565b506137276066828463ffffffff61411416565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600082815260976020526040902061378c908263ffffffff61412a16565b156118fd576137996133ca565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611655838361413f565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6000828152609760205260409020613833908263ffffffff6141a316565b156118fd576138406133ca565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000806138a8600161389c868863ffffffff613bc716565b9063ffffffff6141b816565b60408051602080820187905282518083038201815291830190925280519101209091506000906138de908363ffffffff61421216565b9050611650818763ffffffff6141b816565b60006138fb82611ffb565b905061390981600084613fc1565b6139146000836133ce565b6000828152606c60205260409020546002600019610100600184161502019091160415613952576000828152606c6020526040812061395291614d66565b6001600160a01b038116600090815260656020526040902061397a908363ffffffff6140fc16565b5061398c60668363ffffffff61427916565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000677fffffffffffffff8211156139e057600080fd5b5060401b90565b6000600f83810b9083900b0260401d60016001607f1b03198112801590613a15575060016001607f1b038113155b61165557600080fd5b6000600f83810b9083900b0160016001607f1b03198112801590613a15575060016001607f1b0381131561165557600080fd5b6000808080613a608686614285565b9097909650945050505050565b80516118fd90606d906020840190614daa565b6000611b78848484614300565b6001600160a01b038216613ae8576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613af1816133b7565b15613b43576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b613b4f60008383613fc1565b6001600160a01b0382166000908152606560205260409020613b77908263ffffffff61410816565b50613b8a6066828463ffffffff61411416565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600082821115613c1e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000613c2f306143ca565b15905090565b600054610100900460ff1680613c4e5750613c4e613c24565b80613c5c575060005460ff16155b613c975760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015613cc2576000805460ff1961ff0019909116610100171660011790555b613cca613cf2565b613cd26143d0565b613cdc838361446d565b80156115bc576000805461ff0019169055505050565b600054610100900460ff1680613d0b5750613d0b613c24565b80613d19575060005460ff16155b613d545760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015613d7f576000805460ff1961ff0019909116610100171660011790555b8015611ff8576000805461ff001916905550565b600081613d9f57600080fd5b6000613dab8484614552565b905060016001607f1b036001600160801b038216111561165557600080fd5b600080600080613dd986611929565b90506000613de687613368565b90506000613df38861180d565b90506000613e0484848a6005611b57565b9050600080600160ff85161115613e2557613e2286868c6003611b57565b91505b60028460ff161115613e4157613e3e86868c6004611b57565b90505b919750955093505050509250925092565b6000611655836001600160a01b03841661469b565b600080600080613e76856146b3565b93509350935093509193509193565b613e90848484613610565b613e9c8484848461472d565b61299e5760405162461bcd60e51b8152600401808060200182810382526032815260200180614eb56032913960400191505060405180910390fd5b606081613efc57506040805180820190915260018152600360fc1b60208201526113e8565b8160005b8115613f1457600101600a82049150613f00565b6060816001600160401b0381118015613f2c57600080fd5b506040519080825280601f01601f191660200182016040528015613f57576020820181803683370190505b50859350905060001982015b8315613fa857600a840660300160f81b82828060019003935081518110613f8657fe5b60200101906001600160f81b031916908160001a905350600a84049350613f63565b50949350505050565b6000611655838361469b565b5490565b60d0546040805163434d82a360e01b81526001600160a01b0386811660048381019190915260248301529151919092169163434d82a3916044808301926020929190829003018186803b15801561401757600080fd5b505afa15801561402b573d6000803e3d6000fd5b505050506040513d602081101561404157600080fd5b50511580156140cf575060d0546040805163434d82a360e01b81526001600160a01b0385811660048381019190915260248301529151919092169163434d82a3916044808301926020929190829003018186803b1580156140a157600080fd5b505afa1580156140b5573d6000803e3d6000fd5b505050506040513d60208110156140cb57600080fd5b5051155b80156140f35750600081815260d16020908152604080832060018452909152902054155b6115bc57600080fd5b600061165583836148ad565b60006116558383614973565b6000611b7884846001600160a01b0385166149bd565b6000611655836001600160a01b038416614973565b815460009082106141815760405162461bcd60e51b8152600401808060200182810382526022815260200180614e646022913960400191505060405180910390fd5b82600001828154811061419057fe5b9060005260206000200154905092915050565b6000611655836001600160a01b0384166148ad565b600082820183811015611655576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211614268576040805162461bcd60e51b815260206004820152601860248201527f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000604482015290519081900360640190fd5b81838161427157fe5b069392505050565b60006116558383614a54565b8154600090819083106142c95760405162461bcd60e51b81526004018080602001828103825260228152602001806150206022913960400191505060405180910390fd5b60008460000184815481106142da57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161439b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614360578181015183820152602001614348565b50505050905090810190601f16801561438d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106143ae57fe5b9060005260206000209060020201600101549150509392505050565b3b151590565b600054610100900460ff16806143e957506143e9613c24565b806143f7575060005460ff16155b6144325760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff1615801561445d576000805460ff1961ff0019909116610100171660011790555b613d7f6301ffc9a760e01b614b28565b600054610100900460ff16806144865750614486613c24565b80614494575060005460ff16155b6144cf5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff161580156144fa576000805460ff1961ff0019909116610100171660011790555b825161450d90606a906020860190614daa565b50815161452190606b906020850190614daa565b506145326380ac58cd60e01b614b28565b614542635b5e139f60e01b614b28565b613cdc63780e9d6360e01b614b28565b60008161455e57600080fd5b60006001600160c01b0384116145835782604085901b8161457b57fe5b049050614687565b60c084811c600160201b811061459b576020918201911c5b6201000081106145ad576010918201911c5b61010081106145be576008918201911c5b601081106145ce576004918201911c5b600481106145de576002918201911c5b600281106145ed576001820191505b60bf820360018603901c6001018260ff0387901b8161460857fe5b0492506001600160801b0383111561461f57600080fd5b608085901c83026001600160801b038616840260c088901c604089901b8281101561464b576001820391505b608084901b92900382811015614662576001820391505b829003608084901c821461467257fe5b88818161467b57fe5b04870196505050505050505b6001600160801b0381111561165557600080fd5b60009081526001919091016020526040902054151590565b6000806000806146c1614d3f565b60c986815481106146ce57fe5b600091825260209182902060408051608081018252929091015461ffff8082168085526201000083048216958501869052600160201b83048216938501849052600160301b909204166060909301839052999298509650945092505050565b6000614741846001600160a01b03166143ca565b61474d57506001611b78565b6060614873630a85bd0160e11b6147626133ca565b88878760405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156147db5781810151838201526020016147c3565b50505050905090810190601f1680156148085780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001614eb5603291396001600160a01b038816919063ffffffff614bac16565b9050600081806020019051602081101561488c57600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b6000818152600183016020526040812054801561496957835460001980830191908101906000908790839081106148e057fe5b90600052602060002001549050808760000184815481106148fd57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061492d57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611694565b6000915050611694565b600061497f838361469b565b6149b557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611694565b506000611694565b600082815260018401602052604081205480614a22575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611655565b82856000016001830381548110614a3557fe5b9060005260206000209060020201600101819055506000915050611655565b600081815260018301602052604081205480156149695783546000198083019190810190600090879083908110614a8757fe5b9060005260206000209060020201905080876000018481548110614aa757fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614ae657fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506116949350505050565b6001600160e01b03198082161415614b87576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152603360205260409020805460ff19166001179055565b6060611b78848460008585614bc0856143ca565b614c11576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310614c505780518252601f199092019160209182019101614c31565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614cb2576040519150601f19603f3d011682016040523d82523d6000602084013e614cb7565b606091505b5091509150612b9282828660608315614cd1575081611655565b825115614ce15782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315614360578181015183820152602001614348565b604080518082019091526000808252602082015290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b50805460018160011615610100020316600290046000825580601f10614d8c5750611ff8565b601f016020900490600052602060002090810190611ff89190614e28565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614deb57805160ff1916838001178555614e18565b82800160010185558215614e18579182015b82811115614e18578251825591602001919060010190614dfd565b50614e24929150614e28565b5090565b61148191905b80821115614e245760008155600101614e2e56fe537461727320706172616d6574657220746f6f20686967682120286d6178203729456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220558fd1b4034e177d26f9cdee948c5ce255bc2eeb923c1d4b4c94b353acff1a9664736f6c63430006050033