Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- ZaddyInu
- Optimization enabled
- true
- Compiler version
- v0.8.9+commit.e5eed63a
- Optimization runs
- 200
- EVM Version
- london
- Verified at
- 2026-02-07T18:19:01.584877Z
ZaddyInu.sol
pragma solidity ^0.8.9;
pragma experimental ABIEncoderV2;
// SPDX-License-Identifier:MIT
interface IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
function calculateBonusReflection(address _user) external;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
contract Ownable is Context {
address payable private _owner;
address payable private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
_owner = _msgSender();
emit OwnershipTransferred(address(0), _owner);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = payable(address(0));
}
function transferOwnership(address payable newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function geUnlockTime() public view returns (uint256) {
return _lockTime;
}
//Locks the contract for owner for the amount of time provided
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = payable(address(0));
_lockTime = block.timestamp + time;
emit OwnershipTransferred(_owner, address(0));
}
//Unlocks the contract for owner when _lockTime is exceeds
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(block.timestamp > _lockTime , "Contract is locked until defined days");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
_previousOwner = payable(address(0));
}
}
// Protocol by team BloctechSolutions.com
contract ZaddyInu is Context, IERC20, Ownable {
using SafeMath for uint256;
mapping(address => uint256) private _rOwned;
mapping(address => uint256) private _tOwned;
mapping(address => uint256) private _additionalBalance;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _isExcludedFromFee;
mapping(address => bool) private _isExcluded;
mapping(address => bool) private _isExcludedFromMaxTx;
address[] private _excluded;
uint256 private constant MAX = ~uint256(0);
uint256 private _tTotal = 1 * 1e18 * 1e18;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
string private _name = "Zaddy Inu";
string private _symbol = "ZADDY";
uint8 private _decimals = 18;
address public uniswapPair;
IERC20 public token2;
address public burnAddress = 0x000000000000000000000000000000000000dEaD;
uint256 public _maxTxAmount = _tTotal.mul(1).div(1000); // should be 0.1% percent per transaction
uint256 _totalFeePerTx;
uint256 public reflectionInc = 100;
uint256 public pairValue = 1 * 1e8 * 1e18;
bool public reflectionFeesdiabled;
bool public _tradingOpen;
bool public delegateCall;
uint256 public _holderFee = 500; // 50% of tax fee will be redistributed to holders
uint256 public _burnFee = 500; // 50% of tax fee will be added to burn address
uint256 public _buyFee = 40; // 4% by default
uint256 public _sellFee = 80; // 8% by default
uint256 public _additionalSellFee = 300; // 30% by default
constructor() {
_rOwned[owner()] = _rTotal;
//exclude owner and this contract from fee
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
// exclude from max tx
_isExcludedFromMaxTx[owner()] = true;
_isExcludedFromMaxTx[address(this)] = true;
_isExcludedFromMaxTx[burnAddress] = true;
emit Transfer(address(0), owner(), _tTotal);
}
function name() public view override returns (string memory) {
return _name;
}
function symbol() public view override returns (string memory) {
return _symbol;
}
function decimals() public view override returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcluded[account]) return _tOwned[account];
return
tokenFromReflection(
_rOwned[account]
).sub(_additionalBalance[account]);
}
function reflectionBonusBalance(address account)
public
view
returns (uint256)
{
if (_isExcluded[account]) return 0;
return _additionalBalance[account];
}
function getUserToken2Balance(address account)
public
view
returns (uint256)
{
return token2.balanceOf(account);
}
function transfer(address recipient, uint256 amount)
public
override
returns (bool)
{
_transfer(_msgSender(), recipient, amount);
return true;
}
function burn(uint256 amount) external onlyOwner returns (bool) {
_transfer(_msgSender(), burnAddress, amount);
return true;
}
function allowance(address owner, address spender)
public
view
override
returns (uint256)
{
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount)
public
override
returns (bool)
{
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(
sender,
_msgSender(),
_allowances[sender][_msgSender()].sub(
amount,
"BEP20: transfer amount exceeds allowance"
)
);
return true;
}
function increaseAllowance(address spender, uint256 addedValue)
public
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].add(addedValue)
);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue)
public
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].sub(
subtractedValue,
"BEP20: decreased allowance below zero"
)
);
return true;
}
function isExcludedFromReward(address account) public view returns (bool) {
return _isExcluded[account];
}
function totalFees() public view returns (uint256) {
return _tFeeTotal;
}
function deliver(uint256 tAmount) public {
require(
!_isExcluded[_msgSender()],
"Excluded addresses cannot call this function"
);
uint256 rAmount = tAmount.mul(_getRate());
_rOwned[_msgSender()] = _rOwned[_msgSender()].sub(rAmount);
_rTotal = _rTotal.sub(rAmount);
_tFeeTotal = _tFeeTotal.add(tAmount);
}
function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
public
view
returns (uint256)
{
require(tAmount <= _tTotal, "Amount must be less than supply");
if (!deductTransferFee) {
uint256 rAmount = tAmount.mul(_getRate());
return rAmount;
} else {
uint256 rAmount = tAmount.mul(_getRate());
uint256 rTransferAmount = rAmount.sub(
getTotalFeePerTx(tAmount).mul(_getRate())
);
return rTransferAmount;
}
}
function tokenFromReflection(uint256 rAmount)
public
view
returns (uint256)
{
require(
rAmount <= _rTotal,
"Amount must be less than total reflections"
);
uint256 currentRate = _getRate();
return rAmount.div(currentRate);
}
function excludeFromReward(address account) public onlyOwner {
require(!_isExcluded[account], "Account is already excluded");
if (_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function includeInReward(address account) external onlyOwner {
require(_isExcluded[account], "Account is already excluded");
for (uint256 i = 0; i < _excluded.length; i++) {
if (_excluded[i] == account) {
_excluded[i] = _excluded[_excluded.length - 1];
_rOwned[account] = _tOwned[account].mul(_getRate());
_tOwned[account] = 0;
_isExcluded[account] = false;
_excluded.pop();
break;
}
}
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
}
function setMaxTxPercent(uint256 maxTxAmount) public onlyOwner {
_maxTxAmount = maxTxAmount;
}
function setExcludeFromMaxTx(address _address, bool value)
public
onlyOwner
{
_isExcludedFromMaxTx[_address] = value;
}
function setFeePercent(uint256 holderFee, uint256 burnFee)
external
onlyOwner
{
_holderFee = holderFee;
_burnFee = burnFee;
}
function setBuyFee(uint256 buyFee) external onlyOwner {
_buyFee = buyFee;
}
function setSellFee(uint256 sellFee, uint256 additionalFee)
external
onlyOwner
{
_sellFee = sellFee;
_additionalSellFee = additionalFee;
}
function setReflectionFees(bool _state) external onlyOwner {
reflectionFeesdiabled = _state;
}
function changeBonusValues(uint256 _percent, uint256 _amount)
public
onlyOwner
{
reflectionInc = _percent;
pairValue = _amount;
}
function setLpAddress(address _pair)
external
onlyOwner
{
uniswapPair = _pair;
}
function setToken2(IERC20 _token2) external onlyOwner {
token2 = _token2;
}
function startTrading() external onlyOwner {
require(!_tradingOpen, "Tradiing already enabled");
_tradingOpen = true;
}
//to receive BNB from uniswapRouter when swapping
receive() external payable {}
function _getRate() private view returns (uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function getTotalFeePerTx(uint256 tAmount) public view returns (uint256) {
uint256 percentage = tAmount.mul(_totalFeePerTx).div(1e3);
return percentage;
}
function _getCurrentSupply() private view returns (uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (
_rOwned[_excluded[i]] > rSupply ||
_tOwned[_excluded[i]] > tSupply
) return (_rTotal, _tTotal);
rSupply = rSupply.sub(_rOwned[_excluded[i]]);
tSupply = tSupply.sub(_tOwned[_excluded[i]]);
}
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function isExcludedFromFee(address account) public view returns (bool) {
return _isExcludedFromFee[account];
}
function isExcludedFromMaxTx(address account) public view returns (bool) {
return _isExcludedFromMaxTx[account];
}
function _approve(
address owner,
address spender,
uint256 amount
) private {
require(owner != address(0), "BEP20: approve from the zero address");
require(spender != address(0), "BEP20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(
address from,
address to,
uint256 amount
) private {
require(from != address(0), "BEP20: transfer from the zero address");
require(to != address(0), "BEP20: transfer to the zero address");
require(amount > 0, "BEP20: Transfer amount must be greater than zero");
if (
_isExcludedFromMaxTx[from] == false &&
_isExcludedFromMaxTx[to] == false // by default false
) {
if (!_tradingOpen) {
require(
from != uniswapPair && to != uniswapPair,
"Trading is not enabled"
);
}
}
//indicates if fee should be deducted from transfer
bool takeFee = true;
//if any account belongs to _isExcludedFromFee account then remove the fee
if (
_isExcludedFromFee[from] ||
_isExcludedFromFee[to] ||
reflectionFeesdiabled
) {
takeFee = false;
}
//transfer amount, it will take tax, burn, liquidity fee
_tokenTransfer(from, to, amount, takeFee);
}
//this method is responsible for taking all fee, if takeFee is true
function _tokenTransfer(
address sender,
address recipient,
uint256 amount,
bool takeFee
) private {
if (!takeFee) {
_totalFeePerTx = 0;
} else if (sender == uniswapPair) {
_totalFeePerTx = _buyFee;
} else {
if (amount > _maxTxAmount) {
_totalFeePerTx = _additionalSellFee;
}
_totalFeePerTx = _sellFee;
}
if (_isExcluded[sender] && !_isExcluded[recipient]) {
_transferFromExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && _isExcluded[recipient]) {
_transferToExcluded(sender, recipient, amount);
} else if (_isExcluded[sender] && _isExcluded[recipient]) {
_transferBothExcluded(sender, recipient, amount);
} else {
_transferStandard(sender, recipient, amount);
}
if (!_isExcludedFromMaxTx[sender]) {
delegateCall = true;
calculateBonusReflection(sender);
}
if (!_isExcludedFromMaxTx[recipient]) {
delegateCall = true;
calculateBonusReflection(recipient);
}
}
function calculateBonusReflection(address _user) public override {
uint256 userBalance1 = balanceOf(_user).div(pairValue);
uint256 userBalance2 = getUserToken2Balance(_user);
uint256 currentRate = _getRate();
uint256 rewardBalance;
if (balanceOf(_user) >= pairValue) {
if (userBalance2 >= userBalance1) {
_rOwned[_user] = _rOwned[_user].sub(_additionalBalance[_user].mul(currentRate));
rewardBalance = _rOwned[_user].mul(reflectionInc).div(100);
_rOwned[_user] = _rOwned[_user].add(rewardBalance);
_additionalBalance[_user] = tokenFromReflection(rewardBalance);
} else {
_rOwned[_user] = _rOwned[_user].sub(_additionalBalance[_user].mul(currentRate));
rewardBalance = userBalance1.sub(
userBalance1.sub(userBalance2)
);
rewardBalance = rewardBalance.mul(pairValue).mul(currentRate);
rewardBalance = rewardBalance.mul(reflectionInc).div(100);
_rOwned[_user] = _rOwned[_user].add(rewardBalance);
_additionalBalance[_user] = tokenFromReflection(rewardBalance);
}
}
if (delegateCall) {
delegateCall = false;
token2.calculateBonusReflection(_user);
}
}
function _transferStandard(
address sender,
address recipient,
uint256 tAmount
) private {
uint256 currentRate = _getRate();
uint256 tTransferAmount = tAmount.sub(getTotalFeePerTx(tAmount));
uint256 rAmount = tAmount.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(
getTotalFeePerTx(tAmount).mul(currentRate)
);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeAllFee(tAmount, currentRate);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferToExcluded(
address sender,
address recipient,
uint256 tAmount
) private {
uint256 currentRate = _getRate();
uint256 tTransferAmount = tAmount.sub(getTotalFeePerTx(tAmount));
uint256 rAmount = tAmount.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(
getTotalFeePerTx(tAmount).mul(currentRate)
);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeAllFee(tAmount, currentRate);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferFromExcluded(
address sender,
address recipient,
uint256 tAmount
) private {
uint256 currentRate = _getRate();
uint256 tTransferAmount = tAmount.sub(getTotalFeePerTx(tAmount));
uint256 rAmount = tAmount.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(
getTotalFeePerTx(tAmount).mul(currentRate)
);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeAllFee(tAmount, currentRate);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferBothExcluded(
address sender,
address recipient,
uint256 tAmount
) private {
uint256 currentRate = _getRate();
uint256 tTransferAmount = tAmount.sub(getTotalFeePerTx(tAmount));
uint256 rAmount = tAmount.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(
getTotalFeePerTx(tAmount).mul(currentRate)
);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeAllFee(tAmount, currentRate);
emit Transfer(sender, recipient, tTransferAmount);
}
function _takeAllFee(uint256 tAmount, uint256 currentRate) internal {
uint256 tAllFee = getTotalFeePerTx(tAmount);
uint256 tBurnFee = tAllFee.mul(_burnFee).div(1e3);
uint256 rBurnFee = tBurnFee.mul(currentRate);
_rOwned[burnAddress] = _rOwned[burnAddress].add(rBurnFee);
if (_isExcluded[burnAddress])
_tOwned[burnAddress] = _tOwned[burnAddress].add(tBurnFee);
emit Transfer(_msgSender(), burnAddress, tBurnFee);
uint256 tHolderFee = tAllFee.mul(_holderFee).div(1e3);
uint256 rHolderFee = tHolderFee.mul(currentRate);
_rTotal = _rTotal.sub(rHolderFee);
_tFeeTotal = _tFeeTotal.add(tHolderFee);
}
}
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b > a) return (false, 0);
return (true, a - b);
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a / b);
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a % b);
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) return 0;
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: modulo by zero");
return a % b;
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
return a - b;
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a / b;
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a % b;
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"london","compilationTarget":{"ZaddyInu.sol":"ZaddyInu"}}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_additionalSellFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_burnFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_buyFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_holderFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_sellFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"_tradingOpen","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"burn","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"burnAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"calculateBonusReflection","inputs":[{"type":"address","name":"_user","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeBonusValues","inputs":[{"type":"uint256","name":"_percent","internalType":"uint256"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"delegateCall","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"deliver","inputs":[{"type":"uint256","name":"tAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"excludeFromFee","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"excludeFromReward","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"geUnlockTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getTotalFeePerTx","inputs":[{"type":"uint256","name":"tAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserToken2Balance","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"includeInFee","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"includeInReward","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isExcludedFromFee","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isExcludedFromMaxTx","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isExcludedFromReward","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"lock","inputs":[{"type":"uint256","name":"time","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"pairValue","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"reflectionBonusBalance","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"reflectionFeesdiabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"reflectionFromToken","inputs":[{"type":"uint256","name":"tAmount","internalType":"uint256"},{"type":"bool","name":"deductTransferFee","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"reflectionInc","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setBuyFee","inputs":[{"type":"uint256","name":"buyFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setExcludeFromMaxTx","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"bool","name":"value","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeePercent","inputs":[{"type":"uint256","name":"holderFee","internalType":"uint256"},{"type":"uint256","name":"burnFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setLpAddress","inputs":[{"type":"address","name":"_pair","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxTxPercent","inputs":[{"type":"uint256","name":"maxTxAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setReflectionFees","inputs":[{"type":"bool","name":"_state","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSellFee","inputs":[{"type":"uint256","name":"sellFee","internalType":"uint256"},{"type":"uint256","name":"additionalFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setToken2","inputs":[{"type":"address","name":"_token2","internalType":"contract IERC20"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"startTrading","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"token2","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenFromReflection","inputs":[{"type":"uint256","name":"rAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalFees","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address payable"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"uniswapPair","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unlock","inputs":[]},{"type":"receive","stateMutability":"payable"}]
Contract Creation Code
0x60806040526ec097ce7bc90715b34b9f1000000000600b8190556200002790600019620004a3565b6200003590600019620004d0565b600c55604080518082019091526009808252685a6164647920496e7560b81b60209092019182526200006a91600e91620003e7565b50604080518082019091526005808252645a4144445960d81b60209092019182526200009991600f91620003e7565b506010805460ff1916601290811790915580546001600160a01b03191661dead179055600b54620000f8906103e890620000e490600162001c3f620002e5602090811b91909117901c565b6200037960201b62001cbe1790919060201c565b60135560646015556a52b7d2dcc80cd2e40000006016556101f46018556101f46019556028601a556050601b5561012c601c553480156200013857600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600c5460036000620001926000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160076000620001cc620003d860201b60201c565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526007909252812080549092166001908117909255600990620002256000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260099093528183208054851660019081179091556012549091168352912080549092161790556200028f6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620002d791815260200190565b60405180910390a362000560565b600082620002f65750600062000373565b6000620003048385620004ea565b9050826200031385836200050c565b14620003705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000808211620003cc5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015260640162000367565b6200037082846200050c565b6000546001600160a01b031690565b828054620003f59062000523565b90600052602060002090601f01602090048101928262000419576000855562000464565b82601f106200043457805160ff191683800117855562000464565b8280016001018555821562000464579182015b828111156200046457825182559160200191906001019062000447565b506200047292915062000476565b5090565b5b8082111562000472576000815560010162000477565b634e487b7160e01b600052601260045260246000fd5b600082620004b557620004b56200048d565b500690565b634e487b7160e01b600052601160045260246000fd5b600082821015620004e557620004e5620004ba565b500390565b6000816000190483118215151615620005075762000507620004ba565b500290565b6000826200051e576200051e6200048d565b500490565b600181811c908216806200053857607f821691505b602082108114156200055a57634e487b7160e01b600052602260045260246000fd5b50919050565b612d6380620005706000396000f3fe60806040526004361061037a5760003560e01c8063658c27a9116101d1578063a69df4b511610102578063d543dbeb116100a0578063f0d75ac01161006f578063f0d75ac014610a3d578063f28a3b6514610a5d578063f2fde38b14610a7d578063fc6f4cbb14610a9d57600080fd5b8063d543dbeb14610997578063dd467064146109b7578063dd62ed3e146109d7578063ea2f0b3714610a1d57600080fd5b8063b6c52324116100dc578063b6c5232414610928578063c0b0fda21461093d578063c816841b14610953578063cd52c7011461097857600080fd5b8063a69df4b5146108d3578063a9059cbb146108e8578063b3a8e98c1461090857600080fd5b806370d5ae051161016f57806388f820201161014957806388f82020146108475780638da5cb5b1461088057806395d89b411461089e578063a457c2d7146108b357600080fd5b806370d5ae05146107fc578063715018a61461081c5780637d1db4a51461083157600080fd5b80636ac9a870116101ab5780636ac9a8701461077c5780636f1678261461079c5780636f5e0212146107bc57806370a08231146107dc57600080fd5b8063658c27a91461070357806365d60e561461073c57806366fb61851461075c57600080fd5b80633685d419116102ab578063437823ec116102495780635342acb4116102235780635342acb41461067e578063590f897e146106b75780635b89029c146106cd57806363377140146106ed57600080fd5b8063437823ec1461061e5780634549b0391461063e57806352390c021461065e57600080fd5b80633bd5d173116102855780633bd5d173146105b2578063403a80c4146105d257806340b9a54b146105e857806342966c68146105fe57600080fd5b80633685d4191461055c578063393eabbf1461057c578063395093511461059257600080fd5b806325be124e116103185780632d838119116102f25780632d838119146104e4578063311fc7f814610504578063313ce5671461051a578063355afd1d1461053c57600080fd5b806325be124e14610477578063293230b8146104af5780632c08d3c1146104c457600080fd5b80630cc835a3116103545780630cc835a31461040357806313114a9d1461042357806318160ddd1461044257806323b872dd1461045757600080fd5b8063011d069d1461038657806306fdde03146103a8578063095ea7b3146103d357600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a136600461297c565b610ab7565b005b3480156103b457600080fd5b506103bd610af5565b6040516103ca919061299e565b60405180910390f35b3480156103df57600080fd5b506103f36103ee366004612a0b565b610b87565b60405190151581526020016103ca565b34801561040f57600080fd5b506103a661041e366004612a37565b610b9e565b34801561042f57600080fd5b50600d545b6040519081526020016103ca565b34801561044e57600080fd5b50600b54610434565b34801561046357600080fd5b506103f3610472366004612a50565b610bcd565b34801561048357600080fd5b50601154610497906001600160a01b031681565b6040516001600160a01b0390911681526020016103ca565b3480156104bb57600080fd5b506103a6610c36565b3480156104d057600080fd5b506104346104df366004612a91565b610cc9565b3480156104f057600080fd5b506104346104ff366004612a37565b610d47565b34801561051057600080fd5b5061043460155481565b34801561052657600080fd5b5060105460405160ff90911681526020016103ca565b34801561054857600080fd5b50610434610557366004612a37565b610dcb565b34801561056857600080fd5b506103a6610577366004612a91565b610def565b34801561058857600080fd5b5061043460165481565b34801561059e57600080fd5b506103f36105ad366004612a0b565b610fed565b3480156105be57600080fd5b506103a66105cd366004612a37565b611023565b3480156105de57600080fd5b5061043460185481565b3480156105f457600080fd5b50610434601a5481565b34801561060a57600080fd5b506103f3610619366004612a37565b6110fd565b34801561062a57600080fd5b506103a6610639366004612a91565b611147565b34801561064a57600080fd5b50610434610659366004612abe565b611195565b34801561066a57600080fd5b506103a6610679366004612a91565b61124a565b34801561068a57600080fd5b506103f3610699366004612a91565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156106c357600080fd5b50610434601b5481565b3480156106d957600080fd5b506103a66106e8366004612aea565b61139d565b3480156106f957600080fd5b50610434601c5481565b34801561070f57600080fd5b506103f361071e366004612a91565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561074857600080fd5b506103a6610757366004612b16565b6113f2565b34801561076857600080fd5b506103a6610777366004612a91565b61142f565b34801561078857600080fd5b506103a661079736600461297c565b6116c1565b3480156107a857600080fd5b506103a66107b736600461297c565b6116f6565b3480156107c857600080fd5b506103a66107d7366004612a91565b61172b565b3480156107e857600080fd5b506104346107f7366004612a91565b61177d565b34801561080857600080fd5b50601254610497906001600160a01b031681565b34801561082857600080fd5b506103a66117f3565b34801561083d57600080fd5b5061043460135481565b34801561085357600080fd5b506103f3610862366004612a91565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561088c57600080fd5b506000546001600160a01b0316610497565b3480156108aa57600080fd5b506103bd611855565b3480156108bf57600080fd5b506103f36108ce366004612a0b565b611864565b3480156108df57600080fd5b506103a66118b3565b3480156108f457600080fd5b506103f3610903366004612a0b565b6119ca565b34801561091457600080fd5b50610434610923366004612a91565b6119d7565b34801561093457600080fd5b50600254610434565b34801561094957600080fd5b5061043460195481565b34801561095f57600080fd5b506010546104979061010090046001600160a01b031681565b34801561098457600080fd5b506017546103f390610100900460ff1681565b3480156109a357600080fd5b506103a66109b2366004612a37565b611a1c565b3480156109c357600080fd5b506103a66109d2366004612a37565b611a4b565b3480156109e357600080fd5b506104346109f2366004612b31565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610a2957600080fd5b506103a6610a38366004612a91565b611ad0565b348015610a4957600080fd5b506103a6610a58366004612a91565b611b1b565b348015610a6957600080fd5b506017546103f39062010000900460ff1681565b348015610a8957600080fd5b506103a6610a98366004612a91565b611b67565b348015610aa957600080fd5b506017546103f39060ff1681565b6000546001600160a01b03163314610aea5760405162461bcd60e51b8152600401610ae190612b6a565b60405180910390fd5b601591909155601655565b6060600e8054610b0490612b9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3090612b9f565b8015610b7d5780601f10610b5257610100808354040283529160200191610b7d565b820191906000526020600020905b815481529060010190602001808311610b6057829003601f168201915b5050505050905090565b6000610b94338484611d19565b5060015b92915050565b6000546001600160a01b03163314610bc85760405162461bcd60e51b8152600401610ae190612b6a565b601a55565b6000610bda848484611e3d565b610c2c8433610c2785604051806060016040528060288152602001612cc1602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906120a7565b611d19565b5060019392505050565b6000546001600160a01b03163314610c605760405162461bcd60e51b8152600401610ae190612b6a565b601754610100900460ff1615610cb85760405162461bcd60e51b815260206004820152601860248201527f5472616469696e6720616c726561647920656e61626c656400000000000000006044820152606401610ae1565b6017805461ff001916610100179055565b6011546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a082319060240160206040518083038186803b158015610d0f57600080fd5b505afa158015610d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190612bda565b6000600c54821115610dae5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ae1565b6000610db86120de565b9050610dc48382611cbe565b9392505050565b600080610dc46103e8610de960145486611c3f90919063ffffffff16565b90611cbe565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b03811660009081526008602052604090205460ff16610e815760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ae1565b60005b600a54811015610fe957816001600160a01b0316600a8281548110610eab57610eab612bf3565b6000918252602090912001546001600160a01b03161415610fd757600a8054610ed690600190612c1f565b81548110610ee657610ee6612bf3565b600091825260209091200154600a80546001600160a01b039092169183908110610f1257610f12612bf3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610f6a610f4b6120de565b6001600160a01b03841660009081526004602052604090205490611c3f565b6001600160a01b038316600090815260036020908152604080832093909355600481528282208290556008905220805460ff19169055600a805480610fb157610fb1612c36565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610fe181612c4c565b915050610e84565b5050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610b94918590610c279086612101565b3360009081526008602052604090205460ff16156110985760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610ae1565b60006110ac6110a56120de565b8390611c3f565b336000908152600360205260409020549091506110c99082612160565b33600090815260036020526040902055600c546110e69082612160565b600c55600d546110f69083612101565b600d555050565b600080546001600160a01b031633146111285760405162461bcd60e51b8152600401610ae190612b6a565b61113e336012546001600160a01b031684611e3d565b5060015b919050565b6000546001600160a01b031633146111715760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600b548311156111e95760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ae1565b8161120b5760006112026111fb6120de565b8590611c3f565b9150610b989050565b60006112186111fb6120de565b9050600061124061123961122a6120de565b61123388610dcb565b90611c3f565b8390612160565b9250610b98915050565b6000546001600160a01b031633146112745760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b03811660009081526008602052604090205460ff16156112dd5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ae1565b6001600160a01b03811660009081526003602052604090205415611337576001600160a01b03811660009081526003602052604090205461131d90610d47565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000546001600160a01b031633146113c75760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461141c5760405162461bcd60e51b8152600401610ae190612b6a565b6017805460ff1916911515919091179055565b6000611440601654610de98461177d565b9050600061144d83610cc9565b905060006114596120de565b905060006016546114698661177d565b1061163d57838310611550576001600160a01b0385166000908152600560205260409020546114bb9061149c9084611c3f565b6001600160a01b03871660009081526003602052604090205490612160565b6001600160a01b03861660009081526003602052604090208190556015546114ea91606491610de99190611c3f565b6001600160a01b0386166000908152600360205260409020549091506115109082612101565b6001600160a01b03861660009081526003602052604090205561153281610d47565b6001600160a01b03861660009081526005602052604090205561163d565b6001600160a01b0385166000908152600560205260409020546115779061149c9084611c3f565b6001600160a01b0386166000908152600360205260409020556115a461159d8585612160565b8590612160565b90506115bf8261123360165484611c3f90919063ffffffff16565b90506115db6064610de960155484611c3f90919063ffffffff16565b6001600160a01b0386166000908152600360205260409020549091506116019082612101565b6001600160a01b03861660009081526003602052604090205561162381610d47565b6001600160a01b0386166000908152600560205260409020555b60175462010000900460ff16156116ba576017805462ff0000191690556011546040516366fb618560e01b81526001600160a01b038781166004830152909116906366fb618590602401600060405180830381600087803b1580156116a157600080fd5b505af11580156116b5573d6000803e3d6000fd5b505050505b5050505050565b6000546001600160a01b031633146116eb5760405162461bcd60e51b8152600401610ae190612b6a565b601b91909155601c55565b6000546001600160a01b031633146117205760405162461bcd60e51b8152600401610ae190612b6a565b601891909155601955565b6000546001600160a01b031633146117555760405162461bcd60e51b8152600401610ae190612b6a565b601080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b03811660009081526008602052604081205460ff16156117ba57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260056020908152604080832054600390925290912054610b9891906117ed90610d47565b90612160565b6000546001600160a01b0316331461181d5760405162461bcd60e51b8152600401610ae190612b6a565b600080546040516001600160a01b0390911690600080516020612ce9833981519152908390a3600080546001600160a01b0319169055565b6060600f8054610b0490612b9f565b6000610b943384610c2785604051806060016040528060258152602001612d09602591393360009081526006602090815260408083206001600160a01b038d16845290915290205491906120a7565b6001546001600160a01b031633146119195760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610ae1565b60025442116119785760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b6064820152608401610ae1565b600154600080546040516001600160a01b039384169390911691600080516020612ce983398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000610b94338484611e3d565b6001600160a01b03811660009081526008602052604081205460ff1615611a0057506000919050565b506001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314611a465760405162461bcd60e51b8152600401610ae190612b6a565b601355565b6000546001600160a01b03163314611a755760405162461bcd60e51b8152600401610ae190612b6a565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611aa48142612c67565b600255600080546040516001600160a01b0390911690600080516020612ce9833981519152908390a350565b6000546001600160a01b03163314611afa5760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314611b455760405162461bcd60e51b8152600401610ae190612b6a565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b915760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b038116611bf65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae1565b600080546040516001600160a01b0380851693921691600080516020612ce983398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082611c4e57506000610b98565b6000611c5a8385612c7f565b905082611c678583612c9e565b14610dc45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ae1565b6000808211611d0f5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610ae1565b610dc48284612c9e565b6001600160a01b038316611d7b5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae1565b6001600160a01b038216611ddc5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae1565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ea15760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ae1565b6001600160a01b038216611f035760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ae1565b60008111611f6c5760405162461bcd60e51b815260206004820152603060248201527f42455032303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610ae1565b6001600160a01b03831660009081526009602052604090205460ff16158015611fae57506001600160a01b03821660009081526009602052604090205460ff16155b1561203d57601754610100900460ff1661203d576010546001600160a01b038481166101009092041614801590611ff857506010546001600160a01b038381166101009092041614155b61203d5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610ae1565b6001600160a01b03831660009081526007602052604090205460019060ff168061207f57506001600160a01b03831660009081526007602052604090205460ff165b8061208c575060175460ff165b15612095575060005b6120a1848484846121bc565b50505050565b600081848411156120cb5760405162461bcd60e51b8152600401610ae1919061299e565b506120d68385612c1f565b949350505050565b60008060006120eb61237f565b90925090506120fa8282611cbe565b9250505090565b60008061210e8385612c67565b905083811015610dc45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ae1565b6000828211156121b25760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610ae1565b610dc48284612c1f565b806121cb576000601455612209565b6010546001600160a01b038581166101009092041614156121f157601a54601455612209565b60135482111561220257601c546014555b601b546014555b6001600160a01b03841660009081526008602052604090205460ff16801561224a57506001600160a01b03831660009081526008602052604090205460ff16155b1561225f5761225a848484612501565b61230b565b6001600160a01b03841660009081526008602052604090205460ff161580156122a057506001600160a01b03831660009081526008602052604090205460ff165b156122b05761225a848484612641565b6001600160a01b03841660009081526008602052604090205460ff1680156122f057506001600160a01b03831660009081526008602052604090205460ff165b156123005761225a848484612708565b61230b848484612799565b6001600160a01b03841660009081526009602052604090205460ff16612345576017805462ff00001916620100001790556123458461142f565b6001600160a01b03831660009081526009602052604090205460ff166120a1576017805462ff00001916620100001790556120a18361142f565b600c54600b546000918291825b600a548110156124d1578260036000600a84815481106123ae576123ae612bf3565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061241957508160046000600a84815481106123f2576123f2612bf3565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561242f57600c54600b54945094505050509091565b61247560036000600a848154811061244957612449612bf3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612160565b92506124bd60046000600a848154811061249157612491612bf3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612160565b9150806124c981612c4c565b91505061238c565b50600b54600c546124e191611cbe565b8210156124f857600c54600b549350935050509091565b90939092509050565b600061250b6120de565b9050600061252261251b84610dcb565b8490612160565b905060006125308484611c3f565b905060006125446112398561123388610dcb565b6001600160a01b03881660009081526004602052604090205490915061256a9086612160565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546125999083612160565b6001600160a01b0380891660009081526003602052604080822093909355908816815220546125c89082612101565b6001600160a01b0387166000908152600360205260409020556125eb85856127fb565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263091815260200190565b60405180910390a350505050505050565b600061264b6120de565b9050600061265b61251b84610dcb565b905060006126698484611c3f565b9050600061267d6112398561123388610dcb565b6001600160a01b0388166000908152600360205260409020549091506126a39083612160565b6001600160a01b038089166000908152600360209081526040808320949094559189168152600490915220546126d99084612101565b6001600160a01b0387166000908152600460209081526040808320939093556003905220546125c89082612101565b60006127126120de565b9050600061272261251b84610dcb565b905060006127308484611c3f565b905060006127446112398561123388610dcb565b6001600160a01b03881660009081526004602052604090205490915061276a9086612160565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546126a39083612160565b60006127a36120de565b905060006127b361251b84610dcb565b905060006127c18484611c3f565b905060006127d56112398561123388610dcb565b6001600160a01b0388166000908152600360205260409020549091506125999083612160565b600061280683610dcb565b905060006128256103e8610de960195485611c3f90919063ffffffff16565b905060006128338285611c3f565b6012546001600160a01b031660009081526003602052604090205490915061285b9082612101565b601280546001600160a01b03908116600090815260036020908152604080832095909555925490911681526008909152205460ff16156128d6576012546001600160a01b03166000908152600460205260409020546128ba9083612101565b6012546001600160a01b03166000908152600460205260409020555b6012546001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291d91815260200190565b60405180910390a360006129426103e8610de960185487611c3f90919063ffffffff16565b905060006129508287611c3f565b600c549091506129609082612160565b600c55600d546129709083612101565b600d5550505050505050565b6000806040838503121561298f57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156129cb578581018301518582016040015282016129af565b818111156129dd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612a0857600080fd5b50565b60008060408385031215612a1e57600080fd5b8235612a29816129f3565b946020939093013593505050565b600060208284031215612a4957600080fd5b5035919050565b600080600060608486031215612a6557600080fd5b8335612a70816129f3565b92506020840135612a80816129f3565b929592945050506040919091013590565b600060208284031215612aa357600080fd5b8135610dc4816129f3565b8035801515811461114257600080fd5b60008060408385031215612ad157600080fd5b82359150612ae160208401612aae565b90509250929050565b60008060408385031215612afd57600080fd5b8235612b08816129f3565b9150612ae160208401612aae565b600060208284031215612b2857600080fd5b610dc482612aae565b60008060408385031215612b4457600080fd5b8235612b4f816129f3565b91506020830135612b5f816129f3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612bb357607f821691505b60208210811415612bd457634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612bec57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612c3157612c31612c09565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600019821415612c6057612c60612c09565b5060010190565b60008219821115612c7a57612c7a612c09565b500190565b6000816000190483118215151615612c9957612c99612c09565b500290565b600082612cbb57634e487b7160e01b600052601260045260246000fd5b50049056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e042455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203e0c318c665e93a6174b25228c72acd6d9defd420b18882bae558571bc58e07d64736f6c63430008090033
Deployed ByteCode
0x60806040526004361061037a5760003560e01c8063658c27a9116101d1578063a69df4b511610102578063d543dbeb116100a0578063f0d75ac01161006f578063f0d75ac014610a3d578063f28a3b6514610a5d578063f2fde38b14610a7d578063fc6f4cbb14610a9d57600080fd5b8063d543dbeb14610997578063dd467064146109b7578063dd62ed3e146109d7578063ea2f0b3714610a1d57600080fd5b8063b6c52324116100dc578063b6c5232414610928578063c0b0fda21461093d578063c816841b14610953578063cd52c7011461097857600080fd5b8063a69df4b5146108d3578063a9059cbb146108e8578063b3a8e98c1461090857600080fd5b806370d5ae051161016f57806388f820201161014957806388f82020146108475780638da5cb5b1461088057806395d89b411461089e578063a457c2d7146108b357600080fd5b806370d5ae05146107fc578063715018a61461081c5780637d1db4a51461083157600080fd5b80636ac9a870116101ab5780636ac9a8701461077c5780636f1678261461079c5780636f5e0212146107bc57806370a08231146107dc57600080fd5b8063658c27a91461070357806365d60e561461073c57806366fb61851461075c57600080fd5b80633685d419116102ab578063437823ec116102495780635342acb4116102235780635342acb41461067e578063590f897e146106b75780635b89029c146106cd57806363377140146106ed57600080fd5b8063437823ec1461061e5780634549b0391461063e57806352390c021461065e57600080fd5b80633bd5d173116102855780633bd5d173146105b2578063403a80c4146105d257806340b9a54b146105e857806342966c68146105fe57600080fd5b80633685d4191461055c578063393eabbf1461057c578063395093511461059257600080fd5b806325be124e116103185780632d838119116102f25780632d838119146104e4578063311fc7f814610504578063313ce5671461051a578063355afd1d1461053c57600080fd5b806325be124e14610477578063293230b8146104af5780632c08d3c1146104c457600080fd5b80630cc835a3116103545780630cc835a31461040357806313114a9d1461042357806318160ddd1461044257806323b872dd1461045757600080fd5b8063011d069d1461038657806306fdde03146103a8578063095ea7b3146103d357600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a136600461297c565b610ab7565b005b3480156103b457600080fd5b506103bd610af5565b6040516103ca919061299e565b60405180910390f35b3480156103df57600080fd5b506103f36103ee366004612a0b565b610b87565b60405190151581526020016103ca565b34801561040f57600080fd5b506103a661041e366004612a37565b610b9e565b34801561042f57600080fd5b50600d545b6040519081526020016103ca565b34801561044e57600080fd5b50600b54610434565b34801561046357600080fd5b506103f3610472366004612a50565b610bcd565b34801561048357600080fd5b50601154610497906001600160a01b031681565b6040516001600160a01b0390911681526020016103ca565b3480156104bb57600080fd5b506103a6610c36565b3480156104d057600080fd5b506104346104df366004612a91565b610cc9565b3480156104f057600080fd5b506104346104ff366004612a37565b610d47565b34801561051057600080fd5b5061043460155481565b34801561052657600080fd5b5060105460405160ff90911681526020016103ca565b34801561054857600080fd5b50610434610557366004612a37565b610dcb565b34801561056857600080fd5b506103a6610577366004612a91565b610def565b34801561058857600080fd5b5061043460165481565b34801561059e57600080fd5b506103f36105ad366004612a0b565b610fed565b3480156105be57600080fd5b506103a66105cd366004612a37565b611023565b3480156105de57600080fd5b5061043460185481565b3480156105f457600080fd5b50610434601a5481565b34801561060a57600080fd5b506103f3610619366004612a37565b6110fd565b34801561062a57600080fd5b506103a6610639366004612a91565b611147565b34801561064a57600080fd5b50610434610659366004612abe565b611195565b34801561066a57600080fd5b506103a6610679366004612a91565b61124a565b34801561068a57600080fd5b506103f3610699366004612a91565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156106c357600080fd5b50610434601b5481565b3480156106d957600080fd5b506103a66106e8366004612aea565b61139d565b3480156106f957600080fd5b50610434601c5481565b34801561070f57600080fd5b506103f361071e366004612a91565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561074857600080fd5b506103a6610757366004612b16565b6113f2565b34801561076857600080fd5b506103a6610777366004612a91565b61142f565b34801561078857600080fd5b506103a661079736600461297c565b6116c1565b3480156107a857600080fd5b506103a66107b736600461297c565b6116f6565b3480156107c857600080fd5b506103a66107d7366004612a91565b61172b565b3480156107e857600080fd5b506104346107f7366004612a91565b61177d565b34801561080857600080fd5b50601254610497906001600160a01b031681565b34801561082857600080fd5b506103a66117f3565b34801561083d57600080fd5b5061043460135481565b34801561085357600080fd5b506103f3610862366004612a91565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561088c57600080fd5b506000546001600160a01b0316610497565b3480156108aa57600080fd5b506103bd611855565b3480156108bf57600080fd5b506103f36108ce366004612a0b565b611864565b3480156108df57600080fd5b506103a66118b3565b3480156108f457600080fd5b506103f3610903366004612a0b565b6119ca565b34801561091457600080fd5b50610434610923366004612a91565b6119d7565b34801561093457600080fd5b50600254610434565b34801561094957600080fd5b5061043460195481565b34801561095f57600080fd5b506010546104979061010090046001600160a01b031681565b34801561098457600080fd5b506017546103f390610100900460ff1681565b3480156109a357600080fd5b506103a66109b2366004612a37565b611a1c565b3480156109c357600080fd5b506103a66109d2366004612a37565b611a4b565b3480156109e357600080fd5b506104346109f2366004612b31565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610a2957600080fd5b506103a6610a38366004612a91565b611ad0565b348015610a4957600080fd5b506103a6610a58366004612a91565b611b1b565b348015610a6957600080fd5b506017546103f39062010000900460ff1681565b348015610a8957600080fd5b506103a6610a98366004612a91565b611b67565b348015610aa957600080fd5b506017546103f39060ff1681565b6000546001600160a01b03163314610aea5760405162461bcd60e51b8152600401610ae190612b6a565b60405180910390fd5b601591909155601655565b6060600e8054610b0490612b9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3090612b9f565b8015610b7d5780601f10610b5257610100808354040283529160200191610b7d565b820191906000526020600020905b815481529060010190602001808311610b6057829003601f168201915b5050505050905090565b6000610b94338484611d19565b5060015b92915050565b6000546001600160a01b03163314610bc85760405162461bcd60e51b8152600401610ae190612b6a565b601a55565b6000610bda848484611e3d565b610c2c8433610c2785604051806060016040528060288152602001612cc1602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906120a7565b611d19565b5060019392505050565b6000546001600160a01b03163314610c605760405162461bcd60e51b8152600401610ae190612b6a565b601754610100900460ff1615610cb85760405162461bcd60e51b815260206004820152601860248201527f5472616469696e6720616c726561647920656e61626c656400000000000000006044820152606401610ae1565b6017805461ff001916610100179055565b6011546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a082319060240160206040518083038186803b158015610d0f57600080fd5b505afa158015610d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190612bda565b6000600c54821115610dae5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ae1565b6000610db86120de565b9050610dc48382611cbe565b9392505050565b600080610dc46103e8610de960145486611c3f90919063ffffffff16565b90611cbe565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b03811660009081526008602052604090205460ff16610e815760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ae1565b60005b600a54811015610fe957816001600160a01b0316600a8281548110610eab57610eab612bf3565b6000918252602090912001546001600160a01b03161415610fd757600a8054610ed690600190612c1f565b81548110610ee657610ee6612bf3565b600091825260209091200154600a80546001600160a01b039092169183908110610f1257610f12612bf3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610f6a610f4b6120de565b6001600160a01b03841660009081526004602052604090205490611c3f565b6001600160a01b038316600090815260036020908152604080832093909355600481528282208290556008905220805460ff19169055600a805480610fb157610fb1612c36565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610fe181612c4c565b915050610e84565b5050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610b94918590610c279086612101565b3360009081526008602052604090205460ff16156110985760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610ae1565b60006110ac6110a56120de565b8390611c3f565b336000908152600360205260409020549091506110c99082612160565b33600090815260036020526040902055600c546110e69082612160565b600c55600d546110f69083612101565b600d555050565b600080546001600160a01b031633146111285760405162461bcd60e51b8152600401610ae190612b6a565b61113e336012546001600160a01b031684611e3d565b5060015b919050565b6000546001600160a01b031633146111715760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600b548311156111e95760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ae1565b8161120b5760006112026111fb6120de565b8590611c3f565b9150610b989050565b60006112186111fb6120de565b9050600061124061123961122a6120de565b61123388610dcb565b90611c3f565b8390612160565b9250610b98915050565b6000546001600160a01b031633146112745760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b03811660009081526008602052604090205460ff16156112dd5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ae1565b6001600160a01b03811660009081526003602052604090205415611337576001600160a01b03811660009081526003602052604090205461131d90610d47565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000546001600160a01b031633146113c75760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461141c5760405162461bcd60e51b8152600401610ae190612b6a565b6017805460ff1916911515919091179055565b6000611440601654610de98461177d565b9050600061144d83610cc9565b905060006114596120de565b905060006016546114698661177d565b1061163d57838310611550576001600160a01b0385166000908152600560205260409020546114bb9061149c9084611c3f565b6001600160a01b03871660009081526003602052604090205490612160565b6001600160a01b03861660009081526003602052604090208190556015546114ea91606491610de99190611c3f565b6001600160a01b0386166000908152600360205260409020549091506115109082612101565b6001600160a01b03861660009081526003602052604090205561153281610d47565b6001600160a01b03861660009081526005602052604090205561163d565b6001600160a01b0385166000908152600560205260409020546115779061149c9084611c3f565b6001600160a01b0386166000908152600360205260409020556115a461159d8585612160565b8590612160565b90506115bf8261123360165484611c3f90919063ffffffff16565b90506115db6064610de960155484611c3f90919063ffffffff16565b6001600160a01b0386166000908152600360205260409020549091506116019082612101565b6001600160a01b03861660009081526003602052604090205561162381610d47565b6001600160a01b0386166000908152600560205260409020555b60175462010000900460ff16156116ba576017805462ff0000191690556011546040516366fb618560e01b81526001600160a01b038781166004830152909116906366fb618590602401600060405180830381600087803b1580156116a157600080fd5b505af11580156116b5573d6000803e3d6000fd5b505050505b5050505050565b6000546001600160a01b031633146116eb5760405162461bcd60e51b8152600401610ae190612b6a565b601b91909155601c55565b6000546001600160a01b031633146117205760405162461bcd60e51b8152600401610ae190612b6a565b601891909155601955565b6000546001600160a01b031633146117555760405162461bcd60e51b8152600401610ae190612b6a565b601080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b03811660009081526008602052604081205460ff16156117ba57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260056020908152604080832054600390925290912054610b9891906117ed90610d47565b90612160565b6000546001600160a01b0316331461181d5760405162461bcd60e51b8152600401610ae190612b6a565b600080546040516001600160a01b0390911690600080516020612ce9833981519152908390a3600080546001600160a01b0319169055565b6060600f8054610b0490612b9f565b6000610b943384610c2785604051806060016040528060258152602001612d09602591393360009081526006602090815260408083206001600160a01b038d16845290915290205491906120a7565b6001546001600160a01b031633146119195760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610ae1565b60025442116119785760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b6064820152608401610ae1565b600154600080546040516001600160a01b039384169390911691600080516020612ce983398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000610b94338484611e3d565b6001600160a01b03811660009081526008602052604081205460ff1615611a0057506000919050565b506001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314611a465760405162461bcd60e51b8152600401610ae190612b6a565b601355565b6000546001600160a01b03163314611a755760405162461bcd60e51b8152600401610ae190612b6a565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611aa48142612c67565b600255600080546040516001600160a01b0390911690600080516020612ce9833981519152908390a350565b6000546001600160a01b03163314611afa5760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314611b455760405162461bcd60e51b8152600401610ae190612b6a565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b915760405162461bcd60e51b8152600401610ae190612b6a565b6001600160a01b038116611bf65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae1565b600080546040516001600160a01b0380851693921691600080516020612ce983398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082611c4e57506000610b98565b6000611c5a8385612c7f565b905082611c678583612c9e565b14610dc45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ae1565b6000808211611d0f5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610ae1565b610dc48284612c9e565b6001600160a01b038316611d7b5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae1565b6001600160a01b038216611ddc5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae1565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ea15760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ae1565b6001600160a01b038216611f035760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ae1565b60008111611f6c5760405162461bcd60e51b815260206004820152603060248201527f42455032303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610ae1565b6001600160a01b03831660009081526009602052604090205460ff16158015611fae57506001600160a01b03821660009081526009602052604090205460ff16155b1561203d57601754610100900460ff1661203d576010546001600160a01b038481166101009092041614801590611ff857506010546001600160a01b038381166101009092041614155b61203d5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610ae1565b6001600160a01b03831660009081526007602052604090205460019060ff168061207f57506001600160a01b03831660009081526007602052604090205460ff165b8061208c575060175460ff165b15612095575060005b6120a1848484846121bc565b50505050565b600081848411156120cb5760405162461bcd60e51b8152600401610ae1919061299e565b506120d68385612c1f565b949350505050565b60008060006120eb61237f565b90925090506120fa8282611cbe565b9250505090565b60008061210e8385612c67565b905083811015610dc45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ae1565b6000828211156121b25760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610ae1565b610dc48284612c1f565b806121cb576000601455612209565b6010546001600160a01b038581166101009092041614156121f157601a54601455612209565b60135482111561220257601c546014555b601b546014555b6001600160a01b03841660009081526008602052604090205460ff16801561224a57506001600160a01b03831660009081526008602052604090205460ff16155b1561225f5761225a848484612501565b61230b565b6001600160a01b03841660009081526008602052604090205460ff161580156122a057506001600160a01b03831660009081526008602052604090205460ff165b156122b05761225a848484612641565b6001600160a01b03841660009081526008602052604090205460ff1680156122f057506001600160a01b03831660009081526008602052604090205460ff165b156123005761225a848484612708565b61230b848484612799565b6001600160a01b03841660009081526009602052604090205460ff16612345576017805462ff00001916620100001790556123458461142f565b6001600160a01b03831660009081526009602052604090205460ff166120a1576017805462ff00001916620100001790556120a18361142f565b600c54600b546000918291825b600a548110156124d1578260036000600a84815481106123ae576123ae612bf3565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061241957508160046000600a84815481106123f2576123f2612bf3565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561242f57600c54600b54945094505050509091565b61247560036000600a848154811061244957612449612bf3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612160565b92506124bd60046000600a848154811061249157612491612bf3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612160565b9150806124c981612c4c565b91505061238c565b50600b54600c546124e191611cbe565b8210156124f857600c54600b549350935050509091565b90939092509050565b600061250b6120de565b9050600061252261251b84610dcb565b8490612160565b905060006125308484611c3f565b905060006125446112398561123388610dcb565b6001600160a01b03881660009081526004602052604090205490915061256a9086612160565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546125999083612160565b6001600160a01b0380891660009081526003602052604080822093909355908816815220546125c89082612101565b6001600160a01b0387166000908152600360205260409020556125eb85856127fb565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263091815260200190565b60405180910390a350505050505050565b600061264b6120de565b9050600061265b61251b84610dcb565b905060006126698484611c3f565b9050600061267d6112398561123388610dcb565b6001600160a01b0388166000908152600360205260409020549091506126a39083612160565b6001600160a01b038089166000908152600360209081526040808320949094559189168152600490915220546126d99084612101565b6001600160a01b0387166000908152600460209081526040808320939093556003905220546125c89082612101565b60006127126120de565b9050600061272261251b84610dcb565b905060006127308484611c3f565b905060006127446112398561123388610dcb565b6001600160a01b03881660009081526004602052604090205490915061276a9086612160565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546126a39083612160565b60006127a36120de565b905060006127b361251b84610dcb565b905060006127c18484611c3f565b905060006127d56112398561123388610dcb565b6001600160a01b0388166000908152600360205260409020549091506125999083612160565b600061280683610dcb565b905060006128256103e8610de960195485611c3f90919063ffffffff16565b905060006128338285611c3f565b6012546001600160a01b031660009081526003602052604090205490915061285b9082612101565b601280546001600160a01b03908116600090815260036020908152604080832095909555925490911681526008909152205460ff16156128d6576012546001600160a01b03166000908152600460205260409020546128ba9083612101565b6012546001600160a01b03166000908152600460205260409020555b6012546001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291d91815260200190565b60405180910390a360006129426103e8610de960185487611c3f90919063ffffffff16565b905060006129508287611c3f565b600c549091506129609082612160565b600c55600d546129709083612101565b600d5550505050505050565b6000806040838503121561298f57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156129cb578581018301518582016040015282016129af565b818111156129dd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612a0857600080fd5b50565b60008060408385031215612a1e57600080fd5b8235612a29816129f3565b946020939093013593505050565b600060208284031215612a4957600080fd5b5035919050565b600080600060608486031215612a6557600080fd5b8335612a70816129f3565b92506020840135612a80816129f3565b929592945050506040919091013590565b600060208284031215612aa357600080fd5b8135610dc4816129f3565b8035801515811461114257600080fd5b60008060408385031215612ad157600080fd5b82359150612ae160208401612aae565b90509250929050565b60008060408385031215612afd57600080fd5b8235612b08816129f3565b9150612ae160208401612aae565b600060208284031215612b2857600080fd5b610dc482612aae565b60008060408385031215612b4457600080fd5b8235612b4f816129f3565b91506020830135612b5f816129f3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612bb357607f821691505b60208210811415612bd457634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612bec57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612c3157612c31612c09565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600019821415612c6057612c60612c09565b5060010190565b60008219821115612c7a57612c7a612c09565b500190565b6000816000190483118215151615612c9957612c99612c09565b500290565b600082612cbb57634e487b7160e01b600052601260045260246000fd5b50049056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e042455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203e0c318c665e93a6174b25228c72acd6d9defd420b18882bae558571bc58e07d64736f6c63430008090033