ETH Price: $2,543.08 (-1.23%)

Token

Official BuffDoge ($Buff)
 

Overview

Max Total Supply

1,000,000,000 $Buff

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,000,000 $Buff

Value
$0.00
0x4dad7d926dd541ed8abcd6e9f3e17fe7510e5c94
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
OfficialBuffDoge

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion
File 1 of 7 : OfficialBuffDoge.sol
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity ^0.8.4;
pragma experimental ABIEncoderV2;

import "./utils/IUniswapV2Factory.sol";
import "./utils/IUniswapV2Pair.sol";
import "./utils/IUniswapV2Router02.sol";
import "./utils/IERC20.sol";
import "./utils/TimeLock.sol";

/**
 * @notice ERC20 token with cost basis tracking and restricted loss-taking
 */
contract OfficialBuffDoge is IERC20, TimeLock {

    address private constant UNISWAP_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private constant WETH           = 0xc778417E063141139Fce010982780140Aa0cD5Ab;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping(address => uint256) private _basisOf;
    mapping(address => uint256) public cooldownOf;
    mapping (address => bool) private _isAllowedTransfer;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _blackList;

    address[] private _excluded;

    string  private _NAME;
    string  private _SYMBOL;
    uint256 private _DECIMALS;
   
    uint256 private constant _MAX = ~uint256(0);
    uint256 private constant _GRANULARITY = 100;
    uint256 private constant _maxTeamMintAmount = 1e8 ether;
   
    uint256 private _tTotal;
    uint256 private _rTotal;
    
    uint256 private _tFeeTotal;
    uint256 private _tBurnTotal;
    uint256 private _tMarketingFeeTotal;

    uint256 public    _TAX_FEE; // 3%
    uint256 public   _BURN_FEE; // 3%
    uint256 public _MARKET_FEE; // 3%

    // Track original fees to bypass fees for charity account
    uint256 private mintedSupply;


    address private _shoppingCart;
    address private _rewardWallet;
    address private _pair;
    address private _owner;

    bool private _paused;
    bool private _isEnableSwapTokenforEth;

    struct Minting {
        address recipient;
        uint amount;
    }

    struct StandardFees {
        uint taxFee;
        uint rewardFee;
        uint marketFee;
        uint taxPenaltyFee;
        uint rewardPenaltyFee;
        uint marketPenaltyFee;
    }
    StandardFees private _standardFees;

    mapping(address => address) private _referralOwner;
    mapping(address => uint256) private _referralOwnerTotalFee;

    constructor (string memory _name, string memory _symbol, uint256 _decimals, uint256 _supply, address[] memory blackList) {
        _owner = msg.sender;
        _NAME = _name;
        _SYMBOL = _symbol;
        _DECIMALS = _decimals;
        _tTotal =_supply * (10 ** uint256(_DECIMALS));
        _rTotal = (_MAX - (_MAX % _tTotal));

        // setup uniswap pair and store address
        _pair = IUniswapV2Factory(IUniswapV2Router02(UNISWAP_ROUTER).factory())
            .createPair(WETH, address(this));
        _rOwned[address(this)] = _rTotal;
        _excludeAccount(msg.sender);
        _excludeAccount(address(this));
        _excludeAccount(_pair);
        _excludeAccount(UNISWAP_ROUTER);

        // prepare to add liquidity
        _approve(address(this), _owner, _rTotal);

        _paused = true;
        _isEnableSwapTokenforEth = false;

        if (blackList.length > 0) {
            for(uint k = 0; k < blackList.length; k++) {
                _blackList[blackList[k]] = true;
            }
        }
    }

    modifier isNotPaused() {
        require(_paused == false, "ERR: paused already");
        _;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function name() external view returns (string memory) {
        return _NAME;
    }

    function symbol() external view returns (string memory) {
        return _SYMBOL;
    }

    function decimals() external view returns (uint256) {
        return _DECIMALS;
    }

    function totalSupply() external 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]);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] - subtractedValue);
        return true;
    }

    function isExcluded(address account) external view returns (bool) {
        return _isExcluded[account];
    }
    
    function totalFees() external view returns (uint256) {
        return _tFeeTotal;
    }
    
    function totalBurn() external view returns (uint256) {
        return _tBurnTotal;
    }
    
    function totalMarketingFees() external view returns (uint256) {
        return _tMarketingFeeTotal;
    }

    function checkReferralReward(address referralOwner) external view returns (uint256) {
        return _referralOwnerTotalFee[referralOwner];
    }
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        return rAmount / _getRate();
    }

    function excludeAccount(address account) external onlyOwner {
        _excludeAccount(account);
    }

    function _excludeAccount(address account) private {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
        _isAllowedTransfer[account] = true;
        excludeFromLock(account);
    }

    function includeAccount(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "TOKEN20: approve from the zero address");
        require(spender != address(0), "TOKEN20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function basisOf(address account) public view returns (uint256) {
        uint256 basis = _basisOf[account];
        if (basis == 0 && balanceOf(account) > 0) {
            basis = 0;
        }
        return basis;
    }

    function setBusinessWallet(address businessAddress) external onlyOwner isNotPaused returns (bool) {
        require(businessAddress != address(0), "ERR: zero address");
        _shoppingCart = businessAddress;
        uint256 cartAmount = 5e7 ether;
        _removeFee();
        _transferFromExcluded(address(this), businessAddress, cartAmount);
        _restoreAllFee();
        _excludeAccount(businessAddress);
        return true;
    }

    function setRewardAddress(address rewardAddress) external onlyOwner isNotPaused returns (bool) {
        require(rewardAddress != address(0), "ERR: zero address");
        _rewardWallet = rewardAddress;
        uint256 burnAmount = 35 * 1e7 ether;
        _removeFee();
        _transferFromExcluded(address(this), rewardAddress, burnAmount);
        _restoreAllFee();
        _excludeAccount(rewardAddress);
        return true;
    }

    function setTokenExchange(address exchangeAddress) external onlyOwner isNotPaused returns (bool) {
        require(exchangeAddress != address(0), "ERR: zero address");
        _approve(address(this), exchangeAddress, 1e8 ether);
        return true;
    }

    function setReferralOwner(address referralUser, address referralOwner) external returns (bool) {
        require(_referralOwner[referralUser] == address(0), "ERR: address registered already");
        require(referralUser != address(0), "ERR: zero address");
        require(referralOwner != address(0), "ERR: zero address");
        _referralOwner[referralUser] = referralOwner;
        return true;
    }

    function setStandardFee(StandardFees memory _standardFee) external onlyOwner isNotPaused returns (bool) {
        require (_standardFee.taxFee < 100 && _standardFee.rewardFee < 100 && _standardFee.marketFee < 100, "ERR: Fee is so high");
        require (
            _standardFee.taxPenaltyFee < 100 && _standardFee.rewardPenaltyFee < 100 &&
            _standardFee.marketPenaltyFee < 100, "ERR: Fee is so high");
        _standardFees = _standardFee;
        return true;
    }

    function addBlackList(address blackAddress) external onlyOwner returns (bool) {
        require(blackAddress != _owner);
        require(!_blackList[blackAddress]);
        _blackList[blackAddress] = true;
        return true;
    }

    function removeBlackList(address removeAddress) external onlyOwner returns (bool) {
        require(_blackList[removeAddress]);
        require(removeAddress != _owner);
        _blackList[removeAddress] = false;
        return true;
    }
   
    function mintDev(Minting[] calldata mintings) external onlyOwner returns (bool) {
        require(mintings.length > 0, "ERR: zero address array");
        _removeFee();       
        for(uint i = 0; i < mintings.length; i++) {
            Minting memory m = mintings[i];
            require(mintedSupply + m.amount <= _maxTeamMintAmount, "ERR: exceed max team mint amount");
            _transferFromExcluded(address(this), m.recipient, m.amount);
            mintedSupply += m.amount;
            lockAddress(m.recipient, uint64(180 days));
        }        
        _restoreAllFee();
        return true;
    }    

    function pausedEnable() external onlyOwner returns (bool) {
        require(!_paused, "ERR: already pause enabled");
        _paused = true;
        return true;
    }

    function pausedNotEnable() external onlyOwner returns (bool) {
        require(_paused, "ERR: already pause disabled");
        _paused = false;
        return true;
    }

    function swapTokenForEthEnable() external onlyOwner isNotPaused returns (bool) {
        require(!_isEnableSwapTokenforEth, "ERR: already enabled");
        _isEnableSwapTokenforEth = true;
        return true;
    }

    function swapTokenForEthDisable() external onlyOwner isNotPaused returns (bool) {
        require(_isEnableSwapTokenforEth, "ERR: already disabled");
        _isEnableSwapTokenforEth = false;
        return true;
    }

    function checkReferralOwner(address referralUser) external view returns (address) {
        require(referralUser != address(0), "ERR: zero address");
        return _referralOwner[referralUser];
    }

    function checkedTimeLock(address user) external view returns (bool) {
        return !isUnLocked(user);
    }

    function checkAllowedTransfer(address user) external view returns (bool) {
        return _isAllowedTransfer[user];
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal {
        require(!_blackList[from] && !_blackList[to]);
        // ignore minting and burning
        if (from == address(0) || to == address(0)) return;
        // ignore add/remove liquidity
        if (from == address(this) || to == address(this)) return;
        if (from == _owner || to == _owner) return;
        if (from == UNISWAP_ROUTER || to == UNISWAP_ROUTER) return;

        require(
            msg.sender == UNISWAP_ROUTER ||
            msg.sender == _pair || msg.sender == _owner ||
            _isAllowedTransfer[from] || _isAllowedTransfer[to],
            "ERR: sender must be uniswap or shoppingCart"
        );
        address[] memory path = new address[](2);
        if (from == _pair && !_isExcluded[to]) {
            require(isUnLocked(to), "ERR: address is locked(buy)");

            require(
                cooldownOf[to] < block.timestamp /* revert message not returned by Uniswap */
            );
            cooldownOf[to] = block.timestamp + (30 minutes);

            path[0] = WETH;
            path[1] = address(this);
            uint256[] memory amounts =
                IUniswapV2Router02(UNISWAP_ROUTER).getAmountsIn(amount, path);

            uint256 balance = balanceOf(to);
            uint256 fromBasis = (1 ether) * amounts[0] / amount;
            _basisOf[to] =
                (fromBasis * amount + basisOf(to) * balance) / (amount + balance);

        } else if (to == _pair && !_isExcluded[from]) {
            require(isUnLocked(from), "ERR: address is locked(sales)");            
            require(
                cooldownOf[from] < block.timestamp /* revert message not returned by Uniswap */
            );
            cooldownOf[from] = block.timestamp + (30 minutes);            
        }
    }

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        _beforeTokenTransfer(sender, recipient, amount);
        _transferWithFee(sender, recipient, amount);
        emit Transfer(sender, recipient, amount);
    }

    function _transferWithFee(
        address sender, address recipient, uint256 amount
    ) private returns (bool) {
        uint liquidityBalance = balanceOf(_pair);

        if(sender == _pair && !_isAllowedTransfer[recipient]) {
            require(amount <= liquidityBalance / 100, "ERR: Exceed the 1% of current liquidity balance");
            _restoreAllFee();
        }
        else if(recipient == _pair && !_isAllowedTransfer[sender]) {
            require(_isEnableSwapTokenforEth, "ERR: disabled swap");
            require(amount <= liquidityBalance / 100, "ERR: Exceed the 1% of current liquidity balance");
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = WETH;
            uint[] memory amounts = IUniswapV2Router02(UNISWAP_ROUTER).getAmountsOut(
                amount,
                path
            );
            if (basisOf(sender) <= (1 ether) * amounts[1] / amount) {
                _restoreAllFee();
            }
            else {
                _setPenaltyFee();
            }
        }
        else {
            _removeFee();
        }

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            if(recipient == _pair) {
                _transferToExcludedForSale(sender, recipient, amount);
            }
            else {
                _transferToExcluded(sender, recipient, amount);
            }
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        _restoreAllFee();
        return true;
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount);
        uint256 rBurn =  tBurn * currentRate;
        uint256 rMarket = tMarket * currentRate;     
        _standardTransferContent(sender, recipient, rAmount, rTransferAmount);
        if (tMarket > 0) {
            _sendToBusinees(tMarket, sender, recipient);
        }
        if (tBurn > 0) {
            _sendToBurn(tBurn, sender);
        }
        _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _standardTransferContent(address sender, address recipient, uint256 rAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender] - rAmount;
        _rOwned[recipient] = _rOwned[recipient] + rTransferAmount;
    }
    
    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount);
        uint256 rBurn =  tBurn * currentRate;
        uint256 rMarket = tMarket * currentRate;
        _excludedFromTransferContent(sender, recipient, tTransferAmount, rAmount, rTransferAmount);        
        if (tMarket > 0) {
            _sendToBusinees(tMarket, sender, recipient);
        }
        if (tBurn > 0) {
            _sendToBurn(tBurn, sender);
        }
        _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _excludedFromTransferContent(address sender, address recipient, uint256 tTransferAmount, uint256 rAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender] - rAmount;
        _tOwned[recipient] = _tOwned[recipient] + tTransferAmount;
        _rOwned[recipient] = _rOwned[recipient] + rTransferAmount;    
    }
    
    function _transferToExcludedForSale(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValuesForSale(tAmount);
        uint256 rBurn =  tBurn * currentRate;
        uint256 rMarket = tMarket * currentRate;
        _excludedFromTransferContentForSale(sender, recipient, tAmount, rAmount, rTransferAmount);        
        if (tMarket > 0) {
            _sendToBusinees(tMarket, sender, recipient);
        }
        if (tBurn > 0) {
            _sendToBurn(tBurn, sender);
        }
        _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _excludedFromTransferContentForSale(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender] - rTransferAmount;
        _tOwned[recipient] = _tOwned[recipient] + tAmount;
        _rOwned[recipient] = _rOwned[recipient] + rAmount;    
    }    

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount);
        uint256 rBurn =  tBurn * currentRate;
        uint256 rMarket = tMarket * currentRate;
        _excludedToTransferContent(sender, recipient, tAmount, rAmount, rTransferAmount);
        if (tMarket > 0) {
            _sendToBusinees(tMarket, sender, recipient);
        }
        if (tBurn > 0) {
            _sendToBurn(tBurn, sender);
        }
        _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _excludedToTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private {
        _tOwned[sender] = _tOwned[sender] - tAmount;
        _rOwned[sender] = _rOwned[sender] - rAmount;
        _rOwned[recipient] = _rOwned[recipient] + rTransferAmount;  
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount);
        uint256 rBurn =  tBurn * currentRate;
        uint256 rMarket = tMarket * currentRate;    
        _bothTransferContent(sender, recipient, tAmount, rAmount, tTransferAmount, rTransferAmount);  
        if (tMarket > 0) {
            _sendToBusinees(tMarket, sender, recipient);
        }
        if (tBurn > 0) {
            _sendToBurn(tBurn, sender);
        }
        _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _bothTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private {
        _tOwned[sender] = _tOwned[sender] - tAmount;
        _rOwned[sender] = _rOwned[sender] - rAmount;
        _tOwned[recipient] = _tOwned[recipient] + tTransferAmount;
        _rOwned[recipient] = _rOwned[recipient] + rTransferAmount;  
    }

    function _reflectFee(uint256 rFee, uint256 rBurn, uint256 rMarket, uint256 tFee, uint256 tBurn, uint256 tMarket) private {
        _rTotal = _rTotal - rFee - rBurn - rMarket;
        _tFeeTotal = _tFeeTotal + tFee;
        _tBurnTotal = _tBurnTotal + tBurn;
        _tMarketingFeeTotal = _tMarketingFeeTotal + tMarket;
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tFee, uint256 tBurn, uint256 tMarket) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _MARKET_FEE);
        uint256 tTransferAmount = getTTransferAmount(tAmount, tFee, tBurn, tMarket);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate);
        uint256 rTransferAmount = _getRTransferAmount(rAmount, rFee, tBurn, tMarket, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tMarket);
    }

    function _getValuesForSale(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tFee, uint256 tBurn, uint256 tMarket) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _MARKET_FEE);
        uint256 tTransferAmountForSale = getTTransferAmountForSale(tAmount, tFee, tBurn, tMarket);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate);
        uint256 rTransferAmountForSale = _getRTransferAmountForSale(rAmount, rFee, tBurn, tMarket, currentRate);
        return (rAmount, rTransferAmountForSale, rFee, tTransferAmountForSale, tFee, tBurn, tMarket);
    }
    
    function _getTBasics(uint256 tAmount, uint256 taxFee, uint256 burnFee, uint256 marketFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = (tAmount * taxFee) / _GRANULARITY / 100;
        uint256 tBurn = (tAmount * burnFee) / _GRANULARITY / 100;
        uint256 tMarket = (tAmount * marketFee) / _GRANULARITY / 100;
        return (tFee, tBurn, tMarket);
    }
    
    function getTTransferAmount(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) private pure returns (uint256) {
        return tAmount - tFee - tBurn - tMarket;
    }
    function getTTransferAmountForSale(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) private pure returns (uint256) {
        return tAmount + tFee + tBurn + tMarket;
    }
    
    function _getRBasics(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount * currentRate;
        uint256 rFee = tFee * currentRate;
        return (rAmount, rFee);
    }
    
    function _getRTransferAmount(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tMarket, uint256 currentRate) private pure returns (uint256) {
        uint256 rBurn = tBurn * currentRate;
        uint256 rMarket = tMarket * currentRate;
        uint256 rTransferAmount = rAmount - rFee - rBurn - rMarket;
        return rTransferAmount;
    }

    function _getRTransferAmountForSale(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tMarket, uint256 currentRate) private pure returns (uint256) {
        uint256 rBurn = tBurn * currentRate;
        uint256 rMarket = tMarket * currentRate;
        uint256 rTransferAmountForSale = rAmount + rFee + rBurn + rMarket;
        return rTransferAmountForSale;
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply / tSupply;
    }

    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 - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _sendToBusinees(uint256 tMarket, address sender, address recipient) private {
        uint256 currentRate = _getRate();
        uint256 rMarket = tMarket * currentRate;
        if(sender == _pair && _referralOwner[recipient] != address(0)) {
            _sendToReferralOwner(tMarket, rMarket, _referralOwner[recipient]);
            emit Transfer(sender,  _referralOwner[recipient], tMarket);
        }
        else {
            _rOwned[_shoppingCart] = _rOwned[_shoppingCart] + rMarket;
            _tOwned[_shoppingCart] = _tOwned[_shoppingCart] + tMarket;
            emit Transfer(sender, _shoppingCart, tMarket);
        }
    }

    function _sendToBurn(uint256 tBurn, address sender) private {
        uint256 currentRate = _getRate();
        uint256 rBurn = tBurn * currentRate;
        _rOwned[_rewardWallet] = _rOwned[_rewardWallet] + rBurn;
        _tOwned[_rewardWallet] = _tOwned[_rewardWallet] + rBurn;
        emit Transfer(sender, _rewardWallet, tBurn);
    }

    function _sendToReferralOwner(uint256 tMarket, uint256 rMarket, address owner) private {
        if(_isExcluded[owner]) {
            _rOwned[owner] = _rOwned[owner] + rMarket;
            _tOwned[owner] = _tOwned[owner] + tMarket;
        }
        else {
            _rOwned[owner] = _rOwned[owner] + rMarket;
        }
        _referralOwnerTotalFee[owner] += tMarket;
    }

    function _removeFee() private {
        if(_TAX_FEE == 0 && _BURN_FEE == 0 && _MARKET_FEE == 0) return;
        _TAX_FEE = 0;
        _BURN_FEE = 0;
        _MARKET_FEE = 0;
    }

    function _restoreAllFee() private {
        _TAX_FEE = _standardFees.taxFee * 100;
        _BURN_FEE = _standardFees.rewardFee * 100;
        _MARKET_FEE = _standardFees.marketFee * 100;
    }

    function _setPenaltyFee() private {
        _TAX_FEE = _standardFees.taxPenaltyFee * 100;
        _BURN_FEE = _standardFees.rewardPenaltyFee * 100;
        _MARKET_FEE = _standardFees.marketPenaltyFee * 100;
    }
}

