Overview ERC20
PRICE
$0.0467

ON-CHAIN MARKET CAP n/a

Total Supply:
123,456,789.00 IMadeThisProjectIn2HoursButIThinkYouShouldBuyItBecauseINeedMoneyForNewIPhoneAndNetflixSubscriptionNeedsPayed

Holders:
24
Profile Summary
Blockchain:
Ethereum (1)


Decimals:
18
Contract Source Code Verified (Partial Match)
Contract Name:
Redis

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 9999 runs

Created At:
Wed, 15 Nov 2023 14:34:35 GMT
Redis.sol
contracts
Redis.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol_",
        "type": "string"
      },
      {
        "internalType": "uint8",
        "name": "decimals_",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "totalSupply_",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "router_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "treasuryAddress_",
        "type": "address"
      },
      {
        "internalType": "uint16",
        "name": "reflectionTax_",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "treasuryTax_",
        "type": "uint16"
      },
      {
        "internalType": "address",
        "name": "feeReceiver",
        "type": "address"
      },
      {
        "internalType": "uint8",
        "name": "feeShare",
        "type": "uint8"
      }
    ],
    "stateMutability": "payable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "reflectionTax",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "treasuryTax",
        "type": "uint16"
      }
    ],
    "name": "ChangedFees",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bool",
        "name": "enable",
        "type": "bool"
      }
    ],
    "name": "ChangedSwapEnable",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountToken",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountETH",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "liquidity",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "ownerAmountReceiveed",
        "type": "uint256"
      }
    ],
    "name": "CoinscopeBuybackApproved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "CoinscopeBuybackRejectedLiquidity",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "CoinscopeBuybackRejectedSwap",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "CoinscopeBuybackRejectedSwapBalance",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "excluded",
        "type": "bool"
      }
    ],
    "name": "ExcludedAccountsFromFees",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "Reflected",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "SwapError",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "tokenType",
        "type": "string"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "version",
        "type": "uint256"
      }
    ],
    "name": "TokenCreated",
    "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": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "UpdatedTreasuryWallet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "WithdrawedTokens",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "BSC_PANCAKE_ROUTER",
    "outputs": [
      {
        "internalType": "contract IUniswapV2Router02",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "COINSCOPE_ADDRESS",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "VERSION",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "internalType": "bool",
        "name": "excluded",
        "type": "bool"
      }
    ],
    "name": "excludeMultipleAccountsFromFees",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "getExcludedFromFee",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "manualSwap",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "reflectionTax",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "reflectionTax_",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "treasuryTax_",
        "type": "uint16"
      }
    ],
    "name": "setFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address payable",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "setTreasuryAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapEnabled",
    "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": "bool",
        "name": "enable",
        "type": "bool"
      }
    ],
    "name": "toggleSwap",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "treasuryAddress",
    "outputs": [
      {
        "internalType": "address payable",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "treasuryTax",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "uniswapV2Pair",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "uniswapV2Router",
    "outputs": [
      {
        "internalType": "contract IUniswapV2Router02",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdrawETH",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "withdrawTokens",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60e060408190526009805461ffff60a01b1916600160a81b1790556200374138819003908190833981016040819052620000399162000e13565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160a01b038516620000d45760405162461bcd60e51b815260206004820152601f60248201527f747265617375727920616464726573732063616e6e6f74206265207a65726f0060448201526064015b60405180910390fd5b8760ff16600003620001295760405162461bcd60e51b815260206004820152601b60248201527f646563696d616c732073686f756c64206e6f74206265207a65726f00000000006044820152606401620000cb565b62000135848462000480565b6006620001438b8262000f9a565b506007620001528a8262000f9a565b5060ff881660a05260808790526200016d876000196200107c565b6200017b90600019620010a9565b60048181553360009081526001602090815260409182902093909355600980546001600160a01b0319166001600160a01b038b16908117909155815163c45a015560e01b81529151909363c45a015593838101939192918290030181865afa158015620001ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002129190620010c5565b6001600160a01b031663c9c65396306200022b620004e6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000279573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029f9190620010c5565b6001600160a01b0390811660c052600880549187166001600160a01b03199092169190911790556005805461ffff858116620100000263ffffffff1990921690871617179055600160036000620002fe6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526003909352818320805485166001908117909155908916835281832080549094161790925590513391907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062000389908b815260200190565b60405180910390a330620003a56000546001600160a01b031690565b6001600160a01b03167f989c950f789dd53617d32eabbd91a779b5ac03cd8caeb147f73c8c11739d0fb16001604051620004019190604080825260059082015264726564697360d81b6060820152602081019190915260800190565b60405180910390a36001600160a01b03821615620004705762000438620004306000546001600160a01b031690565b8383620006eb565b6040516001600160a01b038316904780156108fc02916000818181858888f193505050501580156200046e573d6000803e3d6000fd5b505b50505050505050505050620012e7565b60146200048e8284620010ea565b61ffff161115620004e25760405162461bcd60e51b815260206004820152601f60248201527f466565732063616e6e6f742062652067726561746572207468616e20323025006044820152606401620000cb565b5050565b600046603d036200057057600960009054906101000a90046001600160a01b03166001600160a01b031663977ebc0d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056b9190620010c5565b905090565b46608003620005cd57600960009054906101000a90046001600160a01b03166001600160a01b0316635cb485926040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000545573d6000803e3d6000fd5b4661a516036200062b57600960009054906101000a90046001600160a01b03166001600160a01b03166331b2cc456040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000545573d6000803e3d6000fd5b4661a86a14806200063d57504661a869145b156200069757600960009054906101000a90046001600160a01b03166001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000545573d6000803e3d6000fd5b600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000545573d6000803e3d6000fd5b466038141580620006fa575047155b8062000709575060648160ff16115b156200071457505050565b6040805160028082526060820183526000926020830190803683370190505090507310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000788573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007ae9190620010c5565b81600081518110620007c457620007c46200110f565b60200260200101906001600160a01b031690816001600160a01b03168152505073d41c4805a9a3128f9f7a7074da25965371ba50d5816001815181106200080f576200080f6200110f565b6001600160a01b0390921660209283029190910190910152600060646200083a60ff85164762001125565b62000846919062001147565b604051637ff36ab560e01b81529091507310ed43c718714eb63d5aa57b78b54704e256024e90637ff36ab59083906200088b906000908790309042906004016200115e565b60006040518083038185885af193505050508015620008ce57506040513d6000823e601f3d908101601f19168201604052620008cb9190810190620011ca565b60015b62000902576040517f25e5b5d6a75d710b01aa69b7d801416ede2ac820ad5624b7904f4f07c18d8bcb90600090a162000cf4565b60008160018351620009159190620010a9565b815181106200092857620009286200110f565b60200260200101519050806000036200096d576040517f72652bf72ffaecc907e7154fde4908f7b8b1990b439361aa0d60b08a029b8af590600090a150505050505050565b60006200097c60648362001147565b60405163a9059cbb60e01b81526001600160a01b038a1660048201526024810182905290915073d41c4805a9a3128f9f7a7074da25965371ba50d590819063a9059cbb906044016020604051808303816000875af1158015620009e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a0991906200127a565b62000a6c5760405162461bcd60e51b815260206004820152602c60248201527f436f696e73636f706520746f6b656e732073686f756c64207472616e7366657260448201526b3932b2103a379037bbb732b960a11b6064820152608401620000cb565b6040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa15801562000ab1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad791906200129e565b60405163095ea7b360e01b81527310ed43c718714eb63d5aa57b78b54704e256024e6004820152602481018290529093506001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801562000b3c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b6291906200127a565b62000bbf5760405162461bcd60e51b815260206004820152602660248201527f436f696e73636f706520616c6c6f77616e63652073686f756c642062652061706044820152651c1c9bdd995960d21b6064820152608401620000cb565b60405163f305d71960e01b815273d41c4805a9a3128f9f7a7074da25965371ba50d560048201526024810184905260006044820181905260648201526001600160a01b03891660848201524260a48201527310ed43c718714eb63d5aa57b78b54704e256024e9063f305d71990479060c40160606040518083038185885af19350505050801562000c6f575060408051601f3d908101601f1916820190925262000c6c91810190620012b8565b60015b62000ca3576040517f6718387a9043fc8a3802cb3a39fbc73b7566da3b449b3c0b3a0380d2f1df50f790600090a162000cef565b6040805184815260208101849052908101829052606081018690527fa5f09fb3c4bcd4c0b06d0dca5857cd003ff673656fcde3b263ff080f6b36617c9060800160405180910390a15050505b505050505b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000d3c5762000d3c62000cfb565b604052919050565b600082601f83011262000d5657600080fd5b81516001600160401b0381111562000d725762000d7262000cfb565b602062000d88601f8301601f1916820162000d11565b828152858284870101111562000d9d57600080fd5b60005b8381101562000dbd57858101830151828201840152820162000da0565b506000928101909101919091529392505050565b805160ff8116811462000de357600080fd5b919050565b80516001600160a01b038116811462000de357600080fd5b805161ffff8116811462000de357600080fd5b6000806000806000806000806000806101408b8d03121562000e3457600080fd5b8a516001600160401b038082111562000e4c57600080fd5b62000e5a8e838f0162000d44565b9b5060208d015191508082111562000e7157600080fd5b5062000e808d828e0162000d44565b99505062000e9160408c0162000dd1565b975060608b0151965062000ea860808c0162000de8565b955062000eb860a08c0162000de8565b945062000ec860c08c0162000e00565b935062000ed860e08c0162000e00565b925062000ee96101008c0162000de8565b915062000efa6101208c0162000dd1565b90509295989b9194979a5092959850565b600181811c9082168062000f2057607f821691505b60208210810362000f4157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000f9557600081815260208120601f850160051c8101602086101562000f705750805b601f850160051c820191505b8181101562000f915782815560010162000f7c565b5050505b505050565b81516001600160401b0381111562000fb65762000fb662000cfb565b62000fce8162000fc7845462000f0b565b8462000f47565b602080601f83116001811462001006576000841562000fed5750858301515b600019600386901b1c1916600185901b17855562000f91565b600085815260208120601f198616915b82811015620010375788860151825594840194600190910190840162001016565b5085821015620010565787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b6000826200108e576200108e62001066565b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115620010bf57620010bf62001093565b92915050565b600060208284031215620010d857600080fd5b620010e38262000de8565b9392505050565b61ffff81811683821601908082111562001108576200110862001093565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161562001142576200114262001093565b500290565b60008262001159576200115962001066565b500490565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015620011aa5784516001600160a01b03168352938301939183019160010162001183565b50506001600160a01b039690961660408501525050506060015292915050565b60006020808385031215620011de57600080fd5b82516001600160401b0380821115620011f657600080fd5b818501915085601f8301126200120b57600080fd5b81518181111562001220576200122062000cfb565b8060051b91506200123384830162000d11565b81815291830184019184810190888411156200124e57600080fd5b938501935b838510156200126e5784518252938501939085019062001253565b98975050505050505050565b6000602082840312156200128d57600080fd5b81518015158114620010e357600080fd5b600060208284031215620012b157600080fd5b5051919050565b600080600060608486031215620012ce57600080fd5b8351925060208401519150604084015190509250925092565b60805160a05160c0516124076200133a600039600081816103900152818161138d015281816118ac01526118e7015260006102fe01526000818161027401528181611d8c0152611dc401526124076000f3fe6080604052600436106101c65760003560e01c80636ddd1713116100f7578063c492f04611610095578063e086e5ec11610064578063e086e5ec146105c3578063ecfeb5ba146105d8578063f2fde38b146105f9578063ffa1ad741461061957600080fd5b8063c492f04614610504578063c5f956af14610524578063d731df4014610544578063dd62ed3e1461057d57600080fd5b80638da5cb5b116100d15780638da5cb5b1461049157806395d89b41146104af57806399b64de1146104c4578063a9059cbb146104e457600080fd5b80636ddd17131461042957806370a082311461045c578063715018a61461047c57600080fd5b80633ae2f3541161016457806351bc3c851161013e57806351bc3c85146103b25780635e35359e146103c95780636605bfda146103e95780636d8aa8f81461040957600080fd5b80633ae2f3541461032857806340d7a1ba1461035657806349bd5a5e1461037e57600080fd5b806318160ddd116101a057806318160ddd1461026557806323b872dd146102a257806330369483146102c2578063313ce567146102ea57600080fd5b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461022d57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e761062e565b6040516101f49190611ee5565b60405180910390f35b34801561020957600080fd5b5061021d610218366004611f66565b6106c0565b60405190151581526020016101f4565b34801561023957600080fd5b5060095461024d906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b34801561027157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016101f4565b3480156102ae57600080fd5b5061021d6102bd366004611f92565b6106d7565b3480156102ce57600080fd5b5061024d7310ed43c718714eb63d5aa57b78b54704e256024e81565b3480156102f657600080fd5b5060405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101f4565b34801561033457600080fd5b506005546103439061ffff1681565b60405161ffff90911681526020016101f4565b34801561036257600080fd5b5061024d73d41c4805a9a3128f9f7a7074da25965371ba50d581565b34801561038a57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103be57600080fd5b506103c761077a565b005b3480156103d557600080fd5b506103c76103e4366004611f92565b6107e7565b3480156103f557600080fd5b506103c7610404366004611fd3565b61096b565b34801561041557600080fd5b506103c7610424366004611ffe565b610ab1565b34801561043557600080fd5b5060095461021d907501000000000000000000000000000000000000000000900460ff1681565b34801561046857600080fd5b50610294610477366004611fd3565b610b90565b34801561048857600080fd5b506103c7610bb2565b34801561049d57600080fd5b506000546001600160a01b031661024d565b3480156104bb57600080fd5b506101e7610c6e565b3480156104d057600080fd5b506103c76104df366004612032565b610c7d565b3480156104f057600080fd5b5061021d6104ff366004611f66565b610d5d565b34801561051057600080fd5b506103c761051f366004612065565b610d6a565b34801561053057600080fd5b5060085461024d906001600160a01b031681565b34801561055057600080fd5b5061021d61055f366004611fd3565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561058957600080fd5b506102946105983660046120eb565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105cf57600080fd5b506103c7610e94565b3480156105e457600080fd5b506005546103439062010000900461ffff1681565b34801561060557600080fd5b506103c7610614366004611fd3565b610f2a565b34801561062557600080fd5b50610294600181565b60606006805461063d90612124565b80601f016020809104026020016040519081016040528092919081815260200182805461066990612124565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b5050505050905090565b60006106cd338484611073565b5060015b92915050565b6001600160a01b0383166000908152600260209081526040808320338452909152812054828110156107505760405162461bcd60e51b815260206004820152601660248201527f696e73756666696369656e7420616c6c6f77616e63650000000000000000000060448201526064015b60405180910390fd5b610764853361075f86856121a6565b611073565b61076f8585856111c3565b506001949350505050565b6000546001600160a01b031633146107d45760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610747565b6107e56107e030610b90565b61141c565b565b6000546001600160a01b031633146108415760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610747565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd91906121b9565b6109195760405162461bcd60e51b815260206004820152601160248201527f7472616e736665722072656a65637465640000000000000000000000000000006044820152606401610747565b816001600160a01b0316836001600160a01b03167f010075e23dbdfd6a698d93677cbca9495cc8cff68ec1243c6c563ace274559248360405161095e91815260200190565b60405180910390a3505050565b6000546001600160a01b031633146109c55760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610747565b6001600160a01b038116610a1b5760405162461bcd60e51b815260206004820152601f60248201527f747265617375727920616464726573732063616e6e6f74206265207a65726f006044820152606401610747565b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831690811790915560008181526003602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f62c65ec1bb8c7d4b3758b4959a649569528cdd5ac7f4f73191f024e4988b10bc9190a250565b6000546001600160a01b03163314610b0b5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610747565b600980548215157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9091161790556040517fdd526d21b1c83827f93284dd17704000fc8ff904235f50397126ca4e611163eb90610b8590831515815260200190565b60405180910390a150565b6001600160a01b0381166000908152600160205260408120546106d190611768565b6000546001600160a01b03163314610c0c5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610747565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60606007805461063d90612124565b6000546001600160a01b03163314610cd75760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610747565b610ce182826117ff565b6005805461ffff8481167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216821762010000918516918202179092556040805191825260208201929092527f595beaf21d0d68a0474e20af31976a36304242d92b8531ea0229d3985e77a8d7910160405180910390a15050565b60006106cd3384846111c3565b6000546001600160a01b03163314610dc45760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610747565b60005b82811015610e53578160036000868685818110610de657610de66121d6565b9050602002016020810190610dfb9190611fd3565b6001600160a01b03168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610e4b81612205565b915050610dc7565b507f3b93f82cf4c14d64595ea961646f6c00fae67484acc1b7d2285aefcbb3ebe41a838383604051610e879392919061223d565b60405180910390a1505050565b6000546001600160a01b03163314610eee5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610747565b6008546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f27573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610f845760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610747565b6001600160a01b0381166110005760405162461bcd60e51b815260206004820152602b60248201527f63616c6c207468652072656e6f756e63654f776e65727368697020666f72207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610747565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b0383166110ee5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610747565b6001600160a01b03821661116a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610747565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161095e565b6001600160a01b03831661123f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610747565b6001600160a01b0382166112bb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610747565b600081116113315760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610747565b6000546001600160a01b0384811691161480159061135d57506000546001600160a01b03838116911614155b8015611384575060095474010000000000000000000000000000000000000000900460ff16155b80156113c257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b80156113e957506009547501000000000000000000000000000000000000000000900460ff165b1561140c5760006113f930610b90565b9050801561140a5761140a8161141c565b505b611417838383611861565b505050565b600980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611490576114906121d6565b60200260200101906001600160a01b031690816001600160a01b0316815250506114b8611b06565b816001815181106114cb576114cb6121d6565b6001600160a01b0392831660209182029290920101526009546114f19130911684611073565b46603d036115bc576009546008546040517f4d1bf6a90000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692634d1bf6a99261154f92879260009288929116904290600401612296565b600060405180830381600087803b15801561156957600080fd5b505af192505050801561157a575060015b6115b7576040518281527fa35f1be3f11b1225e85d53d17073787683b56a8062f65a543ae4d6c4871ad98b906020015b60405180910390a161173c565b61173c565b4661a5160361161b576009546008546040517f209a6f2a0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263209a6f2a9261154f92879260009288929116904290600401612296565b4661a86a148061162c57504661a869145b15611687576009546008546040517f762b15620000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263762b15629261154f92879260009288929116904290600401612296565b6009546008546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263791ac947926116dd92879260009288929116904290600401612296565b600060405180830381600087803b1580156116f757600080fd5b505af1925050508015611708575060015b61173c576040518281527fa35f1be3f11b1225e85d53d17073787683b56a8062f65a543ae4d6c4871ad98b906020016115aa565b5050600980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60006004548211156117e25760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610747565b60006117ec611cff565b90506117f88184612307565b9392505050565b601461180b8284612342565b61ffff16111561185d5760405162461bcd60e51b815260206004820152601f60248201527f466565732063616e6e6f742062652067726561746572207468616e20323025006044820152606401610747565b5050565b6001600160a01b03831660009081526003602052604081205460ff161580156118a357506001600160a01b03831660009081526003602052604090205460ff16155b801561191b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148061191b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b8015611942575060095474010000000000000000000000000000000000000000900460ff16155b90506000806000806000806000611959888a611d22565b965096509650965096509650965086600160008d6001600160a01b03166001600160a01b031681526020019081526020016000205461199891906121a6565b6001600160a01b03808d1660009081526001602052604080822093909355908c16815220546119c8908790612364565b6001600160a01b03808c1660008181526001602052604090819020939093559151908d16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a1c9087815260200190565b60405180910390a38315611a9f5730600090815260016020526040902054611a45908590612364565b30600081815260016020526040908190209290925590516001600160a01b038d16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a969085815260200190565b60405180910390a35b8415611af95784600454611ab391906121a6565b600455604080516001600160a01b038d168152602081018490527fc61be35e4ab75c2faea538c5ca06e3667b87df8657cdfb88d0f365df8115e81f910160405180910390a15b5050505050505050505050565b600046603d03611b8c57600960009054906101000a90046001600160a01b03166001600160a01b031663977ebc0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b879190612377565b905090565b46608003611be757600960009054906101000a90046001600160a01b03166001600160a01b0316635cb485926040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b4661a51603611c4357600960009054906101000a90046001600160a01b03166001600160a01b03166331b2cc456040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b4661a86a1480611c5457504661a869145b15611cac57600960009054906101000a90046001600160a01b03166001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b6000806000611d0c611d82565b9092509050611d1b8183612307565b9250505090565b600080600080600080600080600080611d3b8c8c611df2565b925092509250600080600080611d528f8787611e7e565b9350935093509350838383838a8a8a9d509d509d509d509d509d509d505050505050505092959891949750929550565b60045460009081907f0000000000000000000000000000000000000000000000000000000000000000611db58183612307565b821015611de9575050600454927f000000000000000000000000000000000000000000000000000000000000000092509050565b90939092509050565b600080600084611e0a57508291506000905080611e77565b600554600090606490611e219061ffff1687612394565b611e2b9190612307565b600554909150600090606490611e4b9062010000900461ffff1688612394565b611e559190612307565b9050600081611e6484896121a6565b611e6e91906121a6565b95509193509150505b9250925092565b6000806000806000611e8e611cff565b90506000611e9c828a612394565b90506000611eaa838a612394565b90506000611eb8848a612394565b9050600081611ec784866121a6565b611ed191906121a6565b939c939b5091995097509095505050505050565b600060208083528351808285015260005b81811015611f1257858101830151858201604001528201611ef6565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6001600160a01b0381168114610f2757600080fd5b60008060408385031215611f7957600080fd5b8235611f8481611f51565b946020939093013593505050565b600080600060608486031215611fa757600080fd5b8335611fb281611f51565b92506020840135611fc281611f51565b929592945050506040919091013590565b600060208284031215611fe557600080fd5b81356117f881611f51565b8015158114610f2757600080fd5b60006020828403121561201057600080fd5b81356117f881611ff0565b803561ffff8116811461202d57600080fd5b919050565b6000806040838503121561204557600080fd5b61204e8361201b565b915061205c6020840161201b565b90509250929050565b60008060006040848603121561207a57600080fd5b833567ffffffffffffffff8082111561209257600080fd5b818601915086601f8301126120a657600080fd5b8135818111156120b557600080fd5b8760208260051b85010111156120ca57600080fd5b602092830195509350508401356120e081611ff0565b809150509250925092565b600080604083850312156120fe57600080fd5b823561210981611f51565b9150602083013561211981611f51565b809150509250929050565b600181811c9082168061213857607f821691505b602082108103612171577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156106d1576106d1612177565b6000602082840312156121cb57600080fd5b81516117f881611ff0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361223657612236612177565b5060010190565b6040808252810183905260008460608301825b8681101561228057823561226381611f51565b6001600160a01b0316825260209283019290910190600101612250565b5080925050508215156020830152949350505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122e65784516001600160a01b0316835293830193918301916001016122c1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261233d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b61ffff81811683821601908082111561235d5761235d612177565b5092915050565b808201808211156106d1576106d1612177565b60006020828403121561238957600080fd5b81516117f881611f51565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123cc576123cc612177565b50029056fea2646970667358221220ceb6e1f0df6696ac4b3f2a5d04fd7082b36446daad3e1c71e39283f7d11ff7bd64736f6c63430008100033000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000661efdf12d1653cf3400000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000092b588ea9d51e4341fe361e715c0edfc5086fb71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001717afbe81bb09cbd283f18474349efe2c27dced000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000744756d6244657600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006c494d6164655468697350726f6a656374496e32486f757273427574495468696e6b596f7553686f756c64427579497442656361757365494e6565644d6f6e6579466f724e65774950686f6e65416e644e6574666c6978537562736372697074696f6e4e6565647350617965640000000000000000000000000000000000000000