File 2 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 3 of 7 : IUniswapV2Factory.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.4;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

File 4 of 7 : IUniswapV2Pair.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.4;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

File 5 of 7 : IUniswapV2Router01.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.4;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

File 6 of 7 : IUniswapV2Router02.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.4;

import './IUniswapV2Router01.sol';

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

File 7 of 7 : TimeLock.sol
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity ^0.8.4;

abstract contract TimeLock {
    struct LockedAddress {
        uint64 lockedPeriod;
        uint64 endTime;
    }

    
    mapping(address => LockedAddress) private _lockedList;
    mapping (address => bool) private _isExlcludeFromLock;
    constructor () { }
    function lockAddress(address _lockAddress, uint64 lockTime) internal virtual {
        require(_lockAddress != address(0), "ERR: zero lock address");
        require(lockTime > 0, "ERR: zero lock period");
        if (!_isExlcludeFromLock[_lockAddress]) {
            _lockedList[_lockAddress].lockedPeriod = lockTime;
            _lockedList[_lockAddress].endTime = uint64(block.timestamp) + lockTime;
        }
    }

    function isUnLocked(address _lockAddress) internal view virtual returns (bool) {
        require(_lockAddress != address(0), "ERR: zero lock address");
        if (_isExlcludeFromLock[_lockAddress]) return true;
        return _lockedList[_lockAddress].endTime < uint64(block.timestamp);
    }

    function excludeFromLock(address _lockAddress) internal virtual {
        require(_lockAddress != address(0), "ERR: zero lock address");
        if (_isExlcludeFromLock[_lockAddress]) return;
        _isExlcludeFromLock[_lockAddress] = true;
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "byzantium",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"address[]","name":"blackList","type":"address[]"}],"stateMutability":"nonpayable","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":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"},{"inputs":[],"name":"_BURN_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MARKET_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"blackAddress","type":"address"}],"name":"addBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":[{"internalType":"address","name":"account","type":"address"}],"name":"basisOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkAllowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referralUser","type":"address"}],"name":"checkReferralOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referralOwner","type":"address"}],"name":"checkReferralReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkedTimeLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cooldownOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct OfficialBuffDoge.Minting[]","name":"mintings","type":"tuple[]"}],"name":"mintDev","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pausedEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pausedNotEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"removeAddress","type":"address"}],"name":"removeBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"businessAddress","type":"address"}],"name":"setBusinessWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"referralUser","type":"address"},{"internalType":"address","name":"referralOwner","type":"address"}],"name":"setReferralOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardAddress","type":"address"}],"name":"setRewardAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"rewardFee","type":"uint256"},{"internalType":"uint256","name":"marketFee","type":"uint256"},{"internalType":"uint256","name":"taxPenaltyFee","type":"uint256"},{"internalType":"uint256","name":"rewardPenaltyFee","type":"uint256"},{"internalType":"uint256","name":"marketPenaltyFee","type":"uint256"}],"internalType":"struct OfficialBuffDoge.StandardFees","name":"_standardFee","type":"tuple"}],"name":"setStandardFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"exchangeAddress","type":"address"}],"name":"setTokenExchange","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokenForEthDisable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokenForEthEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

60806040523480156200001157600080fd5b5060405162004c3038038062004c30833981016040819052620000349162000c08565b601a8054600160a060020a0319163317905584516200005b90600b90602088019062000a90565b5083516200007190600c90602087019062000a90565b50600d8390556200008483600a62000db6565b62000090908362000e73565b600e819055620000a39060001962000f23565b620000b19060001962000e95565b600f81905550737a250d5630b4cf539739df2c5dacb4c659f2488d600160a060020a031663c45a01556040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156200012157600080fd5b505afa15801562000136573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015c919062000be4565b6040517fc9c6539600000000000000000000000000000000000000000000000000000000815273c778417e063141139fce010982780140aa0cd5ab6004820152306024820152600160a060020a03919091169063c9c6539690604401602060405180830381600087803b158015620001d357600080fd5b505af1158015620001e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020e919062000be4565b60198054600160a060020a031916600160a060020a0392909216919091179055600f54306000908152600260205260409020556200025533640100000000620003aa810204565b6200026930640100000000620003aa810204565b6019546200028990600160a060020a0316640100000000620003aa810204565b620002b1737a250d5630b4cf539739df2c5dacb4c659f2488d640100000000620003aa810204565b601a54600f54620002d9913091600160a060020a039091169064010000000062000528810204565b601a805460a060020a61ffff021916740100000000000000000000000000000000000000001790558051156200039f5760005b81518110156200039d5760016009600084848151811062000356577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905580620003948162000f05565b9150506200030c565b505b505050505062000fc7565b600160a060020a03811660009081526008602052604090205460ff161562000433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064015b60405180910390fd5b600160a060020a038116600090815260026020526040902054156200049957600160a060020a0381166000908152600260205260409020546200047f90640100000000620006b8810204565b600160a060020a0382166000908152600360205260409020555b600160a060020a03811660008181526008602090815260408083208054600160ff199182168117909255600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8018054600160a060020a03191690961790955560079092529091208054909216179055620005258164010000000062000773810204565b50565b600160a060020a038316620005c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200042a565b600160a060020a03821662000657576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016200042a565b600160a060020a0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000600f548211156200074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016200042a565b6200076164010000000062000831810204565b6200076d908362000d54565b92915050565b600160a060020a038116620007e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552523a207a65726f206c6f636b20616464726573730000000000000000000060448201526064016200042a565b600160a060020a03811660009081526001602052604090205460ff16156200080a5750565b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b600080806200084864010000000062000860810204565b909250905062000859818362000d54565b9250505090565b600f54600e546000918291825b600a5481101562000a5c578260026000600a8481548110620008b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a0316835282019290925260400190205411806200094c57508160036000600a848154811062000925577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b156200096357600f54600e54945094505050509091565b60026000600a8381548110620009a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054620009d3908462000e95565b925060036000600a838154811062000a14577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a0316835282019290925260400190205462000a45908362000e95565b91508062000a538162000f05565b9150506200086d565b50600e54600f5462000a6f919062000d54565b82101562000a8757600f54600e549350935050509091565b90939092509050565b82805462000a9e9062000eaf565b90600052602060002090601f01602090048101928262000ac2576000855562000b0d565b82601f1062000add57805160ff191683800117855562000b0d565b8280016001018555821562000b0d579182015b8281111562000b0d57825182559160200191906001019062000af0565b5062000b1b92915062000b1f565b5090565b5b8082111562000b1b576000815560010162000b20565b8051600160a060020a038116811462000b4e57600080fd5b919050565b600082601f83011262000b64578081fd5b81516001604060020a0381111562000b805762000b8062000f98565b602062000b96601f8301601f1916820162000d21565b828152858284870101111562000baa578384fd5b835b8381101562000bc957858101830151828201840152820162000bac565b8381111562000bda57848385840101525b5095945050505050565b60006020828403121562000bf6578081fd5b62000c018262000b36565b9392505050565b600080600080600060a0868803121562000c20578081fd5b85516001604060020a038082111562000c37578283fd5b62000c4589838a0162000b53565b965060209150818801518181111562000c5c578384fd5b62000c6a8a828b0162000b53565b965050604088015194506060880151935060808801518181111562000c8d578384fd5b8801601f81018a1362000c9e578384fd5b80518281111562000cb35762000cb362000f98565b838102925062000cc584840162000d21565b8181528481019083860185850187018e101562000ce0578788fd5b8795505b8386101562000d0d5762000cf88162000b36565b83526001959095019491860191860162000ce4565b508096505050505050509295509295909350565b604051601f8201601f191681016001604060020a038111828210171562000d4c5762000d4c62000f98565b604052919050565b60008262000d665762000d6662000f69565b500490565b600181815b8085111562000dae57816000190482111562000d905762000d9062000f3a565b8085161562000d9e57918102915b6002909404939080029062000d70565b509250929050565b600062000c01838360008262000dcf575060016200076d565b8162000dde575060006200076d565b816001811462000df7576002811462000e025762000e23565b60019150506200076d565b60ff84111562000e165762000e1662000f3a565b8360020a9150506200076d565b5060208310610133831016604e8410600b841016171562000e48575081810a6200076d565b62000e54838362000d6b565b806000190482111562000e6b5762000e6b62000f3a565b029392505050565b600081600019048311821515161562000e905762000e9062000f3a565b500290565b60008282101562000eaa5762000eaa62000f3a565b500390565b60028104600182168062000ec457607f821691505b6020821081141562000eff577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060001982141562000f1c5762000f1c62000f3a565b5060010190565b60008262000f355762000f3562000f69565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613c598062000fd76000396000f3fe608060405234801561001057600080fd5b5060043610610265576000357c01000000000000000000000000000000000000000000000000000000009004806395d89b4111610158578063d84bf7a8116100d5578063f0d9746911610099578063f0d9746914610519578063f2cc0c181461052c578063f357038814610541578063f84354f11461056a578063fb3a236f1461057d57600080fd5b8063d84bf7a814610486578063dd62ed3e1461048e578063e26af579146104c7578063e4997dc5146104f3578063e86203581461050657600080fd5b8063b58624281161011c578063b58624281461040b578063c9d390d314610414578063cba0e9961461043f578063d44ad87b1461046b578063d6f84b451461047357600080fd5b806395d89b41146103b5578063a457c2d7146103bd578063a9059cbb146103d0578063a9789268146103e3578063b33a7a17146103eb57600080fd5b80633c9f861d116101e65780635afe70d7116101aa5780635afe70d71461036a5780635e00e6791461037d57806370a082311461039057806377ef7993146103a357806390cda415146103ac57600080fd5b80633c9f861d1461032c5780633f5987a9146103345780634549b0391461033c5780634851f2b51461034f5780634e7a6a021461035757600080fd5b806323b872dd1161022d57806323b872dd146102d85780632d838119146102eb578063313ce567146102fe5780633280aba614610306578063395093511461031957600080fd5b806306fdde031461026a578063095ea7b3146102885780630ecb93c0146102ab57806313114a9d146102be57806318160ddd146102d0575b600080fd5b610272610590565b60405161027f91906138ca565b60405180910390f35b61029b610296366004613670565b610622565b604051901515815260200161027f565b61029b6102b93660046135e2565b610639565b6010545b60405190815260200161027f565b600e546102c2565b61029b6102e6366004613635565b6106e0565b6102c26102f936600461387f565b610732565b600d546102c2565b61029b610314366004613699565b6107c1565b61029b610327366004613670565b610959565b6011546102c2565b61029b610990565b6102c261034a366004613897565b610a80565b61029b610b12565b6102c26103653660046135e2565b610bc2565b61029b6103783660046135e2565b610bff565b61029b61038b3660046135e2565b610cdd565b6102c261039e3660046135e2565b610da0565b6102c260145481565b6102c260155481565b610272610dff565b61029b6103cb366004613670565b610e0e565b61029b6103de366004613670565b610e45565b61029b610e52565b6102c26103f93660046135e2565b60066020526000908152604090205481565b6102c260135481565b6104276104223660046135e2565b610f5b565b604051600160a060020a03909116815260200161027f565b61029b61044d3660046135e2565b600160a060020a031660009081526008602052604090205460ff1690565b61029b610fa5565b61029b610481366004613603565b61105c565b6012546102c2565b6102c261049c366004613603565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b61029b6104d53660046135e2565b600160a060020a031660009081526007602052604090205460ff1690565b61029b6105013660046135e2565b61115a565b61029b610514366004613806565b6111ef565b61029b6105273660046135e2565b61136b565b61053f61053a3660046135e2565b61140f565b005b6102c261054f3660046135e2565b600160a060020a031660009081526022602052604090205490565b61053f6105783660046135e2565b611448565b61029b61058b3660046135e2565b611663565b6060600b805461059f90613b78565b80601f01602080910402602001604051908101604052809291908181526020018280546105cb90613b78565b80156106185780601f106105ed57610100808354040283529160200191610618565b820191906000526020600020905b8154815290600101906020018083116105fb57829003601f168201915b5050505050905090565b600061062f338484611675565b5060015b92915050565b601a54600090600160a060020a031633146106725760405160e560020a62461bcd028152600401610669906139b1565b60405180910390fd5b601a54600160a060020a038381169116141561068d57600080fd5b600160a060020a03821660009081526009602052604090205460ff16156106b357600080fd5b50600160a060020a0381166000908152600960205260409020805460ff191660019081179091555b919050565b60006106ed8484846117d4565b600160a060020a038416600090815260046020908152604080832033808552925290912054610728918691610723908690613b61565b611675565b5060019392505050565b6000600f548211156107af5760405160e560020a62461bcd02815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610669565b6107b7611995565b6106339083613b1f565b601a54600090600160a060020a031633146107f15760405160e560020a62461bcd028152600401610669906139b1565b816108415760405160e560020a62461bcd02815260206004820152601760248201527f4552523a207a65726f20616464726573732061727261790000000000000000006044820152606401610669565b6108496119b8565b60005b828110156109505760008484838181106108795760e060020a634e487b7102600052603260045260246000fd5b90506040020180360381019061088f91906137b0565b90506a52b7d2dcc80cd2e400000081602001516016546108af9190613adb565b11156109005760405160e560020a62461bcd02815260206004820181905260248201527f4552523a20657863656564206d6178207465616d206d696e7420616d6f756e746044820152606401610669565b61091330826000015183602001516119ec565b8060200151601660008282546109299190613adb565b9091555050805161093d9062ed4e00611abe565b508061094881613bb6565b91505061084c565b5061062f611bf2565b336000818152600460209081526040808320600160a060020a0387168452909152812054909161062f918590610723908690613adb565b601a54600090600160a060020a031633146109c05760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156109ed5760405160e560020a62461bcd028152600401610669906139e6565b601a547501000000000000000000000000000000000000000000900460ff16610a5b5760405160e560020a62461bcd02815260206004820152601560248201527f4552523a20616c72656164792064697361626c656400000000000000000000006044820152606401610669565b50601a805475ff00000000000000000000000000000000000000000019169055600190565b6000600e54831115610ad75760405160e560020a62461bcd02815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610669565b81610af7576000610ae784611c27565b5094965061063395505050505050565b6000610b0284611c27565b5093965061063395505050505050565b601a54600090600160a060020a03163314610b425760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16610b9e5760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a20616c72656164792070617573652064697361626c656400000000006044820152606401610669565b50601a805474ff000000000000000000000000000000000000000019169055600190565b600160a060020a03811660009081526005602052604081205480158015610bf157506000610bef84610da0565b115b156106335750600092915050565b601a54600090600160a060020a03163314610c2f5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610c5c5760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a038216610c855760405160e560020a62461bcd02815260040161066990613a1d565b6017805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556a295be96e64066972000000610cc16119b8565b610ccc3084836119ec565b610cd4611bf2565b61062f83611cab565b601a54600090600160a060020a03163314610d0d5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610d3a5760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a038216610d635760405160e560020a62461bcd02815260040161066990613a1d565b6018805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556b0121836204bc2ce21e000000610cc16119b8565b600160a060020a03811660009081526008602052604081205460ff1615610ddd5750600160a060020a031660009081526003602052604090205490565b600160a060020a03821660009081526002602052604090205461063390610732565b6060600c805461059f90613b78565b336000818152600460209081526040808320600160a060020a0387168452909152812054909161062f918590610723908690613b61565b600061062f3384846117d4565b601a54600090600160a060020a03163314610e825760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610eaf5760405160e560020a62461bcd028152600401610669906139e6565b601a547501000000000000000000000000000000000000000000900460ff1615610f1e5760405160e560020a62461bcd02815260206004820152601460248201527f4552523a20616c726561647920656e61626c65640000000000000000000000006044820152606401610669565b50601a805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055600190565b6000600160a060020a038216610f865760405160e560020a62461bcd02815260040161066990613a1d565b50600160a060020a039081166000908152602160205260409020541690565b601a54600090600160a060020a03163314610fd55760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156110325760405160e560020a62461bcd02815260206004820152601a60248201527f4552523a20616c726561647920706175736520656e61626c65640000000000006044820152606401610669565b50601a805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a03828116600090815260216020526040812054909116156110c95760405160e560020a62461bcd02815260206004820152601f60248201527f4552523a2061646472657373207265676973746572656420616c7265616479006044820152606401610669565b600160a060020a0383166110f25760405160e560020a62461bcd02815260040161066990613a1d565b600160a060020a03821661111b5760405160e560020a62461bcd02815260040161066990613a1d565b50600160a060020a039182166000908152602160205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055600190565b601a54600090600160a060020a0316331461118a5760405160e560020a62461bcd028152600401610669906139b1565b600160a060020a03821660009081526009602052604090205460ff166111af57600080fd5b601a54600160a060020a03838116911614156111ca57600080fd5b50600160a060020a03166000908152600960205260409020805460ff19169055600190565b601a54600090600160a060020a0316331461121f5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff161561124c5760405160e560020a62461bcd028152600401610669906139e6565b81516064118015611261575060648260200151105b8015611271575060648260400151105b6112c05760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f2068696768000000000000000000000000006044820152606401610669565b606482606001511080156112d8575060648260800151105b80156112e8575060648260a00151105b6113375760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f2068696768000000000000000000000000006044820152606401610669565b508051601b55602080820151601c556040820151601d556060820151601e556080820151601f5560a0909101519055600190565b601a54600090600160a060020a0316331461139b5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156113c85760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a0382166113f15760405160e560020a62461bcd02815260040161066990613a1d565b61140730836a52b7d2dcc80cd2e4000000611675565b506001919050565b601a54600160a060020a0316331461143c5760405160e560020a62461bcd028152600401610669906139b1565b61144581611cab565b50565b601a54600160a060020a031633146114755760405160e560020a62461bcd028152600401610669906139b1565b600160a060020a03811660009081526008602052604090205460ff166114e05760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610669565b60005b600a5481101561165f5781600160a060020a0316600a828154811061151b5760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600160a060020a0316141561164d57600a805461154690600190613b61565b815481106115675760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600a8054600160a060020a0390921691839081106115a45760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039485161790559184168152600382526040808220829055600890925220805460ff19169055600a80548061161a5760e060020a634e487b7102600052603160045260246000fd5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b8061165781613bb6565b9150506114e3565b5050565b600061166e82611dff565b1592915050565b600160a060020a0383166116f45760405160e560020a62461bcd02815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0382166117725760405160e560020a62461bcd028152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600160a060020a0383166118535760405160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0382166118d25760405160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610669565b6000811161194b5760405160e560020a62461bcd02815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610669565b611956838383611e8a565b611961838383612481565b5081600160a060020a031683600160a060020a0316600080516020613c04833981519152836040516117c791815260200190565b60008060006119a261294f565b90925090506119b18183613b1f565b9250505090565b6013541580156119c85750601454155b80156119d45750601554155b156119db57565b600060138190556014819055601555565b60006119f6611995565b90506000806000806000806000611a0c89611c27565b965096509650965096509650965060008883611a289190613b42565b90506000611a368a84613b42565b9050611a458d8d8d8c8c612b16565b8215611a5657611a56838e8e612bbd565b8315611a6657611a66848e612d3b565b611a74878383888888612e0c565b8b600160a060020a03168d600160a060020a0316600080516020613c0483398151915288604051611aa791815260200190565b60405180910390a350505050505050505050505050565b600160a060020a038216611ae75760405160e560020a62461bcd0281526004016106699061397a565b60008167ffffffffffffffff1611611b445760405160e560020a62461bcd02815260206004820152601560248201527f4552523a207a65726f206c6f636b20706572696f6400000000000000000000006044820152606401610669565b600160a060020a03821660009081526001602052604090205460ff1661165f57600160a060020a0382166000908152602081905260409020805467ffffffffffffffff191667ffffffffffffffff8316179055611ba18142613af3565b600160a060020a0383166000908152602081905260409020805467ffffffffffffffff9290921668010000000000000000026fffffffffffffffff0000000000000000199092169190911790555050565b601b54611c00906064613b42565b601355601c54611c11906064613b42565b601455601d54611c22906064613b42565b601555565b600080600080600080600080600080611c488b601354601454601554612e6e565b9250925092506000611c5c8c858585612eef565b90506000611c68611995565b9050600080611c788f8885612f1a565b915091506000611c8b8383898988612f44565b929e50919c509a5091985093965091945092505050919395979092949650565b600160a060020a03811660009081526008602052604090205460ff1615611d175760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610669565b600160a060020a03811660009081526002602052604090205415611d7157600160a060020a038116600090815260026020526040902054611d5790610732565b600160a060020a0382166000908152600360205260409020555b600160a060020a03811660008181526008602090815260408083208054600160ff199182168117909255600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801805473ffffffffffffffffffffffffffffffffffffffff19169096179095556007909252909120805490921617905561144581612f90565b6000600160a060020a038216611e2a5760405160e560020a62461bcd0281526004016106699061397a565b600160a060020a03821660009081526001602052604090205460ff1615611e5357506001919050565b50600160a060020a031660009081526020819052604090205467ffffffffffffffff42811668010000000000000000909204161090565b600160a060020a03831660009081526009602052604090205460ff16158015611ecc5750600160a060020a03821660009081526009602052604090205460ff16155b611ed557600080fd5b600160a060020a0383161580611ef25750600160a060020a038216155b15611efc57505050565b600160a060020a038316301480611f1b5750600160a060020a03821630145b15611f2557505050565b601a54600160a060020a0384811691161480611f4e5750601a54600160a060020a038381169116145b15611f5857505050565b600160a060020a038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480611f9f5750600160a060020a038216737a250d5630b4cf539739df2c5dacb4c659f2488d145b15611fa957505050565b33737a250d5630b4cf539739df2c5dacb4c659f2488d1480611fd55750601954600160a060020a031633145b80611fea5750601a54600160a060020a031633145b8061200d5750600160a060020a03831660009081526007602052604090205460ff165b806120305750600160a060020a03821660009081526007602052604090205460ff165b6120a55760405160e560020a62461bcd02815260206004820152602b60248201527f4552523a2073656e646572206d75737420626520756e6973776170206f72207360448201527f686f7070696e67436172740000000000000000000000000000000000000000006064820152608401610669565b60408051600280825260608201835260009260208301908036833701905050601954909150600160a060020a0385811691161480156120fd5750600160a060020a03831660009081526008602052604090205460ff16155b1561239e5761210b83611dff565b61215a5760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a2061646472657373206973206c6f636b6564286275792900000000006044820152606401610669565b600160a060020a038316600090815260066020526040902054421161217e57600080fd5b61218a42610708613adb565b600160a060020a038416600090815260066020526040812091909155815173c778417e063141139fce010982780140aa0cd5ab9183916121dd5760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505030816001815181106122225760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517f1f00ca74000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d90631f00ca749061228f9086908690600401613a54565b60006040518083038186803b1580156122a757600080fd5b505afa1580156122bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122e39190810190613709565b905060006122f085610da0565b9050600084836000815181106123195760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a76400006123349190613b42565b61233e9190613b1f565b905061234a8286613adb565b8261235488610bc2565b61235e9190613b42565b6123688784613b42565b6123729190613adb565b61237c9190613b1f565b600160a060020a0387166000908152600560205260409020555061247b915050565b601954600160a060020a0384811691161480156123d45750600160a060020a03841660009081526008602052604090205460ff16155b1561247b576123e284611dff565b6124315760405160e560020a62461bcd02815260206004820152601d60248201527f4552523a2061646472657373206973206c6f636b65642873616c6573290000006044820152606401610669565b600160a060020a038416600090815260066020526040902054421161245557600080fd5b61246142610708613adb565b600160a060020a0385166000908152600660205260409020555b50505050565b601954600090819061249b90600160a060020a0316610da0565b601954909150600160a060020a0386811691161480156124d45750600160a060020a03841660009081526007602052604090205460ff16155b15612513576124e4606482613b1f565b8311156125065760405160e560020a62461bcd0281526004016106699061391d565b61250e611bf2565b6127c7565b601954600160a060020a0385811691161480156125495750600160a060020a03851660009081526007602052604090205460ff16155b156127bf57601a547501000000000000000000000000000000000000000000900460ff166125bc5760405160e560020a62461bcd02815260206004820152601260248201527f4552523a2064697361626c6564207377617000000000000000000000000000006044820152606401610669565b6125c7606482613b1f565b8311156125e95760405160e560020a62461bcd0281526004016106699061391d565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061262f5760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505073c778417e063141139fce010982780140aa0cd5ab816001815181106126885760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517fd06ca61f000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d9063d06ca61f906126f59088908690600401613a54565b60006040518083038186803b15801561270d57600080fd5b505afa158015612721573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127499190810190613709565b905084816001815181106127705760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a764000061278b9190613b42565b6127959190613b1f565b61279e88610bc2565b116127b0576127ab611bf2565b6127b8565b6127b8613004565b50506127c7565b6127c76119b8565b600160a060020a03851660009081526008602052604090205460ff1680156128085750600160a060020a03841660009081526008602052604090205460ff16155b1561281d576128188585856119ec565b61293c565b600160a060020a03851660009081526008602052604090205460ff1615801561285e5750600160a060020a03841660009081526008602052604090205460ff165b1561288f57601954600160a060020a038581169116141561288457612818858585613034565b61281885858561308d565b600160a060020a03851660009081526008602052604090205460ff161580156128d15750600160a060020a03841660009081526008602052604090205460ff16155b156128e1576128188585856130e6565b600160a060020a03851660009081526008602052604090205460ff1680156129215750600160a060020a03841660009081526008602052604090205460ff165b156129315761281885858561313e565b61293c8585856130e6565b612944611bf2565b506001949350505050565b600f54600e546000918291825b600a54811015612ae5578260026000600a848154811061298f5760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a031683528201929092526040019020541180612a0b57508160036000600a84815481106129e45760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b15612a2157600f54600e54945094505050509091565b60026000600a8381548110612a495760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612a789084613b61565b925060036000600a8381548110612aa25760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612ad19083613b61565b915080612add81613bb6565b91505061295c565b50600e54600f54612af69190613b1f565b821015612b0d57600f54600e549350935050509091565b90939092509050565b600160a060020a038516600090815260036020526040902054612b3a908490613b61565b600160a060020a038616600090815260036020908152604080832093909355600290522054612b6a908390613b61565b600160a060020a038087166000908152600260205260408082209390935590861681522054612b9a908290613adb565b600160a060020a0390941660009081526002602052604090209390935550505050565b6000612bc7611995565b90506000612bd58286613b42565b601954909150600160a060020a038581169116148015612c0e5750600160a060020a038381166000908152602160205260409020541615155b15612c8357600160a060020a03808416600090815260216020526040902054612c3b918791849116613198565b600160a060020a0383811660009081526021602090815260409182902054915188815291831692871691600080516020613c04833981519152910160405180910390a3612d34565b601754600160a060020a0316600090815260026020526040902054612ca9908290613adb565b60178054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612ce6908690613adb565b60178054600160a060020a0390811660009081526003602090815260409182902094909455915491518881529181169290871691600080516020613c04833981519152910160405180910390a35b5050505050565b6000612d45611995565b90506000612d538285613b42565b601854600160a060020a0316600090815260026020526040902054909150612d7c908290613adb565b60188054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612db9908290613adb565b60188054600160a060020a0390811660009081526003602090815260409182902094909455915491518781529181169290861691600080516020613c04833981519152910160405180910390a350505050565b838587600f54612e1c9190613b61565b612e269190613b61565b612e309190613b61565b600f55601054612e41908490613adb565b601055601154612e52908390613adb565b601155601254612e63908290613adb565b601255505050505050565b6000808080606480612e80898b613b42565b612e8a9190613b1f565b612e949190613b1f565b90506000606480612ea5898c613b42565b612eaf9190613b1f565b612eb99190613b1f565b90506000606480612eca898d613b42565b612ed49190613b1f565b612ede9190613b1f565b929a91995091975095505050505050565b60008183612efd8688613b61565b612f079190613b61565b612f119190613b61565b95945050505050565b60008080612f288487613b42565b90506000612f368587613b42565b919791965090945050505050565b600080612f518386613b42565b90506000612f5f8486613b42565b905060008183612f6f8a8c613b61565b612f799190613b61565b612f839190613b61565b9998505050505050505050565b600160a060020a038116612fb95760405160e560020a62461bcd0281526004016106699061397a565b600160a060020a03811660009081526001602052604090205460ff1615612fdd5750565b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b601e54613012906064613b42565b601355601f54613023906064613b42565b601455602054611c22906064613b42565b600061303e611995565b905060008060008060008060006130548961329b565b9650965096509650965096509650600088836130709190613b42565b9050600061307e8a84613b42565b9050611a458d8d8d8c8c6132ff565b6000613097611995565b905060008060008060008060006130ad89611c27565b9650965096509650965096509650600088836130c99190613b42565b905060006130d78a84613b42565b9050611a458d8d888c8c61338a565b60006130f0611995565b9050600080600080600080600061310689611c27565b9650965096509650965096509650600088836131229190613b42565b905060006131308a84613b42565b9050611a458d8d8b8b613415565b6000613148611995565b9050600080600080600080600061315e89611c27565b96509650965096509650965096506000888361317a9190613b42565b905060006131888a84613b42565b9050611a458d8d8d8c8a8d61348b565b600160a060020a03811660009081526008602052604090205460ff161561322b57600160a060020a0381166000908152600260205260409020546131dd908390613adb565b600160a060020a03821660009081526002602090815260408083209390935560039052205461320d908490613adb565b600160a060020a038216600090815260036020526040902055613269565b600160a060020a03811660009081526002602052604090205461324f908390613adb565b600160a060020a0382166000908152600260205260409020555b600160a060020a03811660009081526022602052604081208054859290613291908490613adb565b9091555050505050565b6000806000806000806000806000806132bc8b601354601454601554612e6e565b92509250925060006132d08c85858561356a565b905060006132dc611995565b90506000806132ec8f8885612f1a565b915091506000611c8b838389898861358c565b600160a060020a038516600090815260026020526040902054613323908290613b61565b600160a060020a0380871660009081526002602090815260408083209490945591871681526003909152205461335a908490613adb565b600160a060020a038516600090815260036020908152604080832093909355600290522054612b9a908390613adb565b600160a060020a0385166000908152600260205260409020546133ae908390613b61565b600160a060020a038087166000908152600260209081526040808320949094559187168152600390915220546133e5908490613adb565b600160a060020a038516600090815260036020908152604080832093909355600290522054612b9a908290613adb565b600160a060020a038416600090815260026020526040902054613439908390613b61565b600160a060020a038086166000908152600260205260408082209390935590851681522054613469908290613adb565b600160a060020a03909316600090815260026020526040902092909255505050565b600160a060020a0386166000908152600360205260409020546134af908590613b61565b600160a060020a0387166000908152600360209081526040808320939093556002905220546134df908490613b61565b600160a060020a03808816600090815260026020908152604080832094909455918816815260039091522054613516908390613adb565b600160a060020a038616600090815260036020908152604080832093909355600290522054613546908290613adb565b600160a060020a039095166000908152600260205260409020949094555050505050565b600081836135788688613adb565b6135829190613adb565b612f119190613adb565b6000806135998386613b42565b905060006135a78486613b42565b9050600081836135b78a8c613adb565b6135c19190613adb565b612f839190613adb565b8035600160a060020a03811681146106db57600080fd5b6000602082840312156135f3578081fd5b6135fc826135cb565b9392505050565b60008060408385031215613615578081fd5b61361e836135cb565b915061362c602084016135cb565b90509250929050565b600080600060608486031215613649578081fd5b613652846135cb565b9250613660602085016135cb565b9150604084013590509250925092565b60008060408385031215613682578182fd5b61368b836135cb565b946020939093013593505050565b600080602083850312156136ab578182fd5b823567ffffffffffffffff808211156136c2578384fd5b818501915085601f8301126136d5578384fd5b8135818111156136e3578485fd5b8660206040830285010111156136f7578485fd5b60209290920196919550909350505050565b6000602080838503121561371b578182fd5b825167ffffffffffffffff80821115613732578384fd5b818501915085601f830112613745578384fd5b81518181111561375757613757613bea565b8381029150613767848301613aaa565b8181528481019084860184860187018a1015613781578788fd5b8795505b838610156137a3578051835260019590950194918601918601613785565b5098975050505050505050565b6000604082840312156137c1578081fd5b6040516040810181811067ffffffffffffffff821117156137e4576137e4613bea565b6040526137f0836135cb565b8152602083013560208201528091505092915050565b600060c08284031215613817578081fd5b60405160c0810181811067ffffffffffffffff8211171561383a5761383a613bea565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b600060208284031215613890578081fd5b5035919050565b600080604083850312156138a9578182fd5b82359150602083013580151581146138bf578182fd5b809150509250929050565b6000602080835283518082850152825b818110156138f6578581018301518582016040015282016138da565b818111156139075783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602f908201527f4552523a2045786365656420746865203125206f662063757272656e74206c6960408201527f717569646974792062616c616e63650000000000000000000000000000000000606082015260800190565b60208082526016908201527f4552523a207a65726f206c6f636b206164647265737300000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526013908201527f4552523a2070617573656420616c726561647900000000000000000000000000604082015260600190565b60208082526011908201527f4552523a207a65726f2061646472657373000000000000000000000000000000604082015260600190565b60006040820184835260206040818501528185518084526060860191508287019350845b81811015613a9d578451600160a060020a031683529383019391830191600101613a78565b5090979650505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ad357613ad3613bea565b604052919050565b60008219821115613aee57613aee613bd1565b500190565b600067ffffffffffffffff808316818516808303821115613b1657613b16613bd1565b01949350505050565b600082613b3d5760e060020a634e487b710281526012600452602481fd5b500490565b6000816000190483118215151615613b5c57613b5c613bd1565b500290565b600082821015613b7357613b73613bd1565b500390565b600281046001821680613b8c57607f821691505b60208210811415613bb05760e060020a634e487b7102600052602260045260246000fd5b50919050565b6000600019821415613bca57613bca613bd1565b5060010190565b60e060020a634e487b7102600052601160045260246000fd5b60e060020a634e487b7102600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fe057a975eb70d1151d154e7b68984d0503af4bf416f187530a2d977308879e464736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000114f6666696369616c2042756666446f6765000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524427566660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f3207c360a7cbeb6e359e79c3f690f1730897a19000000000000000000000000aae55e8342ecbbecf836483ad54b90a32475065d0000000000000000000000008a8eff48fbd6886ff67170bd893264f338c2c5dd000000000000000000000000c505f97fea928d0820cee103eb4f9ed6e617f7a7

Deployed Bytecode

0x608060405234801561001057600080fd5b5060043610610265576000357c01000000000000000000000000000000000000000000000000000000009004806395d89b4111610158578063d84bf7a8116100d5578063f0d9746911610099578063f0d9746914610519578063f2cc0c181461052c578063f357038814610541578063f84354f11461056a578063fb3a236f1461057d57600080fd5b8063d84bf7a814610486578063dd62ed3e1461048e578063e26af579146104c7578063e4997dc5146104f3578063e86203581461050657600080fd5b8063b58624281161011c578063b58624281461040b578063c9d390d314610414578063cba0e9961461043f578063d44ad87b1461046b578063d6f84b451461047357600080fd5b806395d89b41146103b5578063a457c2d7146103bd578063a9059cbb146103d0578063a9789268146103e3578063b33a7a17146103eb57600080fd5b80633c9f861d116101e65780635afe70d7116101aa5780635afe70d71461036a5780635e00e6791461037d57806370a082311461039057806377ef7993146103a357806390cda415146103ac57600080fd5b80633c9f861d1461032c5780633f5987a9146103345780634549b0391461033c5780634851f2b51461034f5780634e7a6a021461035757600080fd5b806323b872dd1161022d57806323b872dd146102d85780632d838119146102eb578063313ce567146102fe5780633280aba614610306578063395093511461031957600080fd5b806306fdde031461026a578063095ea7b3146102885780630ecb93c0146102ab57806313114a9d146102be57806318160ddd146102d0575b600080fd5b610272610590565b60405161027f91906138ca565b60405180910390f35b61029b610296366004613670565b610622565b604051901515815260200161027f565b61029b6102b93660046135e2565b610639565b6010545b60405190815260200161027f565b600e546102c2565b61029b6102e6366004613635565b6106e0565b6102c26102f936600461387f565b610732565b600d546102c2565b61029b610314366004613699565b6107c1565b61029b610327366004613670565b610959565b6011546102c2565b61029b610990565b6102c261034a366004613897565b610a80565b61029b610b12565b6102c26103653660046135e2565b610bc2565b61029b6103783660046135e2565b610bff565b61029b61038b3660046135e2565b610cdd565b6102c261039e3660046135e2565b610da0565b6102c260145481565b6102c260155481565b610272610dff565b61029b6103cb366004613670565b610e0e565b61029b6103de366004613670565b610e45565b61029b610e52565b6102c26103f93660046135e2565b60066020526000908152604090205481565b6102c260135481565b6104276104223660046135e2565b610f5b565b604051600160a060020a03909116815260200161027f565b61029b61044d3660046135e2565b600160a060020a031660009081526008602052604090205460ff1690565b61029b610fa5565b61029b610481366004613603565b61105c565b6012546102c2565b6102c261049c366004613603565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b61029b6104d53660046135e2565b600160a060020a031660009081526007602052604090205460ff1690565b61029b6105013660046135e2565b61115a565b61029b610514366004613806565b6111ef565b61029b6105273660046135e2565b61136b565b61053f61053a3660046135e2565b61140f565b005b6102c261054f3660046135e2565b600160a060020a031660009081526022602052604090205490565b61053f6105783660046135e2565b611448565b61029b61058b3660046135e2565b611663565b6060600b805461059f90613b78565b80601f01602080910402602001604051908101604052809291908181526020018280546105cb90613b78565b80156106185780601f106105ed57610100808354040283529160200191610618565b820191906000526020600020905b8154815290600101906020018083116105fb57829003601f168201915b5050505050905090565b600061062f338484611675565b5060015b92915050565b601a54600090600160a060020a031633146106725760405160e560020a62461bcd028152600401610669906139b1565b60405180910390fd5b601a54600160a060020a038381169116141561068d57600080fd5b600160a060020a03821660009081526009602052604090205460ff16156106b357600080fd5b50600160a060020a0381166000908152600960205260409020805460ff191660019081179091555b919050565b60006106ed8484846117d4565b600160a060020a038416600090815260046020908152604080832033808552925290912054610728918691610723908690613b61565b611675565b5060019392505050565b6000600f548211156107af5760405160e560020a62461bcd02815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610669565b6107b7611995565b6106339083613b1f565b601a54600090600160a060020a031633146107f15760405160e560020a62461bcd028152600401610669906139b1565b816108415760405160e560020a62461bcd02815260206004820152601760248201527f4552523a207a65726f20616464726573732061727261790000000000000000006044820152606401610669565b6108496119b8565b60005b828110156109505760008484838181106108795760e060020a634e487b7102600052603260045260246000fd5b90506040020180360381019061088f91906137b0565b90506a52b7d2dcc80cd2e400000081602001516016546108af9190613adb565b11156109005760405160e560020a62461bcd02815260206004820181905260248201527f4552523a20657863656564206d6178207465616d206d696e7420616d6f756e746044820152606401610669565b61091330826000015183602001516119ec565b8060200151601660008282546109299190613adb565b9091555050805161093d9062ed4e00611abe565b508061094881613bb6565b91505061084c565b5061062f611bf2565b336000818152600460209081526040808320600160a060020a0387168452909152812054909161062f918590610723908690613adb565b601a54600090600160a060020a031633146109c05760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156109ed5760405160e560020a62461bcd028152600401610669906139e6565b601a547501000000000000000000000000000000000000000000900460ff16610a5b5760405160e560020a62461bcd02815260206004820152601560248201527f4552523a20616c72656164792064697361626c656400000000000000000000006044820152606401610669565b50601a805475ff00000000000000000000000000000000000000000019169055600190565b6000600e54831115610ad75760405160e560020a62461bcd02815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610669565b81610af7576000610ae784611c27565b5094965061063395505050505050565b6000610b0284611c27565b5093965061063395505050505050565b601a54600090600160a060020a03163314610b425760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16610b9e5760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a20616c72656164792070617573652064697361626c656400000000006044820152606401610669565b50601a805474ff000000000000000000000000000000000000000019169055600190565b600160a060020a03811660009081526005602052604081205480158015610bf157506000610bef84610da0565b115b156106335750600092915050565b601a54600090600160a060020a03163314610c2f5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610c5c5760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a038216610c855760405160e560020a62461bcd02815260040161066990613a1d565b6017805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556a295be96e64066972000000610cc16119b8565b610ccc3084836119ec565b610cd4611bf2565b61062f83611cab565b601a54600090600160a060020a03163314610d0d5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610d3a5760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a038216610d635760405160e560020a62461bcd02815260040161066990613a1d565b6018805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556b0121836204bc2ce21e000000610cc16119b8565b600160a060020a03811660009081526008602052604081205460ff1615610ddd5750600160a060020a031660009081526003602052604090205490565b600160a060020a03821660009081526002602052604090205461063390610732565b6060600c805461059f90613b78565b336000818152600460209081526040808320600160a060020a0387168452909152812054909161062f918590610723908690613b61565b600061062f3384846117d4565b601a54600090600160a060020a03163314610e825760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610eaf5760405160e560020a62461bcd028152600401610669906139e6565b601a547501000000000000000000000000000000000000000000900460ff1615610f1e5760405160e560020a62461bcd02815260206004820152601460248201527f4552523a20616c726561647920656e61626c65640000000000000000000000006044820152606401610669565b50601a805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055600190565b6000600160a060020a038216610f865760405160e560020a62461bcd02815260040161066990613a1d565b50600160a060020a039081166000908152602160205260409020541690565b601a54600090600160a060020a03163314610fd55760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156110325760405160e560020a62461bcd02815260206004820152601a60248201527f4552523a20616c726561647920706175736520656e61626c65640000000000006044820152606401610669565b50601a805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a03828116600090815260216020526040812054909116156110c95760405160e560020a62461bcd02815260206004820152601f60248201527f4552523a2061646472657373207265676973746572656420616c7265616479006044820152606401610669565b600160a060020a0383166110f25760405160e560020a62461bcd02815260040161066990613a1d565b600160a060020a03821661111b5760405160e560020a62461bcd02815260040161066990613a1d565b50600160a060020a039182166000908152602160205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055600190565b601a54600090600160a060020a0316331461118a5760405160e560020a62461bcd028152600401610669906139b1565b600160a060020a03821660009081526009602052604090205460ff166111af57600080fd5b601a54600160a060020a03838116911614156111ca57600080fd5b50600160a060020a03166000908152600960205260409020805460ff19169055600190565b601a54600090600160a060020a0316331461121f5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff161561124c5760405160e560020a62461bcd028152600401610669906139e6565b81516064118015611261575060648260200151105b8015611271575060648260400151105b6112c05760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f2068696768000000000000000000000000006044820152606401610669565b606482606001511080156112d8575060648260800151105b80156112e8575060648260a00151105b6113375760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f2068696768000000000000000000000000006044820152606401610669565b508051601b55602080820151601c556040820151601d556060820151601e556080820151601f5560a0909101519055600190565b601a54600090600160a060020a0316331461139b5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156113c85760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a0382166113f15760405160e560020a62461bcd02815260040161066990613a1d565b61140730836a52b7d2dcc80cd2e4000000611675565b506001919050565b601a54600160a060020a0316331461143c5760405160e560020a62461bcd028152600401610669906139b1565b61144581611cab565b50565b601a54600160a060020a031633146114755760405160e560020a62461bcd028152600401610669906139b1565b600160a060020a03811660009081526008602052604090205460ff166114e05760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610669565b60005b600a5481101561165f5781600160a060020a0316600a828154811061151b5760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600160a060020a0316141561164d57600a805461154690600190613b61565b815481106115675760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600a8054600160a060020a0390921691839081106115a45760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039485161790559184168152600382526040808220829055600890925220805460ff19169055600a80548061161a5760e060020a634e487b7102600052603160045260246000fd5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b8061165781613bb6565b9150506114e3565b5050565b600061166e82611dff565b1592915050565b600160a060020a0383166116f45760405160e560020a62461bcd02815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0382166117725760405160e560020a62461bcd028152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600160a060020a0383166118535760405160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0382166118d25760405160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610669565b6000811161194b5760405160e560020a62461bcd02815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610669565b611956838383611e8a565b611961838383612481565b5081600160a060020a031683600160a060020a0316600080516020613c04833981519152836040516117c791815260200190565b60008060006119a261294f565b90925090506119b18183613b1f565b9250505090565b6013541580156119c85750601454155b80156119d45750601554155b156119db57565b600060138190556014819055601555565b60006119f6611995565b90506000806000806000806000611a0c89611c27565b965096509650965096509650965060008883611a289190613b42565b90506000611a368a84613b42565b9050611a458d8d8d8c8c612b16565b8215611a5657611a56838e8e612bbd565b8315611a6657611a66848e612d3b565b611a74878383888888612e0c565b8b600160a060020a03168d600160a060020a0316600080516020613c0483398151915288604051611aa791815260200190565b60405180910390a350505050505050505050505050565b600160a060020a038216611ae75760405160e560020a62461bcd0281526004016106699061397a565b60008167ffffffffffffffff1611611b445760405160e560020a62461bcd02815260206004820152601560248201527f4552523a207a65726f206c6f636b20706572696f6400000000000000000000006044820152606401610669565b600160a060020a03821660009081526001602052604090205460ff1661165f57600160a060020a0382166000908152602081905260409020805467ffffffffffffffff191667ffffffffffffffff8316179055611ba18142613af3565b600160a060020a0383166000908152602081905260409020805467ffffffffffffffff9290921668010000000000000000026fffffffffffffffff0000000000000000199092169190911790555050565b601b54611c00906064613b42565b601355601c54611c11906064613b42565b601455601d54611c22906064613b42565b601555565b600080600080600080600080600080611c488b601354601454601554612e6e565b9250925092506000611c5c8c858585612eef565b90506000611c68611995565b9050600080611c788f8885612f1a565b915091506000611c8b8383898988612f44565b929e50919c509a5091985093965091945092505050919395979092949650565b600160a060020a03811660009081526008602052604090205460ff1615611d175760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610669565b600160a060020a03811660009081526002602052604090205415611d7157600160a060020a038116600090815260026020526040902054611d5790610732565b600160a060020a0382166000908152600360205260409020555b600160a060020a03811660008181526008602090815260408083208054600160ff199182168117909255600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801805473ffffffffffffffffffffffffffffffffffffffff19169096179095556007909252909120805490921617905561144581612f90565b6000600160a060020a038216611e2a5760405160e560020a62461bcd0281526004016106699061397a565b600160a060020a03821660009081526001602052604090205460ff1615611e5357506001919050565b50600160a060020a031660009081526020819052604090205467ffffffffffffffff42811668010000000000000000909204161090565b600160a060020a03831660009081526009602052604090205460ff16158015611ecc5750600160a060020a03821660009081526009602052604090205460ff16155b611ed557600080fd5b600160a060020a0383161580611ef25750600160a060020a038216155b15611efc57505050565b600160a060020a038316301480611f1b5750600160a060020a03821630145b15611f2557505050565b601a54600160a060020a0384811691161480611f4e5750601a54600160a060020a038381169116145b15611f5857505050565b600160a060020a038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480611f9f5750600160a060020a038216737a250d5630b4cf539739df2c5dacb4c659f2488d145b15611fa957505050565b33737a250d5630b4cf539739df2c5dacb4c659f2488d1480611fd55750601954600160a060020a031633145b80611fea5750601a54600160a060020a031633145b8061200d5750600160a060020a03831660009081526007602052604090205460ff165b806120305750600160a060020a03821660009081526007602052604090205460ff165b6120a55760405160e560020a62461bcd02815260206004820152602b60248201527f4552523a2073656e646572206d75737420626520756e6973776170206f72207360448201527f686f7070696e67436172740000000000000000000000000000000000000000006064820152608401610669565b60408051600280825260608201835260009260208301908036833701905050601954909150600160a060020a0385811691161480156120fd5750600160a060020a03831660009081526008602052604090205460ff16155b1561239e5761210b83611dff565b61215a5760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a2061646472657373206973206c6f636b6564286275792900000000006044820152606401610669565b600160a060020a038316600090815260066020526040902054421161217e57600080fd5b61218a42610708613adb565b600160a060020a038416600090815260066020526040812091909155815173c778417e063141139fce010982780140aa0cd5ab9183916121dd5760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505030816001815181106122225760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517f1f00ca74000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d90631f00ca749061228f9086908690600401613a54565b60006040518083038186803b1580156122a757600080fd5b505afa1580156122bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122e39190810190613709565b905060006122f085610da0565b9050600084836000815181106123195760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a76400006123349190613b42565b61233e9190613b1f565b905061234a8286613adb565b8261235488610bc2565b61235e9190613b42565b6123688784613b42565b6123729190613adb565b61237c9190613b1f565b600160a060020a0387166000908152600560205260409020555061247b915050565b601954600160a060020a0384811691161480156123d45750600160a060020a03841660009081526008602052604090205460ff16155b1561247b576123e284611dff565b6124315760405160e560020a62461bcd02815260206004820152601d60248201527f4552523a2061646472657373206973206c6f636b65642873616c6573290000006044820152606401610669565b600160a060020a038416600090815260066020526040902054421161245557600080fd5b61246142610708613adb565b600160a060020a0385166000908152600660205260409020555b50505050565b601954600090819061249b90600160a060020a0316610da0565b601954909150600160a060020a0386811691161480156124d45750600160a060020a03841660009081526007602052604090205460ff16155b15612513576124e4606482613b1f565b8311156125065760405160e560020a62461bcd0281526004016106699061391d565b61250e611bf2565b6127c7565b601954600160a060020a0385811691161480156125495750600160a060020a03851660009081526007602052604090205460ff16155b156127bf57601a547501000000000000000000000000000000000000000000900460ff166125bc5760405160e560020a62461bcd02815260206004820152601260248201527f4552523a2064697361626c6564207377617000000000000000000000000000006044820152606401610669565b6125c7606482613b1f565b8311156125e95760405160e560020a62461bcd0281526004016106699061391d565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061262f5760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505073c778417e063141139fce010982780140aa0cd5ab816001815181106126885760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517fd06ca61f000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d9063d06ca61f906126f59088908690600401613a54565b60006040518083038186803b15801561270d57600080fd5b505afa158015612721573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127499190810190613709565b905084816001815181106127705760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a764000061278b9190613b42565b6127959190613b1f565b61279e88610bc2565b116127b0576127ab611bf2565b6127b8565b6127b8613004565b50506127c7565b6127c76119b8565b600160a060020a03851660009081526008602052604090205460ff1680156128085750600160a060020a03841660009081526008602052604090205460ff16155b1561281d576128188585856119ec565b61293c565b600160a060020a03851660009081526008602052604090205460ff1615801561285e5750600160a060020a03841660009081526008602052604090205460ff165b1561288f57601954600160a060020a038581169116141561288457612818858585613034565b61281885858561308d565b600160a060020a03851660009081526008602052604090205460ff161580156128d15750600160a060020a03841660009081526008602052604090205460ff16155b156128e1576128188585856130e6565b600160a060020a03851660009081526008602052604090205460ff1680156129215750600160a060020a03841660009081526008602052604090205460ff165b156129315761281885858561313e565b61293c8585856130e6565b612944611bf2565b506001949350505050565b600f54600e546000918291825b600a54811015612ae5578260026000600a848154811061298f5760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a031683528201929092526040019020541180612a0b57508160036000600a84815481106129e45760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b15612a2157600f54600e54945094505050509091565b60026000600a8381548110612a495760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612a789084613b61565b925060036000600a8381548110612aa25760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612ad19083613b61565b915080612add81613bb6565b91505061295c565b50600e54600f54612af69190613b1f565b821015612b0d57600f54600e549350935050509091565b90939092509050565b600160a060020a038516600090815260036020526040902054612b3a908490613b61565b600160a060020a038616600090815260036020908152604080832093909355600290522054612b6a908390613b61565b600160a060020a038087166000908152600260205260408082209390935590861681522054612b9a908290613adb565b600160a060020a0390941660009081526002602052604090209390935550505050565b6000612bc7611995565b90506000612bd58286613b42565b601954909150600160a060020a038581169116148015612c0e5750600160a060020a038381166000908152602160205260409020541615155b15612c8357600160a060020a03808416600090815260216020526040902054612c3b918791849116613198565b600160a060020a0383811660009081526021602090815260409182902054915188815291831692871691600080516020613c04833981519152910160405180910390a3612d34565b601754600160a060020a0316600090815260026020526040902054612ca9908290613adb565b60178054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612ce6908690613adb565b60178054600160a060020a0390811660009081526003602090815260409182902094909455915491518881529181169290871691600080516020613c04833981519152910160405180910390a35b5050505050565b6000612d45611995565b90506000612d538285613b42565b601854600160a060020a0316600090815260026020526040902054909150612d7c908290613adb565b60188054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612db9908290613adb565b60188054600160a060020a0390811660009081526003602090815260409182902094909455915491518781529181169290861691600080516020613c04833981519152910160405180910390a350505050565b838587600f54612e1c9190613b61565b612e269190613b61565b612e309190613b61565b600f55601054612e41908490613adb565b601055601154612e52908390613adb565b601155601254612e63908290613adb565b601255505050505050565b6000808080606480612e80898b613b42565b612e8a9190613b1f565b612e949190613b1f565b90506000606480612ea5898c613b42565b612eaf9190613b1f565b612eb99190613b1f565b90506000606480612eca898d613b42565b612ed49190613b1f565b612ede9190613b1f565b929a91995091975095505050505050565b60008183612efd8688613b61565b612f079190613b61565b612f119190613b61565b95945050505050565b60008080612f288487613b42565b90506000612f368587613b42565b919791965090945050505050565b600080612f518386613b42565b90506000612f5f8486613b42565b905060008183612f6f8a8c613b61565b612f799190613b61565b612f839190613b61565b9998505050505050505050565b600160a060020a038116612fb95760405160e560020a62461bcd0281526004016106699061397a565b600160a060020a03811660009081526001602052604090205460ff1615612fdd5750565b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b601e54613012906064613b42565b601355601f54613023906064613b42565b601455602054611c22906064613b42565b600061303e611995565b905060008060008060008060006130548961329b565b9650965096509650965096509650600088836130709190613b42565b9050600061307e8a84613b42565b9050611a458d8d8d8c8c6132ff565b6000613097611995565b905060008060008060008060006130ad89611c27565b9650965096509650965096509650600088836130c99190613b42565b905060006130d78a84613b42565b9050611a458d8d888c8c61338a565b60006130f0611995565b9050600080600080600080600061310689611c27565b9650965096509650965096509650600088836131229190613b42565b905060006131308a84613b42565b9050611a458d8d8b8b613415565b6000613148611995565b9050600080600080600080600061315e89611c27565b96509650965096509650965096506000888361317a9190613b42565b905060006131888a84613b42565b9050611a458d8d8d8c8a8d61348b565b600160a060020a03811660009081526008602052604090205460ff161561322b57600160a060020a0381166000908152600260205260409020546131dd908390613adb565b600160a060020a03821660009081526002602090815260408083209390935560039052205461320d908490613adb565b600160a060020a038216600090815260036020526040902055613269565b600160a060020a03811660009081526002602052604090205461324f908390613adb565b600160a060020a0382166000908152600260205260409020555b600160a060020a03811660009081526022602052604081208054859290613291908490613adb565b9091555050505050565b6000806000806000806000806000806132bc8b601354601454601554612e6e565b92509250925060006132d08c85858561356a565b905060006132dc611995565b90506000806132ec8f8885612f1a565b915091506000611c8b838389898861358c565b600160a060020a038516600090815260026020526040902054613323908290613b61565b600160a060020a0380871660009081526002602090815260408083209490945591871681526003909152205461335a908490613adb565b600160a060020a038516600090815260036020908152604080832093909355600290522054612b9a908390613adb565b600160a060020a0385166000908152600260205260409020546133ae908390613b61565b600160a060020a038087166000908152600260209081526040808320949094559187168152600390915220546133e5908490613adb565b600160a060020a038516600090815260036020908152604080832093909355600290522054612b9a908290613adb565b600160a060020a038416600090815260026020526040902054613439908390613b61565b600160a060020a038086166000908152600260205260408082209390935590851681522054613469908290613adb565b600160a060020a03909316600090815260026020526040902092909255505050565b600160a060020a0386166000908152600360205260409020546134af908590613b61565b600160a060020a0387166000908152600360209081526040808320939093556002905220546134df908490613b61565b600160a060020a03808816600090815260026020908152604080832094909455918816815260039091522054613516908390613adb565b600160a060020a038616600090815260036020908152604080832093909355600290522054613546908290613adb565b600160a060020a039095166000908152600260205260409020949094555050505050565b600081836135788688613adb565b6135829190613adb565b612f119190613adb565b6000806135998386613b42565b905060006135a78486613b42565b9050600081836135b78a8c613adb565b6135c19190613adb565b612f839190613adb565b8035600160a060020a03811681146106db57600080fd5b6000602082840312156135f3578081fd5b6135fc826135cb565b9392505050565b60008060408385031215613615578081fd5b61361e836135cb565b915061362c602084016135cb565b90509250929050565b600080600060608486031215613649578081fd5b613652846135cb565b9250613660602085016135cb565b9150604084013590509250925092565b60008060408385031215613682578182fd5b61368b836135cb565b946020939093013593505050565b600080602083850312156136ab578182fd5b823567ffffffffffffffff808211156136c2578384fd5b818501915085601f8301126136d5578384fd5b8135818111156136e3578485fd5b8660206040830285010111156136f7578485fd5b60209290920196919550909350505050565b6000602080838503121561371b578182fd5b825167ffffffffffffffff80821115613732578384fd5b818501915085601f830112613745578384fd5b81518181111561375757613757613bea565b8381029150613767848301613aaa565b8181528481019084860184860187018a1015613781578788fd5b8795505b838610156137a3578051835260019590950194918601918601613785565b5098975050505050505050565b6000604082840312156137c1578081fd5b6040516040810181811067ffffffffffffffff821117156137e4576137e4613bea565b6040526137f0836135cb565b8152602083013560208201528091505092915050565b600060c08284031215613817578081fd5b60405160c0810181811067ffffffffffffffff8211171561383a5761383a613bea565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b600060208284031215613890578081fd5b5035919050565b600080604083850312156138a9578182fd5b82359150602083013580151581146138bf578182fd5b809150509250929050565b6000602080835283518082850152825b818110156138f6578581018301518582016040015282016138da565b818111156139075783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602f908201527f4552523a2045786365656420746865203125206f662063757272656e74206c6960408201527f717569646974792062616c616e63650000000000000000000000000000000000606082015260800190565b60208082526016908201527f4552523a207a65726f206c6f636b206164647265737300000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526013908201527f4552523a2070617573656420616c726561647900000000000000000000000000604082015260600190565b60208082526011908201527f4552523a207a65726f2061646472657373000000000000000000000000000000604082015260600190565b60006040820184835260206040818501528185518084526060860191508287019350845b81811015613a9d578451600160a060020a031683529383019391830191600101613a78565b5090979650505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ad357613ad3613bea565b604052919050565b60008219821115613aee57613aee613bd1565b500190565b600067ffffffffffffffff808316818516808303821115613b1657613b16613bd1565b01949350505050565b600082613b3d5760e060020a634e487b710281526012600452602481fd5b500490565b6000816000190483118215151615613b5c57613b5c613bd1565b500290565b600082821015613b7357613b73613bd1565b500390565b600281046001821680613b8c57607f821691505b60208210811415613bb05760e060020a634e487b7102600052602260045260246000fd5b50919050565b6000600019821415613bca57613bca613bd1565b5060010190565b60e060020a634e487b7102600052601160045260246000fd5b60e060020a634e487b7102600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fe057a975eb70d1151d154e7b68984d0503af4bf416f187530a2d977308879e464736f6c63430008040033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000114f6666696369616c2042756666446f6765000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524427566660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f3207c360a7cbeb6e359e79c3f690f1730897a19000000000000000000000000aae55e8342ecbbecf836483ad54b90a32475065d0000000000000000000000008a8eff48fbd6886ff67170bd893264f338c2c5dd000000000000000000000000c505f97fea928d0820cee103eb4f9ed6e617f7a7

-----Decoded View---------------
Arg [0] : _name (string): Official BuffDoge
Arg [1] : _symbol (string): $Buff
Arg [2] : _decimals (uint256): 18
Arg [3] : _supply (uint256): 1000000000
Arg [4] : blackList (address[]): 0xf3207c360a7cBeB6e359E79c3f690f1730897a19,0xAAE55e8342ecbBEcF836483aD54B90a32475065D,0x8A8eFf48fBD6886FF67170BD893264f338c2c5DD,0xC505F97fEA928d0820cee103EB4F9eD6e617f7a7

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [6] : 4f6666696369616c2042756666446f6765000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [8] : 2442756666000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [10] : 000000000000000000000000f3207c360a7cbeb6e359e79c3f690f1730897a19
Arg [11] : 000000000000000000000000aae55e8342ecbbecf836483ad54b90a32475065d
Arg [12] : 0000000000000000000000008a8eff48fbd6886ff67170bd893264f338c2c5dd
Arg [13] : 000000000000000000000000c505f97fea928d0820cee103eb4f9ed6e617f7a7


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.