ETH Price: $3,219.78 (+5.43%)

Token

AnteUp (ANTE)
 

Overview

Max Total Supply

28,000,000 ANTE

Holders

7

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 ANTE

Value
$0.00
0x1fdd187d20a31cdcc0bbfc30d6e41ddb2fe8b956
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:
ANTEUP

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-28
*/

//.----------------.  .-----------------. .----------------.  .----------------.  .----------------.  .----------------. 
//| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
//| |      __      | || | ____  _____  | || |  _________   | || |  _________   | || |    _____     | || |     ____     | |
//| |     /  \     | || ||_   \|_   _| | || | |  _   _  |  | || | |_   ___  |  | || |   / ___ `.   | || |   .' __ '.   | |
//| |    / /\ \    | || |  |   \ | |   | || | |_/ | | \_|  | || |   | |_  \_|  | || |  |_/___) |   | || |   | (__) |   | |
//| |   / ____ \   | || |  | |\ \| |   | || |     | |      | || |   |  _|  _   | || |   .'____.'   | || |   .`____'.   | |
//| | _/ /    \ \_ | || | _| |_\   |_  | || |    _| |_     | || |  _| |___/ |  | || |  / /____     | || |  | (____) |  | |
//| ||____|  |____|| || ||_____|\____| | || |   |_____|    | || | |_________|  | || |  |_______|   | || |  `.______.'  | |
//| |              | || |              | || |              | || |              | || |              | || |              | |
//| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
//'----------------'  '----------------'  '----------------'  '----------------'  '----------------'  '----------------' 


/**
 * SPDX-License-Identifier: MIT
 */ 


pragma solidity ^0.8.6;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }


    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }


    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }


    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {return msg.sender;}
    function _msgData() internal view virtual returns (bytes calldata) {this; return msg.data;}
}

library Address {
    function isContract(address account) internal view returns (bool) { 
        uint256 size; assembly { size := extcodesize(account) } return size > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");(bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
        
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
        
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
        
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) { return returndata; } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {revert(errorMessage);}
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IPancakeV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IPancakeV2Router {
    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 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;
}

contract ANTEUP is IERC20Metadata, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    address internal deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    string constant _name = "AnteUp";
    string constant _symbol = "ANTE";
    uint8 constant _decimals = 18;
    
    uint256 internal constant _totalSupply = 28_000_000 * (10**18);
  
    uint256 public maxTxAmount = _totalSupply / 1000; // 0.1% of the total supply
    uint256 public maxWalletBalance = _totalSupply / 50; // 2% of the total supply

    uint256 private constant FEES_DIVISOR = 10**3;

    uint256 public sellingMarketingFee = 10; // 1%
    uint256 public buyingMarketingFee = 10;
    
    uint256 public sellingTreasuryFee = 10;
    uint256 public buyingTreasuryFee = 10;
    
    uint256 public lpFee = 5; // 0.5%
    uint256 public teamFee = 10;

    uint256 public buyersTotalFees;
    uint256 public sellersTotalFees;

    bool public takeFeeEnabled = true;

    // Total = 100% (1000)
    uint256 public otherPortionOfSwap = 950; // 95%
    uint256 public lpPortionOfSwap = 50; // 5%

    address public treasuryWallet = 0x281fAA72161bbe49DD2D0987c8BA5870Bd398B26;
    
    bool public antiBotEnabled = false;
    uint256 public antiBotFee = 990; // 99%
    uint256 public _startTimeForSwap;

    bool private swapping;
    bool public swapEnabled = true;
    uint256 public swapTokensAtAmount = 1000 * (10**18);
    

    IPancakeV2Router public router;
    address public pair;
    
    mapping (address => uint256) internal _balances;
    mapping (address => mapping (address => uint256)) internal _allowances;

    mapping(address => bool) public _isBlacklisted;
    mapping(address => bool) public _iswhitelisted;
    mapping (address => bool) internal _isExcludedFromFee;
    
    event UpdatePancakeswapRouter(address indexed newAddress, address indexed oldAddress);
    
    event SwapTokensForETH(uint256 amountIn, address[] path);
    event TreasuryWalletUpdated(address indexed newTreasuryWallet, address indexed oldTreasuryWallet);
    event LiquidityAdded(uint256 tokenAmountSent, uint256 ethAmountSent, uint256 liquidity);
    
    constructor () {
        _balances[msg.sender] = _totalSupply;
        
        IPancakeV2Router _newPancakeRouter = IPancakeV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IPancakeV2Factory(_newPancakeRouter.factory()).createPair(address(this), _newPancakeRouter.WETH());
        router = _newPancakeRouter;

        buyersTotalFees = buyingMarketingFee.add(buyingTreasuryFee).add(lpFee);
        sellersTotalFees = sellingMarketingFee.add(sellingTreasuryFee).add(teamFee);


        // exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        _approve(owner(), address(router), ~uint256(0));
        
        emit Transfer(address(0), owner(), _totalSupply);
    }
    
    receive() external payable { }
    
    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) { 
        return _balances[account]; 
    }
    
        
    function transfer(address recipient, uint256 amount) external override returns (bool){
        _transfer(_msgSender(), 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(_msgSender(), spender, amount);
        return true;
        }
        
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool){
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    
    }
        
    
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    
    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "BaseRfiToken: approve from the zero address");
        require(spender != address(0), "BaseRfiToken: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function blacklistAddress(address account, bool value) external onlyOwner{
        _isBlacklisted[account] = value;
    }

    function whitelistAddress(address account, bool value) external onlyOwner{
        _iswhitelisted[account] = value;
    }
    
    function updateWalletMax(uint256 _walletMax) external onlyOwner {
        maxWalletBalance = _walletMax * (10**18);
    }
    
    function updateTransactionMax(uint256 _txMax) external onlyOwner {
        maxTxAmount = _txMax * (10**18);
    }

    function updateTreasuryWallet(address newWallet) external onlyOwner {
        require(newWallet != treasuryWallet, "The Treasury wallet is already this address");
        emit TreasuryWalletUpdated(newWallet, treasuryWallet);
        
        treasuryWallet = newWallet;
    }

    function updatePortionsOfSwap(uint256 otherPortion, uint256 lpPortion) external onlyOwner {
        
        uint256 totalPortion = otherPortion.add(lpPortion);
        require(totalPortion == 1000, "Total must be equal to 1000 (100%)");
        
        otherPortionOfSwap = otherPortion;
        lpPortionOfSwap = lpPortion;
    }

     function setSwapEnabled(bool _enabled) external onlyOwner {
        swapEnabled  = _enabled;
    }
    
    function updateSwapTokensAt(uint256 _swaptokens) external onlyOwner {
        swapTokensAtAmount = _swaptokens * (10**18);
    }

    function calcBuyersTotalFees() private {
        buyersTotalFees = buyingMarketingFee.add(buyingTreasuryFee).add(lpFee);
    }
    
    function calcSellersTotalFees() private {
        sellersTotalFees = sellingMarketingFee.add(sellingTreasuryFee).add(teamFee);
    }
    
    function updateSellingMarketingFee (uint256 newFee) external onlyOwner {
        sellingMarketingFee = newFee;
        calcSellersTotalFees();
    }
    
    function updateSellingTreasuryFee (uint256 newFee) external onlyOwner {
        sellingTreasuryFee = newFee;
        calcSellersTotalFees();
    }

    function updateTeamFee (uint256 newFee) external onlyOwner {
        teamFee = newFee;
        calcSellersTotalFees();
    }
    
    function updateLpFee (uint256 newFee) external onlyOwner {
        lpFee = newFee;
       calcBuyersTotalFees();
    }

    function updateBuyingMarketingFee (uint256 newFee) external onlyOwner {
        buyingMarketingFee = newFee;
        calcBuyersTotalFees();
    }
    
    function updateBuyingTreasuryFee (uint256 newFee) external onlyOwner {
        buyingTreasuryFee = newFee;
        calcBuyersTotalFees();
    }
    

    function toggleAntiBot(bool toggleStatus) external onlyOwner() {
        antiBotEnabled = toggleStatus;

        if(antiBotEnabled){
            _startTimeForSwap = block.timestamp + 40;    
        }    
    }

     function updateTakeFeeEnabled(bool _value) external onlyOwner {
        takeFeeEnabled = _value;
    }
    
    function updateRouterAddress(address newAddress) external onlyOwner {
        require(newAddress != address(router), "The router already has that address");
        emit UpdatePancakeswapRouter(newAddress, address(router));
        
        router = IPancakeV2Router(newAddress);   
    }

    function takeFee(address sender, uint256 amount, uint256 fee) internal returns (uint256)  {
        uint256 feeAmount = amount.mul(fee).div(FEES_DIVISOR);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
        
    
    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "Token: transfer from the zero address");
        require(recipient != address(0), "Token: transfer to the zero address");
        require(sender != address(deadAddress), "Token: transfer from the burn address");
        require(amount > 0, "Transfer amount must be greater than zero");

        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "Blacklisted address");
        
        if (
            sender != address(router) && //router -> pair is removing liquidity which shouldn't have max
            !_iswhitelisted[recipient] && //no max for those whitelisted
            !_iswhitelisted[sender] 
        ) {
            require(amount <= maxTxAmount, "Transfer amount exceeds the Max Transaction Amount.");
            
        }
        
        if ( maxWalletBalance > 0 && !_iswhitelisted[recipient] && !_iswhitelisted[sender] && recipient != address(pair) ) {
                uint256 recipientBalance = balanceOf(recipient);
                require(recipientBalance + amount <= maxWalletBalance, "New balance would exceed the maxWalletBalance");
            }

        // Exchange tokens - deduct from senders balance
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
            
         // Indicates whether or not fee should be deducted from the transfer
         bool _isTakeFee = takeFeeEnabled;
        
         // If any account belongs to _iswhitelisted account then remove the fee
        if(_iswhitelisted[sender] || _iswhitelisted[recipient]) { 
            _isTakeFee = false; 
        }

        // Transfer between wallets
        if(sender != pair && recipient != pair) {
           _isTakeFee = false;
        }

        uint256 sumOfFees = recipient == pair ? sellersTotalFees : buyersTotalFees;

        // Antibot enabled
        sumOfFees = antiBotEnabled && block.timestamp <= _startTimeForSwap ? antiBotFee : sumOfFees;

        _beforeTokenTransfer(recipient);
        
         uint256 amountReceived = _isTakeFee ? takeFee(sender, amount, sumOfFees) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);   
    }

     function _beforeTokenTransfer(address recipient) private {
            
        uint256 contractTokenBalance = balanceOf(address(this));
         // swap
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
            
        if (!swapping && canSwap && swapEnabled && recipient == pair) {
            swapping = true;
                
            swapBack();
                
            swapping = false;
        }        
    }


    function swapBack() private {
        uint256 splitLiquidityPortion = lpPortionOfSwap.div(2);
        uint256 amountToLiquify = balanceOf(address(this)).mul(splitLiquidityPortion).div(FEES_DIVISOR);
        uint256 amountToSwap = balanceOf(address(this)).sub(amountToLiquify);

        uint256 balanceBefore = address(this).balance;
        
        swapTokensForETH(amountToSwap);

        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        
        uint256 amountBNBTax = amountBNB.mul(otherPortionOfSwap).div(FEES_DIVISOR);
        uint256 amountBNBLiquidity = amountBNB.mul(splitLiquidityPortion).div(FEES_DIVISOR);
        
          //Send to addresses
        transferToAddress(payable(treasuryWallet), amountBNBTax);
        
        // add liquidity
        _addLiquidity(amountToLiquify, amountBNBLiquidity);
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        (uint256 tokenAmountSent, uint256 ethAmountSent, uint256 liquidity) = router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );

        emit LiquidityAdded(tokenAmountSent, ethAmountSent, liquidity);
    }
    
    
    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function transferToAddress(address payable recipient, uint256 amount) private {
        require(recipient != address(0), "Cannot transfer the ETH to a zero address");
        recipient.transfer(amount);
    }

    function TransferETH(address payable recipient, uint256 amount) external onlyOwner {
        require(recipient != address(0), "Cannot withdraw the ETH balance to a zero address");
        recipient.transfer(amount);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":false,"internalType":"uint256","name":"tokenAmountSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmountSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newTreasuryWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldTreasuryWallet","type":"address"}],"name":"TreasuryWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdatePancakeswapRouter","type":"event"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_iswhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_startTimeForSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotFee","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"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyersTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyingMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyingTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPortionOfSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"otherPortionOfSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellersTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellingMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellingTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"takeFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"toggleStatus","type":"bool"}],"name":"toggleAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateBuyingMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateBuyingTreasuryFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateLpFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"otherPortion","type":"uint256"},{"internalType":"uint256","name":"lpPortion","type":"uint256"}],"name":"updatePortionsOfSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateSellingMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateSellingTreasuryFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swaptokens","type":"uint256"}],"name":"updateSwapTokensAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateTakeFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txMax","type":"uint256"}],"name":"updateTransactionMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_walletMax","type":"uint256"}],"name":"updateWalletMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"whitelistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b03191661dead179055620000316103e86a17293b0a9e69fd9c0000006200062f565b6002556200004c60326a17293b0a9e69fd9c0000006200062f565b600355600a6004819055600581815560068290556007829055600855600955600c805460ff191660011790556103b6600d556032600e55600f80546001600160a81b03191673281faa72161bbe49dd2d0987c8ba5870bd398b261790556103de6010556012805461ff001916610100179055683635c9adc5dea00000601355348015620000d857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336000908152601660209081526040918290206a17293b0a9e69fd9c0000009055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480840193829003018186803b1580156200018257600080fd5b505afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd9190620005dd565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020657600080fd5b505afa1580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002419190620005dd565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200028a57600080fd5b505af11580156200029f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c59190620005dd565b601580546001600160a01b03199081166001600160a01b0393841617909155601480549091169183169190911790556008546007546005546200032f92916200031b919062000438602090811b620013ca17901c565b6200043860201b620013ca1790919060201c565b600a819055506200035a6009546200031b6006546004546200043860201b620013ca1790919060201c565b600b556001601a6000620003766000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152601a909252902080549091166001179055620003e2620003cd6000546001600160a01b031690565b6014546001600160a01b0316600019620004a6565b600080546040516a17293b0a9e69fd9c00000081526001600160a01b0390911691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35062000652565b60008062000447838562000608565b9050838110156200049f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b9392505050565b6001600160a01b038316620005125760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b606482015260840162000496565b6001600160a01b0382166200057c5760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b606482015260840162000496565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208284031215620005f057600080fd5b81516001600160a01b03811681146200049f57600080fd5b600082198211156200062a57634e487b7160e01b600052601160045260246000fd5b500190565b6000826200064d57634e487b7160e01b600052601260045260246000fd5b500490565b61262780620006626000396000f3fe6080604052600436106103535760003560e01c80638da5cb5b116101c6578063bbf1af95116100f7578063de5bfb9711610095578063f2b083201161006f578063f2b08320146109dc578063f2fde38b146109f2578063f887ea4014610a12578063fd69c21514610a3257600080fd5b8063de5bfb9714610986578063e01af92c146109a6578063e2f45605146109c657600080fd5b8063cbf7e888116100d1578063cbf7e888146108f3578063d7c94efd14610909578063d8c6404b1461091f578063dd62ed3e1461094057600080fd5b8063bbf1af951461089d578063c0fddc90146108bd578063c25c1722146108dd57600080fd5b8063a9059cbb11610164578063b225d4b71161013e578063b225d4b714610827578063b853a13914610847578063b9a45aac14610867578063bbde77c11461088757600080fd5b8063a9059cbb146107c7578063acedf07c146107e7578063adf4ba011461080757600080fd5b80639ac2d2da116101a05780639ac2d2da1461075b578063a43c772514610771578063a457c2d714610787578063a8aa1b31146107a757600080fd5b80638da5cb5b146106f057806391053d941461070e57806395d89b411461072e57600080fd5b806353a4ec55116102a057806370a082311161023e5780637d8dbe24116102185780637d8dbe2414610684578063809d458d146106a4578063872f5969146106c45780638c0b5e22146106da57600080fd5b806370a0823114610623578063715018a614610659578063721d4e2b1461066e57600080fd5b8063690c22ca1161027a578063690c22ca146105a85780636a4b8fd9146105be5780636ddd1713146105ee578063704ce43e1461060d57600080fd5b806353a4ec5514610548578063612888f614610568578063655873021461058857600080fd5b806323b872dd1161030d57806339509351116102e757806339509351146104b6578063450dde46146104d6578063455a4396146104f05780634626402b1461051057600080fd5b806323b872dd146104645780632a6ae1e814610484578063313ce5671461049a57600080fd5b8062e6be7b1461035f57806306fdde0314610381578063095ea7b3146103c2578063176b48b8146103f257806318160ddd146104165780631cdd3be31461043457600080fd5b3661035a57005b600080fd5b34801561036b57600080fd5b5061037f61037a366004612237565b610a52565b005b34801561038d57600080fd5b506040805180820190915260068152650416e746555760d41b60208201525b6040516103b99190612414565b60405180910390f35b3480156103ce57600080fd5b506103e26103dd366004612271565b610b4c565b60405190151581526020016103b9565b3480156103fe57600080fd5b50610408600b5481565b6040519081526020016103b9565b34801561042257600080fd5b506a17293b0a9e69fd9c000000610408565b34801561044057600080fd5b506103e261044f366004612237565b60186020526000908152604090205460ff1681565b34801561047057600080fd5b506103e261047f3660046122d6565b610b63565b34801561049057600080fd5b5061040860045481565b3480156104a657600080fd5b50604051601281526020016103b9565b3480156104c257600080fd5b506103e26104d1366004612271565b610bcc565b3480156104e257600080fd5b50600c546103e29060ff1681565b3480156104fc57600080fd5b5061037f61050b366004612317565b610c02565b34801561051c57600080fd5b50600f54610530906001600160a01b031681565b6040516001600160a01b0390911681526020016103b9565b34801561055457600080fd5b5061037f610563366004612367565b610c57565b34801561057457600080fd5b5061037f610583366004612367565b610c91565b34801561059457600080fd5b5061037f6105a3366004612367565b610cc8565b3480156105b457600080fd5b5061040860115481565b3480156105ca57600080fd5b506103e26105d9366004612237565b60196020526000908152604090205460ff1681565b3480156105fa57600080fd5b506012546103e290610100900460ff1681565b34801561061957600080fd5b5061040860085481565b34801561062f57600080fd5b5061040861063e366004612237565b6001600160a01b031660009081526016602052604090205490565b34801561066557600080fd5b5061037f610cff565b34801561067a57600080fd5b5061040860055481565b34801561069057600080fd5b5061037f61069f366004612367565b610d73565b3480156106b057600080fd5b5061037f6106bf366004612237565b610db5565b3480156106d057600080fd5b5061040860105481565b3480156106e657600080fd5b5061040860025481565b3480156106fc57600080fd5b506000546001600160a01b0316610530565b34801561071a57600080fd5b5061037f610729366004612367565b610eae565b34801561073a57600080fd5b50604080518082019091526004815263414e544560e01b60208201526103ac565b34801561076757600080fd5b5061040860075481565b34801561077d57600080fd5b50610408600a5481565b34801561079357600080fd5b506103e26107a2366004612271565b610ef0565b3480156107b357600080fd5b50601554610530906001600160a01b031681565b3480156107d357600080fd5b506103e26107e2366004612271565b610f3f565b3480156107f357600080fd5b5061037f610802366004612367565b610f4c565b34801561081357600080fd5b5061037f610822366004612367565b610f83565b34801561083357600080fd5b5061037f610842366004612367565b610fba565b34801561085357600080fd5b5061037f610862366004612367565b610ffc565b34801561087357600080fd5b5061037f610882366004612317565b611033565b34801561089357600080fd5b5061040860035481565b3480156108a957600080fd5b5061037f6108b836600461234c565b611088565b3480156108c957600080fd5b5061037f6108d8366004612380565b6110ea565b3480156108e957600080fd5b50610408600d5481565b3480156108ff57600080fd5b50610408600e5481565b34801561091557600080fd5b5061040860095481565b34801561092b57600080fd5b50600f546103e290600160a01b900460ff1681565b34801561094c57600080fd5b5061040861095b36600461229d565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b34801561099257600080fd5b5061037f6109a136600461234c565b61118a565b3480156109b257600080fd5b5061037f6109c136600461234c565b6111c7565b3480156109d257600080fd5b5061040860135481565b3480156109e857600080fd5b5061040860065481565b3480156109fe57600080fd5b5061037f610a0d366004612237565b61120b565b348015610a1e57600080fd5b50601454610530906001600160a01b031681565b348015610a3e57600080fd5b5061037f610a4d366004612271565b6112f5565b6000546001600160a01b03163314610a855760405162461bcd60e51b8152600401610a7c90612469565b60405180910390fd5b6014546001600160a01b0382811691161415610aef5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610a7c565b6014546040516001600160a01b03918216918316907fc4382ee892d64a85fffb798adefd9dd8fcdeb2b1ababe74b46cdae7fe88da4e090600090a3601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b59338484611430565b5060015b92915050565b6000610b70848484611563565b610bc28433610bbd856040518060600160405280602881526020016125a5602891396001600160a01b038a1660009081526017602090815260408083203384529091529020549190611b27565b611430565b5060019392505050565b3360008181526017602090815260408083206001600160a01b03871684529091528120549091610b59918590610bbd90866113ca565b6000546001600160a01b03163314610c2c5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c815760405162461bcd60e51b8152600401610a7c90612469565b6004819055610c8e611b5e565b50565b6000546001600160a01b03163314610cbb5760405162461bcd60e51b8152600401610a7c90612469565b6008819055610c8e611b86565b6000546001600160a01b03163314610cf25760405162461bcd60e51b8152600401610a7c90612469565b6005819055610c8e611b86565b6000546001600160a01b03163314610d295760405162461bcd60e51b8152600401610a7c90612469565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d9d5760405162461bcd60e51b8152600401610a7c90612469565b610daf81670de0b6b3a764000061252d565b60025550565b6000546001600160a01b03163314610ddf5760405162461bcd60e51b8152600401610a7c90612469565b600f546001600160a01b0382811691161415610e515760405162461bcd60e51b815260206004820152602b60248201527f5468652054726561737572792077616c6c657420697320616c7265616479207460448201526a686973206164647265737360a81b6064820152608401610a7c565b600f546040516001600160a01b03918216918316907fa982575859d7ad2f390dc12b23f7dab8bbda047f9d0140ac68344b27bf34bfb490600090a3600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ed85760405162461bcd60e51b8152600401610a7c90612469565b610eea81670de0b6b3a764000061252d565b60035550565b6000610b593384610bbd856040518060600160405280602581526020016125cd602591393360009081526017602090815260408083206001600160a01b038d1684529091529020549190611b27565b6000610b59338484611563565b6000546001600160a01b03163314610f765760405162461bcd60e51b8152600401610a7c90612469565b6009819055610c8e611b5e565b6000546001600160a01b03163314610fad5760405162461bcd60e51b8152600401610a7c90612469565b6006819055610c8e611b5e565b6000546001600160a01b03163314610fe45760405162461bcd60e51b8152600401610a7c90612469565b610ff681670de0b6b3a764000061252d565b60135550565b6000546001600160a01b031633146110265760405162461bcd60e51b8152600401610a7c90612469565b6007819055610c8e611b86565b6000546001600160a01b0316331461105d5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110b25760405162461bcd60e51b8152600401610a7c90612469565b600f805460ff60a01b1916600160a01b8315158102919091179182905560ff91041615610c8e576110e44260286124f3565b60115550565b6000546001600160a01b031633146111145760405162461bcd60e51b8152600401610a7c90612469565b600061112083836113ca565b9050806103e81461117e5760405162461bcd60e51b815260206004820152602260248201527f546f74616c206d75737420626520657175616c20746f20313030302028313030604482015261252960f01b6064820152608401610a7c565b50600d91909155600e55565b6000546001600160a01b031633146111b45760405162461bcd60e51b8152600401610a7c90612469565b600c805460ff1916911515919091179055565b6000546001600160a01b031633146111f15760405162461bcd60e51b8152600401610a7c90612469565b601280549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146112355760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03811661129a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461131f5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03821661138f5760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015270746f2061207a65726f206164647265737360781b6064820152608401610a7c565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156113c5573d6000803e3d6000fd5b505050565b6000806113d783856124f3565b9050838110156114295760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a7c565b9392505050565b6001600160a01b03831661149a5760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b6064820152608401610a7c565b6001600160a01b0382166115025760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401610a7c565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115c75760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a7c565b6001600160a01b0382166116295760405162461bcd60e51b815260206004820152602360248201527f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a7c565b6001546001600160a01b03848116911614156116955760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865206275726e206164604482015264647265737360d81b6064820152608401610a7c565b600081116116f75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a7c565b6001600160a01b03831660009081526018602052604090205460ff1615801561173957506001600160a01b03821660009081526018602052604090205460ff16155b61177b5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610a7c565b6014546001600160a01b038481169116148015906117b257506001600160a01b03821660009081526019602052604090205460ff16155b80156117d757506001600160a01b03831660009081526019602052604090205460ff16155b1561184a5760025481111561184a5760405162461bcd60e51b815260206004820152603360248201527f5472616e7366657220616d6f756e74206578636565647320746865204d6178206044820152722a3930b739b0b1ba34b7b71020b6b7bab73a1760691b6064820152608401610a7c565b600060035411801561187557506001600160a01b03821660009081526019602052604090205460ff16155b801561189a57506001600160a01b03831660009081526019602052604090205460ff16155b80156118b457506015546001600160a01b03838116911614155b15611945576001600160a01b0382166000908152601660205260409020546003546118df83836124f3565b11156119435760405162461bcd60e51b815260206004820152602d60248201527f4e65772062616c616e636520776f756c642065786365656420746865206d617860448201526c57616c6c657442616c616e636560981b6064820152608401610a7c565b505b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260169091529190912054611997918390611b27565b6001600160a01b038416600090815260166020908152604080832093909355600c5460199091529190205460ff9182169116806119ec57506001600160a01b03831660009081526019602052604090205460ff165b156119f5575060005b6015546001600160a01b03858116911614801590611a2157506015546001600160a01b03848116911614155b15611a2a575060005b6015546000906001600160a01b03858116911614611a4a57600a54611a4e565b600b545b600f54909150600160a01b900460ff168015611a6c57506011544211155b611a765780611a7a565b6010545b9050611a8584611ba8565b600082611a925783611a9d565b611a9d868584611c25565b6001600160a01b038616600090815260166020526040902054909150611ac390826113ca565b6001600160a01b0380871660008181526016602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b179085815260200190565b60405180910390a3505050505050565b60008184841115611b4b5760405162461bcd60e51b8152600401610a7c9190612414565b50611b56838561254c565b949350505050565b611b81600954611b7b6006546004546113ca90919063ffffffff16565b906113ca565b600b55565b611ba3600854611b7b6007546005546113ca90919063ffffffff16565b600a55565b30600090815260166020526040902054601354601254908210159060ff16158015611bd05750805b8015611be35750601254610100900460ff165b8015611bfc57506015546001600160a01b038481169116145b156113c5576012805460ff19166001179055611c16611cc7565b6012805460ff19169055505050565b600080611c3e6103e8611c388686611daf565b90611e2e565b30600090815260166020526040902054909150611c5b90826113ca565b30600081815260166020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cac9085815260200190565b60405180910390a3611cbe8482611e89565b95945050505050565b600e54600090611cd8906002611e2e565b90506000611d0b6103e8611c3884611d05306001600160a01b031660009081526016602052604090205490565b90611daf565b90506000611d3882611d32306001600160a01b031660009081526016602052604090205490565b90611e89565b905047611d4482611ee5565b6000611d504783611e89565b90506000611d6f6103e8611c38600d5485611daf90919063ffffffff16565b90506000611d836103e8611c38858a611daf565b600f54909150611d9c906001600160a01b031683612087565b611da686826120ef565b50505050505050565b600082611dbe57506000610b5d565b6000611dca838561252d565b905082611dd7858361250b565b146114295760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a7c565b6000808211611e7f5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610a7c565b611429828461250b565b600082821115611edb5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610a7c565b611429828461254c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f1a57611f1a612579565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611f6e57600080fd5b505afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa69190612254565b81600181518110611fb957611fb9612579565b6001600160a01b039283166020918202929092010152601454611fdf9130911684611430565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906120189085906000908690309042906004016124b7565b600060405180830381600087803b15801561203257600080fd5b505af1158015612046573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161207b92919061249e565b60405180910390a15050565b6001600160a01b03821661138f5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f74207472616e73666572207468652045544820746f2061207a65726044820152686f206164647265737360b81b6064820152608401610a7c565b6014546121079030906001600160a01b031684611430565b601454600090819081906001600160a01b031663f305d71985308885806121366000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561219957600080fd5b505af11580156121ad573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121d291906123a2565b604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b8035801515811461223257600080fd5b919050565b60006020828403121561224957600080fd5b81356114298161258f565b60006020828403121561226657600080fd5b81516114298161258f565b6000806040838503121561228457600080fd5b823561228f8161258f565b946020939093013593505050565b600080604083850312156122b057600080fd5b82356122bb8161258f565b915060208301356122cb8161258f565b809150509250929050565b6000806000606084860312156122eb57600080fd5b83356122f68161258f565b925060208401356123068161258f565b929592945050506040919091013590565b6000806040838503121561232a57600080fd5b82356123358161258f565b915061234360208401612222565b90509250929050565b60006020828403121561235e57600080fd5b61142982612222565b60006020828403121561237957600080fd5b5035919050565b6000806040838503121561239357600080fd5b50508035926020909101359150565b6000806000606084860312156123b757600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156124095781516001600160a01b0316875295820195908201906001016123e4565b509495945050505050565b600060208083528351808285015260005b8181101561244157858101830151858201604001528201612425565b81811115612453576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000611b5660408301846123d0565b85815284602082015260a0604082015260006124d660a08301866123d0565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561250657612506612563565b500190565b60008261252857634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561254757612547612563565b500290565b60008282101561255e5761255e612563565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610c8e57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220deff458abd8c0150029b391b098673d5e4bcbfbcab9a1f0cf358e6306699b7b664736f6c63430008060033

Deployed Bytecode

0x6080604052600436106103535760003560e01c80638da5cb5b116101c6578063bbf1af95116100f7578063de5bfb9711610095578063f2b083201161006f578063f2b08320146109dc578063f2fde38b146109f2578063f887ea4014610a12578063fd69c21514610a3257600080fd5b8063de5bfb9714610986578063e01af92c146109a6578063e2f45605146109c657600080fd5b8063cbf7e888116100d1578063cbf7e888146108f3578063d7c94efd14610909578063d8c6404b1461091f578063dd62ed3e1461094057600080fd5b8063bbf1af951461089d578063c0fddc90146108bd578063c25c1722146108dd57600080fd5b8063a9059cbb11610164578063b225d4b71161013e578063b225d4b714610827578063b853a13914610847578063b9a45aac14610867578063bbde77c11461088757600080fd5b8063a9059cbb146107c7578063acedf07c146107e7578063adf4ba011461080757600080fd5b80639ac2d2da116101a05780639ac2d2da1461075b578063a43c772514610771578063a457c2d714610787578063a8aa1b31146107a757600080fd5b80638da5cb5b146106f057806391053d941461070e57806395d89b411461072e57600080fd5b806353a4ec55116102a057806370a082311161023e5780637d8dbe24116102185780637d8dbe2414610684578063809d458d146106a4578063872f5969146106c45780638c0b5e22146106da57600080fd5b806370a0823114610623578063715018a614610659578063721d4e2b1461066e57600080fd5b8063690c22ca1161027a578063690c22ca146105a85780636a4b8fd9146105be5780636ddd1713146105ee578063704ce43e1461060d57600080fd5b806353a4ec5514610548578063612888f614610568578063655873021461058857600080fd5b806323b872dd1161030d57806339509351116102e757806339509351146104b6578063450dde46146104d6578063455a4396146104f05780634626402b1461051057600080fd5b806323b872dd146104645780632a6ae1e814610484578063313ce5671461049a57600080fd5b8062e6be7b1461035f57806306fdde0314610381578063095ea7b3146103c2578063176b48b8146103f257806318160ddd146104165780631cdd3be31461043457600080fd5b3661035a57005b600080fd5b34801561036b57600080fd5b5061037f61037a366004612237565b610a52565b005b34801561038d57600080fd5b506040805180820190915260068152650416e746555760d41b60208201525b6040516103b99190612414565b60405180910390f35b3480156103ce57600080fd5b506103e26103dd366004612271565b610b4c565b60405190151581526020016103b9565b3480156103fe57600080fd5b50610408600b5481565b6040519081526020016103b9565b34801561042257600080fd5b506a17293b0a9e69fd9c000000610408565b34801561044057600080fd5b506103e261044f366004612237565b60186020526000908152604090205460ff1681565b34801561047057600080fd5b506103e261047f3660046122d6565b610b63565b34801561049057600080fd5b5061040860045481565b3480156104a657600080fd5b50604051601281526020016103b9565b3480156104c257600080fd5b506103e26104d1366004612271565b610bcc565b3480156104e257600080fd5b50600c546103e29060ff1681565b3480156104fc57600080fd5b5061037f61050b366004612317565b610c02565b34801561051c57600080fd5b50600f54610530906001600160a01b031681565b6040516001600160a01b0390911681526020016103b9565b34801561055457600080fd5b5061037f610563366004612367565b610c57565b34801561057457600080fd5b5061037f610583366004612367565b610c91565b34801561059457600080fd5b5061037f6105a3366004612367565b610cc8565b3480156105b457600080fd5b5061040860115481565b3480156105ca57600080fd5b506103e26105d9366004612237565b60196020526000908152604090205460ff1681565b3480156105fa57600080fd5b506012546103e290610100900460ff1681565b34801561061957600080fd5b5061040860085481565b34801561062f57600080fd5b5061040861063e366004612237565b6001600160a01b031660009081526016602052604090205490565b34801561066557600080fd5b5061037f610cff565b34801561067a57600080fd5b5061040860055481565b34801561069057600080fd5b5061037f61069f366004612367565b610d73565b3480156106b057600080fd5b5061037f6106bf366004612237565b610db5565b3480156106d057600080fd5b5061040860105481565b3480156106e657600080fd5b5061040860025481565b3480156106fc57600080fd5b506000546001600160a01b0316610530565b34801561071a57600080fd5b5061037f610729366004612367565b610eae565b34801561073a57600080fd5b50604080518082019091526004815263414e544560e01b60208201526103ac565b34801561076757600080fd5b5061040860075481565b34801561077d57600080fd5b50610408600a5481565b34801561079357600080fd5b506103e26107a2366004612271565b610ef0565b3480156107b357600080fd5b50601554610530906001600160a01b031681565b3480156107d357600080fd5b506103e26107e2366004612271565b610f3f565b3480156107f357600080fd5b5061037f610802366004612367565b610f4c565b34801561081357600080fd5b5061037f610822366004612367565b610f83565b34801561083357600080fd5b5061037f610842366004612367565b610fba565b34801561085357600080fd5b5061037f610862366004612367565b610ffc565b34801561087357600080fd5b5061037f610882366004612317565b611033565b34801561089357600080fd5b5061040860035481565b3480156108a957600080fd5b5061037f6108b836600461234c565b611088565b3480156108c957600080fd5b5061037f6108d8366004612380565b6110ea565b3480156108e957600080fd5b50610408600d5481565b3480156108ff57600080fd5b50610408600e5481565b34801561091557600080fd5b5061040860095481565b34801561092b57600080fd5b50600f546103e290600160a01b900460ff1681565b34801561094c57600080fd5b5061040861095b36600461229d565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b34801561099257600080fd5b5061037f6109a136600461234c565b61118a565b3480156109b257600080fd5b5061037f6109c136600461234c565b6111c7565b3480156109d257600080fd5b5061040860135481565b3480156109e857600080fd5b5061040860065481565b3480156109fe57600080fd5b5061037f610a0d366004612237565b61120b565b348015610a1e57600080fd5b50601454610530906001600160a01b031681565b348015610a3e57600080fd5b5061037f610a4d366004612271565b6112f5565b6000546001600160a01b03163314610a855760405162461bcd60e51b8152600401610a7c90612469565b60405180910390fd5b6014546001600160a01b0382811691161415610aef5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610a7c565b6014546040516001600160a01b03918216918316907fc4382ee892d64a85fffb798adefd9dd8fcdeb2b1ababe74b46cdae7fe88da4e090600090a3601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b59338484611430565b5060015b92915050565b6000610b70848484611563565b610bc28433610bbd856040518060600160405280602881526020016125a5602891396001600160a01b038a1660009081526017602090815260408083203384529091529020549190611b27565b611430565b5060019392505050565b3360008181526017602090815260408083206001600160a01b03871684529091528120549091610b59918590610bbd90866113ca565b6000546001600160a01b03163314610c2c5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c815760405162461bcd60e51b8152600401610a7c90612469565b6004819055610c8e611b5e565b50565b6000546001600160a01b03163314610cbb5760405162461bcd60e51b8152600401610a7c90612469565b6008819055610c8e611b86565b6000546001600160a01b03163314610cf25760405162461bcd60e51b8152600401610a7c90612469565b6005819055610c8e611b86565b6000546001600160a01b03163314610d295760405162461bcd60e51b8152600401610a7c90612469565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d9d5760405162461bcd60e51b8152600401610a7c90612469565b610daf81670de0b6b3a764000061252d565b60025550565b6000546001600160a01b03163314610ddf5760405162461bcd60e51b8152600401610a7c90612469565b600f546001600160a01b0382811691161415610e515760405162461bcd60e51b815260206004820152602b60248201527f5468652054726561737572792077616c6c657420697320616c7265616479207460448201526a686973206164647265737360a81b6064820152608401610a7c565b600f546040516001600160a01b03918216918316907fa982575859d7ad2f390dc12b23f7dab8bbda047f9d0140ac68344b27bf34bfb490600090a3600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ed85760405162461bcd60e51b8152600401610a7c90612469565b610eea81670de0b6b3a764000061252d565b60035550565b6000610b593384610bbd856040518060600160405280602581526020016125cd602591393360009081526017602090815260408083206001600160a01b038d1684529091529020549190611b27565b6000610b59338484611563565b6000546001600160a01b03163314610f765760405162461bcd60e51b8152600401610a7c90612469565b6009819055610c8e611b5e565b6000546001600160a01b03163314610fad5760405162461bcd60e51b8152600401610a7c90612469565b6006819055610c8e611b5e565b6000546001600160a01b03163314610fe45760405162461bcd60e51b8152600401610a7c90612469565b610ff681670de0b6b3a764000061252d565b60135550565b6000546001600160a01b031633146110265760405162461bcd60e51b8152600401610a7c90612469565b6007819055610c8e611b86565b6000546001600160a01b0316331461105d5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110b25760405162461bcd60e51b8152600401610a7c90612469565b600f805460ff60a01b1916600160a01b8315158102919091179182905560ff91041615610c8e576110e44260286124f3565b60115550565b6000546001600160a01b031633146111145760405162461bcd60e51b8152600401610a7c90612469565b600061112083836113ca565b9050806103e81461117e5760405162461bcd60e51b815260206004820152602260248201527f546f74616c206d75737420626520657175616c20746f20313030302028313030604482015261252960f01b6064820152608401610a7c565b50600d91909155600e55565b6000546001600160a01b031633146111b45760405162461bcd60e51b8152600401610a7c90612469565b600c805460ff1916911515919091179055565b6000546001600160a01b031633146111f15760405162461bcd60e51b8152600401610a7c90612469565b601280549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146112355760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03811661129a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461131f5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03821661138f5760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015270746f2061207a65726f206164647265737360781b6064820152608401610a7c565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156113c5573d6000803e3d6000fd5b505050565b6000806113d783856124f3565b9050838110156114295760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a7c565b9392505050565b6001600160a01b03831661149a5760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b6064820152608401610a7c565b6001600160a01b0382166115025760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401610a7c565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115c75760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a7c565b6001600160a01b0382166116295760405162461bcd60e51b815260206004820152602360248201527f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a7c565b6001546001600160a01b03848116911614156116955760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865206275726e206164604482015264647265737360d81b6064820152608401610a7c565b600081116116f75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a7c565b6001600160a01b03831660009081526018602052604090205460ff1615801561173957506001600160a01b03821660009081526018602052604090205460ff16155b61177b5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610a7c565b6014546001600160a01b038481169116148015906117b257506001600160a01b03821660009081526019602052604090205460ff16155b80156117d757506001600160a01b03831660009081526019602052604090205460ff16155b1561184a5760025481111561184a5760405162461bcd60e51b815260206004820152603360248201527f5472616e7366657220616d6f756e74206578636565647320746865204d6178206044820152722a3930b739b0b1ba34b7b71020b6b7bab73a1760691b6064820152608401610a7c565b600060035411801561187557506001600160a01b03821660009081526019602052604090205460ff16155b801561189a57506001600160a01b03831660009081526019602052604090205460ff16155b80156118b457506015546001600160a01b03838116911614155b15611945576001600160a01b0382166000908152601660205260409020546003546118df83836124f3565b11156119435760405162461bcd60e51b815260206004820152602d60248201527f4e65772062616c616e636520776f756c642065786365656420746865206d617860448201526c57616c6c657442616c616e636560981b6064820152608401610a7c565b505b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260169091529190912054611997918390611b27565b6001600160a01b038416600090815260166020908152604080832093909355600c5460199091529190205460ff9182169116806119ec57506001600160a01b03831660009081526019602052604090205460ff165b156119f5575060005b6015546001600160a01b03858116911614801590611a2157506015546001600160a01b03848116911614155b15611a2a575060005b6015546000906001600160a01b03858116911614611a4a57600a54611a4e565b600b545b600f54909150600160a01b900460ff168015611a6c57506011544211155b611a765780611a7a565b6010545b9050611a8584611ba8565b600082611a925783611a9d565b611a9d868584611c25565b6001600160a01b038616600090815260166020526040902054909150611ac390826113ca565b6001600160a01b0380871660008181526016602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b179085815260200190565b60405180910390a3505050505050565b60008184841115611b4b5760405162461bcd60e51b8152600401610a7c9190612414565b50611b56838561254c565b949350505050565b611b81600954611b7b6006546004546113ca90919063ffffffff16565b906113ca565b600b55565b611ba3600854611b7b6007546005546113ca90919063ffffffff16565b600a55565b30600090815260166020526040902054601354601254908210159060ff16158015611bd05750805b8015611be35750601254610100900460ff165b8015611bfc57506015546001600160a01b038481169116145b156113c5576012805460ff19166001179055611c16611cc7565b6012805460ff19169055505050565b600080611c3e6103e8611c388686611daf565b90611e2e565b30600090815260166020526040902054909150611c5b90826113ca565b30600081815260166020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cac9085815260200190565b60405180910390a3611cbe8482611e89565b95945050505050565b600e54600090611cd8906002611e2e565b90506000611d0b6103e8611c3884611d05306001600160a01b031660009081526016602052604090205490565b90611daf565b90506000611d3882611d32306001600160a01b031660009081526016602052604090205490565b90611e89565b905047611d4482611ee5565b6000611d504783611e89565b90506000611d6f6103e8611c38600d5485611daf90919063ffffffff16565b90506000611d836103e8611c38858a611daf565b600f54909150611d9c906001600160a01b031683612087565b611da686826120ef565b50505050505050565b600082611dbe57506000610b5d565b6000611dca838561252d565b905082611dd7858361250b565b146114295760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a7c565b6000808211611e7f5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610a7c565b611429828461250b565b600082821115611edb5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610a7c565b611429828461254c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f1a57611f1a612579565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611f6e57600080fd5b505afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa69190612254565b81600181518110611fb957611fb9612579565b6001600160a01b039283166020918202929092010152601454611fdf9130911684611430565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906120189085906000908690309042906004016124b7565b600060405180830381600087803b15801561203257600080fd5b505af1158015612046573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161207b92919061249e565b60405180910390a15050565b6001600160a01b03821661138f5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f74207472616e73666572207468652045544820746f2061207a65726044820152686f206164647265737360b81b6064820152608401610a7c565b6014546121079030906001600160a01b031684611430565b601454600090819081906001600160a01b031663f305d71985308885806121366000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561219957600080fd5b505af11580156121ad573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121d291906123a2565b604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b8035801515811461223257600080fd5b919050565b60006020828403121561224957600080fd5b81356114298161258f565b60006020828403121561226657600080fd5b81516114298161258f565b6000806040838503121561228457600080fd5b823561228f8161258f565b946020939093013593505050565b600080604083850312156122b057600080fd5b82356122bb8161258f565b915060208301356122cb8161258f565b809150509250929050565b6000806000606084860312156122eb57600080fd5b83356122f68161258f565b925060208401356123068161258f565b929592945050506040919091013590565b6000806040838503121561232a57600080fd5b82356123358161258f565b915061234360208401612222565b90509250929050565b60006020828403121561235e57600080fd5b61142982612222565b60006020828403121561237957600080fd5b5035919050565b6000806040838503121561239357600080fd5b50508035926020909101359150565b6000806000606084860312156123b757600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156124095781516001600160a01b0316875295820195908201906001016123e4565b509495945050505050565b600060208083528351808285015260005b8181101561244157858101830151858201604001528201612425565b81811115612453576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000611b5660408301846123d0565b85815284602082015260a0604082015260006124d660a08301866123d0565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561250657612506612563565b500190565b60008261252857634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561254757612547612563565b500290565b60008282101561255e5761255e612563565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610c8e57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220deff458abd8c0150029b391b098673d5e4bcbfbcab9a1f0cf358e6306699b7b664736f6c63430008060033

Deployed Bytecode Sourcemap

10794:14387:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19127:293;;;;;;;;;;-1:-1:-1;19127:293:0;;;;;:::i;:::-;;:::i;:::-;;13870:94;;;;;;;;;;-1:-1:-1;13951:5:0;;;;;;;;;;;;-1:-1:-1;;;13951:5:0;;;;13870:94;;;;;;;:::i;:::-;;;;;;;;14781:167;;;;;;;;;;-1:-1:-1;14781:167:0;;;;;:::i;:::-;;:::i;:::-;;;4894:14:1;;4887:22;4869:41;;4857:2;4842:18;14781:167:0;4824:92:1;11727:31:0;;;;;;;;;;;;;;;;;;;13818:25:1;;;13806:2;13791:18;11727:31:0;13773:76:1;14180:102:0;;;;;;;;;;-1:-1:-1;11162:21:0;14180:102;;12487:46;;;;;;;;;;-1:-1:-1;12487:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14964:320;;;;;;;;;;-1:-1:-1;14964:320:0;;;;;:::i;:::-;;:::i;11417:39::-;;;;;;;;;;;;;;;;14078:94;;;;;;;;;;-1:-1:-1;14078:94:0;;11106:2;15244:36:1;;15232:2;15217:18;14078:94:0;15199:87:1;15306:218:0;;;;;;;;;;-1:-1:-1;15306:218:0;;;;;:::i;:::-;;:::i;11767:33::-;;;;;;;;;;-1:-1:-1;11767:33:0;;;;;;;;16181:123;;;;;;;;;;-1:-1:-1;16181:123:0;;;;;:::i;:::-;;:::i;11940:74::-;;;;;;;;;;-1:-1:-1;11940:74:0;;;;-1:-1:-1;;;;;11940:74:0;;;;;;-1:-1:-1;;;;;4073:32:1;;;4055:51;;4043:2;4028:18;11940:74:0;4010:102:1;17878:151:0;;;;;;;;;;-1:-1:-1;17878:151:0;;;;;:::i;:::-;;:::i;18337:121::-;;;;;;;;;;-1:-1:-1;18337:121:0;;;;;:::i;:::-;;:::i;18466:148::-;;;;;;;;;;-1:-1:-1;18466:148:0;;;;;:::i;:::-;;:::i;12113:32::-;;;;;;;;;;;;;;;;12540:46;;;;;;;;;;-1:-1:-1;12540:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12182:30;;;;;;;;;;-1:-1:-1;12182:30:0;;;;;;;;;;;11615:24;;;;;;;;;;;;;;;;14290:121;;;;;;;;;;-1:-1:-1;14290:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;14384:18:0;14356:7;14384:18;;;:9;:18;;;;;;;14290:121;8804:148;;;;;;;;;;;;;:::i;11469:38::-;;;;;;;;;;;;;;;;16582:115;;;;;;;;;;-1:-1:-1;16582:115:0;;;;;:::i;:::-;;:::i;16705:281::-;;;;;;;;;;-1:-1:-1;16705:281:0;;;;;:::i;:::-;;:::i;12068:31::-;;;;;;;;;;;;;;;;11194:48;;;;;;;;;;;;;;;;8579:79;;;;;;;;;;-1:-1:-1;8617:7:0;8644:6;-1:-1:-1;;;;;8644:6:0;8579:79;;16447:123;;;;;;;;;;-1:-1:-1;16447:123:0;;;;;:::i;:::-;;:::i;13972:98::-;;;;;;;;;;-1:-1:-1;14055:7:0;;;;;;;;;;;;-1:-1:-1;;;14055:7:0;;;;13972:98;;11565:37;;;;;;;;;;;;;;;;11690:30;;;;;;;;;;;;;;;;15536:269;;;;;;;;;;-1:-1:-1;15536:269:0;;;;;:::i;:::-;;:::i;12322:19::-;;;;;;;;;;-1:-1:-1;12322:19:0;;;;-1:-1:-1;;;;;12322:19:0;;;14433:172;;;;;;;;;;-1:-1:-1;14433:172:0;;;;;:::i;:::-;;:::i;18198:127::-;;;;;;;;;;-1:-1:-1;18198:127:0;;;;;:::i;:::-;;:::i;18041:149::-;;;;;;;;;;-1:-1:-1;18041:149:0;;;;;:::i;:::-;;:::i;17454:130::-;;;;;;;;;;-1:-1:-1;17454:130:0;;;;;:::i;:::-;;:::i;18626:146::-;;;;;;;;;;-1:-1:-1;18626:146:0;;;;;:::i;:::-;;:::i;16312:123::-;;;;;;;;;;-1:-1:-1;16312:123:0;;;;;:::i;:::-;;:::i;11277:51::-;;;;;;;;;;;;;;;;18786:216;;;;;;;;;;-1:-1:-1;18786:216:0;;;;;:::i;:::-;;:::i;16994:339::-;;;;;;;;;;-1:-1:-1;16994:339:0;;;;;:::i;:::-;;:::i;11837:39::-;;;;;;;;;;;;;;;;11890:35;;;;;;;;;;;;;;;;11654:27;;;;;;;;;;;;;;;;12027:34;;;;;;;;;;-1:-1:-1;12027:34:0;;;;-1:-1:-1;;;12027:34:0;;;;;;14621:148;;;;;;;;;;-1:-1:-1;14621:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;14730:18:0;;;14704:7;14730:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14621:148;19011:104;;;;;;;;;;-1:-1:-1;19011:104:0;;;;;:::i;:::-;;:::i;17342:100::-;;;;;;;;;;-1:-1:-1;17342:100:0;;;;;:::i;:::-;;:::i;12219:51::-;;;;;;;;;;;;;;;;11520:38;;;;;;;;;;;;;;;;8960:244;;;;;;;;;;-1:-1:-1;8960:244:0;;;;;:::i;:::-;;:::i;12285:30::-;;;;;;;;;;-1:-1:-1;12285:30:0;;;;-1:-1:-1;;;;;12285:30:0;;;24948:224;;;;;;;;;;-1:-1:-1;24948:224:0;;;;;:::i;:::-;;:::i;19127:293::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;;;;;;;;;19236:6:::1;::::0;-1:-1:-1;;;;;19214:29:0;;::::1;19236:6:::0;::::1;19214:29;;19206:77;;;::::0;-1:-1:-1;;;19206:77:0;;7956:2:1;19206:77:0::1;::::0;::::1;7938:21:1::0;7995:2;7975:18;;;7968:30;8034:34;8014:18;;;8007:62;-1:-1:-1;;;8085:18:1;;;8078:33;8128:19;;19206:77:0::1;7928:225:1::0;19206:77:0::1;19343:6;::::0;19299:52:::1;::::0;-1:-1:-1;;;;;19343:6:0;;::::1;::::0;19299:52;::::1;::::0;::::1;::::0;19343:6:::1;::::0;19299:52:::1;19372:6;:37:::0;;-1:-1:-1;;;;;;19372:37:0::1;-1:-1:-1::0;;;;;19372:37:0;;;::::1;::::0;;;::::1;::::0;;19127:293::o;14781:167::-;14858:4;14875:39;4905:10;14898:7;14907:6;14875:8;:39::i;:::-;-1:-1:-1;14932:4:0;14781:167;;;;;:::o;14964:320::-;15064:4;15080:36;15090:6;15098:9;15109:6;15080:9;:36::i;:::-;15127:121;15136:6;4905:10;15158:89;15196:6;15158:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15158:19:0;;;;;;:11;:19;;;;;;;;4905:10;15158:33;;;;;;;;;;:37;:89::i;:::-;15127:8;:121::i;:::-;-1:-1:-1;15266:4:0;14964:320;;;;;:::o;15306:218::-;4905:10;15394:4;15443:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15443:34:0;;;;;;;;;;15394:4;;15411:83;;15434:7;;15443:50;;15482:10;15443:38;:50::i;16181:123::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16265:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;16265:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16181:123::o;17878:151::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;17960:19:::1;:28:::0;;;17999:22:::1;:20;:22::i;:::-;17878:151:::0;:::o;18337:121::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;18405:5:::1;:14:::0;;;18429:21:::1;:19;:21::i;18466:148::-:0;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;18547:18:::1;:27:::0;;;18585:21:::1;:19;:21::i;8804:148::-:0;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;8911:1:::1;8895:6:::0;;8874:40:::1;::::0;-1:-1:-1;;;;;8895:6:0;;::::1;::::0;8874:40:::1;::::0;8911:1;;8874:40:::1;8942:1;8925:19:::0;;-1:-1:-1;;;;;;8925:19:0::1;::::0;;8804:148::o;16582:115::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;16672:17:::1;:6:::0;16682::::1;16672:17;:::i;:::-;16658:11;:31:::0;-1:-1:-1;16582:115:0:o;16705:281::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;16805:14:::1;::::0;-1:-1:-1;;;;;16792:27:0;;::::1;16805:14:::0;::::1;16792:27;;16784:83;;;::::0;-1:-1:-1;;;16784:83:0;;12239:2:1;16784:83:0::1;::::0;::::1;12221:21:1::0;12278:2;12258:18;;;12251:30;12317:34;12297:18;;;12290:62;-1:-1:-1;;;12368:18:1;;;12361:41;12419:19;;16784:83:0::1;12211:233:1::0;16784:83:0::1;16916:14;::::0;16883:48:::1;::::0;-1:-1:-1;;;;;16916:14:0;;::::1;::::0;16883:48;::::1;::::0;::::1;::::0;16916:14:::1;::::0;16883:48:::1;16952:14;:26:::0;;-1:-1:-1;;;;;;16952:26:0::1;-1:-1:-1::0;;;;;16952:26:0;;;::::1;::::0;;;::::1;::::0;;16705:281::o;16447:123::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;16541:21:::1;:10:::0;16555:6:::1;16541:21;:::i;:::-;16522:16;:40:::0;-1:-1:-1;16447:123:0:o;15536:269::-;15629:4;15646:129;4905:10;15669:7;15678:96;15717:15;15678:96;;;;;;;;;;;;;;;;;4905:10;15678:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15678:34:0;;;;;;;;;;;;:38;:96::i;14433:172::-;14513:4;14529:42;4905:10;14553:9;14564:6;14529:9;:42::i;18198:127::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;18268:7:::1;:16:::0;;;18295:22:::1;:20;:22::i;18041:149::-:0;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;18122:18:::1;:27:::0;;;18160:22:::1;:20;:22::i;17454:130::-:0;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;17554:22:::1;:11:::0;17569:6:::1;17554:22;:::i;:::-;17533:18;:43:::0;-1:-1:-1;17454:130:0:o;18626:146::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;18706:17:::1;:26:::0;;;18743:21:::1;:19;:21::i;16312:123::-:0;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16396:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;16396:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16312:123::o;18786:216::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;18860:14:::1;:29:::0;;-1:-1:-1;;;;18860:29:0::1;-1:-1:-1::0;;;18860:29:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;18905:14:::0;::::1;;18902:89;;;18955:20;:15;18973:2;18955:20;:::i;:::-;18935:17;:40:::0;18786:216;:::o;16994:339::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;17105:20:::1;17128:27;:12:::0;17145:9;17128:16:::1;:27::i;:::-;17105:50;;17174:12;17190:4;17174:20;17166:67;;;::::0;-1:-1:-1;;;17166:67:0;;13061:2:1;17166:67:0::1;::::0;::::1;13043:21:1::0;13100:2;13080:18;;;13073:30;13139:34;13119:18;;;13112:62;-1:-1:-1;;;13190:18:1;;;13183:32;13232:19;;17166:67:0::1;13033:224:1::0;17166:67:0::1;-1:-1:-1::0;17254:18:0::1;:33:::0;;;;17298:15:::1;:27:::0;16994:339::o;19011:104::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;19084:14:::1;:23:::0;;-1:-1:-1;;19084:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19011:104::o;17342:100::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;17411:11:::1;:23:::0;;;::::1;;;;-1:-1:-1::0;;17411:23:0;;::::1;::::0;;;::::1;::::0;;17342:100::o;8960:244::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9049:22:0;::::1;9041:73;;;::::0;-1:-1:-1;;;9041:73:0;;7193:2:1;9041:73:0::1;::::0;::::1;7175:21:1::0;7232:2;7212:18;;;7205:30;7271:34;7251:18;;;7244:62;-1:-1:-1;;;7322:18:1;;;7315:36;7368:19;;9041:73:0::1;7165:228:1::0;9041:73:0::1;9151:6;::::0;;9130:38:::1;::::0;-1:-1:-1;;;;;9130:38:0;;::::1;::::0;9151:6;::::1;::::0;9130:38:::1;::::0;::::1;9179:6;:17:::0;;-1:-1:-1;;;;;;9179:17:0::1;-1:-1:-1::0;;;;;9179:17:0;;;::::1;::::0;;;::::1;::::0;;8960:244::o;24948:224::-;8713:6;;-1:-1:-1;;;;;8713:6:0;4905:10;8713:22;8705:67;;;;-1:-1:-1;;;8705:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25050:23:0;::::1;25042:85;;;::::0;-1:-1:-1;;;25042:85:0;;6775:2:1;25042:85:0::1;::::0;::::1;6757:21:1::0;6814:2;6794:18;;;6787:30;6853:34;6833:18;;;6826:62;-1:-1:-1;;;6904:18:1;;;6897:47;6961:19;;25042:85:0::1;6747:239:1::0;25042:85:0::1;25138:26;::::0;-1:-1:-1;;;;;25138:18:0;::::1;::::0;:26;::::1;;;::::0;25157:6;;25138:26:::1;::::0;;;25157:6;25138:18;:26;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24948:224:::0;;:::o;2375:179::-;2433:7;;2465:5;2469:1;2465;:5;:::i;:::-;2453:17;;2494:1;2489;:6;;2481:46;;;;-1:-1:-1;;;2481:46:0;;7600:2:1;2481:46:0;;;7582:21:1;7639:2;7619:18;;;7612:30;7678:29;7658:18;;;7651:57;7725:18;;2481:46:0;7572:177:1;2481:46:0;2545:1;2375:179;-1:-1:-1;;;2375:179:0:o;15817:352::-;-1:-1:-1;;;;;15911:19:0;;15903:75;;;;-1:-1:-1;;;15903:75:0;;5957:2:1;15903:75:0;;;5939:21:1;5996:2;5976:18;;;5969:30;6035:34;6015:18;;;6008:62;-1:-1:-1;;;6086:18:1;;;6079:41;6137:19;;15903:75:0;5929:233:1;15903:75:0;-1:-1:-1;;;;;15997:21:0;;15989:75;;;;-1:-1:-1;;;15989:75:0;;12651:2:1;15989:75:0;;;12633:21:1;12690:2;12670:18;;;12663:30;12729:34;12709:18;;;12702:62;-1:-1:-1;;;12780:18:1;;;12773:39;12829:19;;15989:75:0;12623:231:1;15989:75:0;-1:-1:-1;;;;;16077:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16129:32;;13818:25:1;;;16129:32:0;;13791:18:1;16129:32:0;;;;;;;15817:352;;;:::o;19790:2355::-;-1:-1:-1;;;;;19887:20:0;;19879:70;;;;-1:-1:-1;;;19879:70:0;;6369:2:1;19879:70:0;;;6351:21:1;6408:2;6388:18;;;6381:30;6447:34;6427:18;;;6420:62;-1:-1:-1;;;6498:18:1;;;6491:35;6543:19;;19879:70:0;6341:227:1;19879:70:0;-1:-1:-1;;;;;19968:23:0;;19960:71;;;;-1:-1:-1;;;19960:71:0;;8719:2:1;19960:71:0;;;8701:21:1;8758:2;8738:18;;;8731:30;8797:34;8777:18;;;8770:62;-1:-1:-1;;;8848:18:1;;;8841:33;8891:19;;19960:71:0;8691:225:1;19960:71:0;20068:11;;-1:-1:-1;;;;;20050:30:0;;;20068:11;;20050:30;;20042:80;;;;-1:-1:-1;;;20042:80:0;;11419:2:1;20042:80:0;;;11401:21:1;11458:2;11438:18;;;11431:30;11497:34;11477:18;;;11470:62;-1:-1:-1;;;11548:18:1;;;11541:35;11593:19;;20042:80:0;11391:227:1;20042:80:0;20150:1;20141:6;:10;20133:64;;;;-1:-1:-1;;;20133:64:0;;11009:2:1;20133:64:0;;;10991:21:1;11048:2;11028:18;;;11021:30;11087:34;11067:18;;;11060:62;-1:-1:-1;;;11138:18:1;;;11131:39;11187:19;;20133:64:0;10981:231:1;20133:64:0;-1:-1:-1;;;;;20219:22:0;;;;;;:14;:22;;;;;;;;20218:23;:53;;;;-1:-1:-1;;;;;;20246:25:0;;;;;;:14;:25;;;;;;;;20245:26;20218:53;20210:85;;;;-1:-1:-1;;;20210:85:0;;9478:2:1;20210:85:0;;;9460:21:1;9517:2;9497:18;;;9490:30;-1:-1:-1;;;9536:18:1;;;9529:49;9595:18;;20210:85:0;9450:169:1;20210:85:0;20352:6;;-1:-1:-1;;;;;20334:25:0;;;20352:6;;20334:25;;;;:132;;-1:-1:-1;;;;;;20441:25:0;;;;;;:14;:25;;;;;;;;20440:26;20334:132;:203;;;;-1:-1:-1;;;;;;20515:22:0;;;;;;:14;:22;;;;;;;;20514:23;20334:203;20316:360;;;20583:11;;20573:6;:21;;20565:85;;;;-1:-1:-1;;;20565:85:0;;9826:2:1;20565:85:0;;;9808:21:1;9865:2;9845:18;;;9838:30;9904:34;9884:18;;;9877:62;-1:-1:-1;;;9955:18:1;;;9948:49;10014:19;;20565:85:0;9798:241:1;20565:85:0;20720:1;20701:16;;:20;:50;;;;-1:-1:-1;;;;;;20726:25:0;;;;;;:14;:25;;;;;;;;20725:26;20701:50;:77;;;;-1:-1:-1;;;;;;20756:22:0;;;;;;:14;:22;;;;;;;;20755:23;20701:77;:107;;;;-1:-1:-1;20803:4:0;;-1:-1:-1;;;;;20782:26:0;;;20803:4;;20782:26;;20701:107;20696:319;;;-1:-1:-1;;;;;14384:18:0;;20830:24;14384:18;;;:9;:18;;;;;;20933:16;;20904:25;20923:6;14384:18;20904:25;:::i;:::-;:45;;20896:103;;;;-1:-1:-1;;;20896:103:0;;11825:2:1;20896:103:0;;;11807:21:1;11864:2;11844:18;;;11837:30;11903:34;11883:18;;;11876:62;-1:-1:-1;;;11954:18:1;;;11947:43;12007:19;;20896:103:0;11797:235:1;20896:103:0;20811:204;20696:319;21105:53;;;;;;;;;;;-1:-1:-1;;;21105:53:0;;;;;;;;-1:-1:-1;;;;;21105:17:0;;-1:-1:-1;21105:17:0;;;:9;:17;;;;;;;;:53;;21127:6;;21105:21;:53::i;:::-;-1:-1:-1;;;;;21085:17:0;;;;;;:9;:17;;;;;;;;:73;;;;21281:14;;21401;:22;;;;;;;21281:14;;;;;21401:22;;:51;;-1:-1:-1;;;;;;21427:25:0;;;;;;:14;:25;;;;;;;;21401:51;21398:103;;;-1:-1:-1;21483:5:0;21398:103;21563:4;;-1:-1:-1;;;;;21553:14:0;;;21563:4;;21553:14;;;;:35;;-1:-1:-1;21584:4:0;;-1:-1:-1;;;;;21571:17:0;;;21584:4;;21571:17;;21553:35;21550:84;;;-1:-1:-1;21617:5:0;21550:84;21679:4;;21646:17;;-1:-1:-1;;;;;21666:17:0;;;21679:4;;21666:17;:54;;21705:15;;21666:54;;;21686:16;;21666:54;21773:14;;21646:74;;-1:-1:-1;;;;21773:14:0;;;;:54;;;;;21810:17;;21791:15;:36;;21773:54;:79;;21843:9;21773:79;;;21830:10;;21773:79;21761:91;;21865:31;21886:9;21865:20;:31::i;:::-;21918:22;21943:10;:56;;21993:6;21943:56;;;21956:34;21964:6;21972;21980:9;21956:7;:34::i;:::-;-1:-1:-1;;;;;22033:20:0;;;;;;:9;:20;;;;;;21918:81;;-1:-1:-1;22033:40:0;;21918:81;22033:24;:40::i;:::-;-1:-1:-1;;;;;22010:20:0;;;;;;;:9;:20;;;;;;;:63;;;;22091:43;;;;;;;;;;22119:14;13818:25:1;;13806:2;13791:18;;13773:76;22091:43:0;;;;;;;;19868:2277;;;19790:2355;;;:::o;3280:200::-;3400:7;3436:12;3428:6;;;;3420:29;;;;-1:-1:-1;;;3420:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3467:5:0;3471:1;3467;:5;:::i;:::-;3460:12;3280:200;-1:-1:-1;;;;3280:200:0:o;17732:134::-;17802:56;17850:7;;17802:43;17826:18;;17802:19;;:23;;:43;;;;:::i;:::-;:47;;:56::i;:::-;17783:16;:75;17732:134::o;17592:128::-;17660:52;17706:5;;17660:41;17683:17;;17660:18;;:22;;:41;;;;:::i;:52::-;17642:15;:70;17592:128::o;22154:459::-;22285:4;22236:28;14384:18;;;:9;:18;;;;;;22359;;22407:8;;22335:42;;;;;22407:8;;22406:9;:20;;;;;22419:7;22406:20;:35;;;;-1:-1:-1;22430:11:0;;;;;;;22406:35;:56;;;;-1:-1:-1;22458:4:0;;-1:-1:-1;;;;;22445:17:0;;;22458:4;;22445:17;22406:56;22402:196;;;22479:8;:15;;-1:-1:-1;;22479:15:0;22490:4;22479:15;;;22527:10;:8;:10::i;:::-;22570:8;:16;;-1:-1:-1;;22570:16:0;;;22211:402;;22154:459;:::o;19428:340::-;19508:7;;19549:33;11403:5;19549:15;:6;19560:3;19549:10;:15::i;:::-;:19;;:33::i;:::-;19640:4;19622:24;;;;:9;:24;;;;;;19529:53;;-1:-1:-1;19622:39:0;;19529:53;19622:28;:39::i;:::-;19613:4;19595:24;;;;:9;:24;;;;;;;:66;;;;19677:42;;-1:-1:-1;;;;;19677:42:0;;;;;;;19709:9;13818:25:1;;13806:2;13791:18;;13773:76;19677:42:0;;;;;;;;19739:21;:6;19750:9;19739:10;:21::i;:::-;19732:28;19428:340;-1:-1:-1;;;;;19428:340:0:o;22623:862::-;22694:15;;22662:29;;22694:22;;22714:1;22694:19;:22::i;:::-;22662:54;;22727:23;22753:69;11403:5;22753:51;22782:21;22753:24;22771:4;-1:-1:-1;;;;;14384:18:0;14356:7;14384:18;;;:9;:18;;;;;;;14290:121;22753:24;:28;;:51::i;:69::-;22727:95;;22833:20;22856:45;22885:15;22856:24;22874:4;-1:-1:-1;;;;;14384:18:0;14356:7;14384:18;;;:9;:18;;;;;;;14290:121;22856:24;:28;;:45::i;:::-;22833:68;-1:-1:-1;22938:21:0;22980:30;22833:68;22980:16;:30::i;:::-;23023:17;23043:40;:21;23069:13;23043:25;:40::i;:::-;23023:60;;23104:20;23127:51;11403:5;23127:33;23141:18;;23127:9;:13;;:33;;;;:::i;:51::-;23104:74;-1:-1:-1;23189:26:0;23218:54;11403:5;23218:36;:9;23232:21;23218:13;:36::i;:54::-;23350:14;;23189:83;;-1:-1:-1;23324:56:0;;-1:-1:-1;;;;;23350:14:0;23367:12;23324:17;:56::i;:::-;23427:50;23441:15;23458:18;23427:13;:50::i;:::-;22651:834;;;;;;;22623:862::o;2730:220::-;2788:7;2812:6;2808:20;;-1:-1:-1;2827:1:0;2820:8;;2808:20;2839:9;2851:5;2855:1;2851;:5;:::i;:::-;2839:17;-1:-1:-1;2884:1:0;2875:5;2879:1;2839:17;2875:5;:::i;:::-;:10;2867:56;;;;-1:-1:-1;;;2867:56:0;;10246:2:1;2867:56:0;;;10228:21:1;10285:2;10265:18;;;10258:30;10324:34;10304:18;;;10297:62;-1:-1:-1;;;10375:18:1;;;10368:31;10416:19;;2867:56:0;10218:223:1;2958:153:0;3016:7;3048:1;3044;:5;3036:44;;;;-1:-1:-1;;;3036:44:0;;9123:2:1;3036:44:0;;;9105:21:1;9162:2;9142:18;;;9135:30;9201:28;9181:18;;;9174:56;9247:18;;3036:44:0;9095:176:1;3036:44:0;3098:5;3102:1;3098;:5;:::i;2562:158::-;2620:7;2653:1;2648;:6;;2640:49;;;;-1:-1:-1;;;2640:49:0;;8360:2:1;2640:49:0;;;8342:21:1;8399:2;8379:18;;;8372:30;8438:32;8418:18;;;8411:60;8488:18;;2640:49:0;8332:180:1;2640:49:0;2707:5;2711:1;2707;:5;:::i;24098:623::-;24248:16;;;24262:1;24248:16;;;;;;;;24224:21;;24248:16;;;;;;;;;;-1:-1:-1;24248:16:0;24224:40;;24293:4;24275;24280:1;24275:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24275:23:0;;;:7;;;;;;;;;;:23;;;;24319:6;;:13;;;-1:-1:-1;;;24319:13:0;;;;:6;;;;;:11;;:13;;;;;24275:7;;24319:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24309:4;24314:1;24309:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24309:23:0;;;:7;;;;;;;;;:23;24377:6;;24345:53;;24362:4;;24377:6;24386:11;24345:8;:53::i;:::-;24437:6;;:215;;-1:-1:-1;;;24437:215:0;;-1:-1:-1;;;;;24437:6:0;;;;:57;;:215;;24509:11;;24437:6;;24579:4;;24606;;24626:15;;24437:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24678:35;24695:11;24708:4;24678:35;;;;;;;:::i;:::-;;;;;;;;24153:568;24098:623;:::o;24729:211::-;-1:-1:-1;;;;;24826:23:0;;24818:77;;;;-1:-1:-1;;;24818:77:0;;13464:2:1;24818:77:0;;;13446:21:1;13503:2;13483:18;;;13476:30;13542:34;13522:18;;;13515:62;-1:-1:-1;;;13593:18:1;;;13586:39;13642:19;;24818:77:0;13436:231:1;23493:587:0;23674:6;;23642:53;;23659:4;;-1:-1:-1;;;;;23674:6:0;23683:11;23642:8;:53::i;:::-;23808:6;;23739:23;;;;;;-1:-1:-1;;;;;23808:6:0;:22;23838:9;23871:4;23891:11;23739:23;;23949:7;8617;8644:6;-1:-1:-1;;;;;8644:6:0;;8579:79;23949:7;23808:189;;;;;;-1:-1:-1;;;;;;23808:189:0;;;-1:-1:-1;;;;;4476:15:1;;;23808:189:0;;;4458:34:1;4508:18;;;4501:34;;;;4551:18;;;4544:34;;;;4594:18;;;4587:34;4658:15;;;4637:19;;;4630:44;23971:15:0;4690:19:1;;;4683:35;4392:19;;23808:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24015:57;;;14980:25:1;;;15036:2;15021:18;;15014:34;;;15064:18;;;15057:34;;;23738:259:0;;-1:-1:-1;23738:259:0;;-1:-1:-1;23738:259:0;-1:-1:-1;24015:57:0;;14968:2:1;14953:18;24015:57:0;;;;;;;23564:516;;;23493:587;;:::o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;602:9;596:16;621:31;646:5;621:31;:::i;687:323::-;763:6;771;824:2;812:9;803:7;799:23;795:32;792:2;;;840:1;837;830:12;792:2;879:9;866:23;898:31;923:5;898:31;:::i;:::-;948:5;1000:2;985:18;;;;972:32;;-1:-1:-1;;;782:228:1:o;1015:388::-;1083:6;1091;1144:2;1132:9;1123:7;1119:23;1115:32;1112:2;;;1160:1;1157;1150:12;1112:2;1199:9;1186:23;1218:31;1243:5;1218:31;:::i;:::-;1268:5;-1:-1:-1;1325:2:1;1310:18;;1297:32;1338:33;1297:32;1338:33;:::i;:::-;1390:7;1380:17;;;1102:301;;;;;:::o;1408:456::-;1485:6;1493;1501;1554:2;1542:9;1533:7;1529:23;1525:32;1522:2;;;1570:1;1567;1560:12;1522:2;1609:9;1596:23;1628:31;1653:5;1628:31;:::i;:::-;1678:5;-1:-1:-1;1735:2:1;1720:18;;1707:32;1748:33;1707:32;1748:33;:::i;:::-;1512:352;;1800:7;;-1:-1:-1;;;1854:2:1;1839:18;;;;1826:32;;1512:352::o;1869:315::-;1934:6;1942;1995:2;1983:9;1974:7;1970:23;1966:32;1963:2;;;2011:1;2008;2001:12;1963:2;2050:9;2037:23;2069:31;2094:5;2069:31;:::i;:::-;2119:5;-1:-1:-1;2143:35:1;2174:2;2159:18;;2143:35;:::i;:::-;2133:45;;1953:231;;;;;:::o;2509:180::-;2565:6;2618:2;2606:9;2597:7;2593:23;2589:32;2586:2;;;2634:1;2631;2624:12;2586:2;2657:26;2673:9;2657:26;:::i;2694:180::-;2753:6;2806:2;2794:9;2785:7;2781:23;2777:32;2774:2;;;2822:1;2819;2812:12;2774:2;-1:-1:-1;2845:23:1;;2764:110;-1:-1:-1;2764:110:1:o;2879:248::-;2947:6;2955;3008:2;2996:9;2987:7;2983:23;2979:32;2976:2;;;3024:1;3021;3014:12;2976:2;-1:-1:-1;;3047:23:1;;;3117:2;3102:18;;;3089:32;;-1:-1:-1;2966:161:1:o;3132:306::-;3220:6;3228;3236;3289:2;3277:9;3268:7;3264:23;3260:32;3257:2;;;3305:1;3302;3295:12;3257:2;3334:9;3328:16;3318:26;;3384:2;3373:9;3369:18;3363:25;3353:35;;3428:2;3417:9;3413:18;3407:25;3397:35;;3247:191;;;;;:::o;3443:461::-;3496:3;3534:5;3528:12;3561:6;3556:3;3549:19;3587:4;3616:2;3611:3;3607:12;3600:19;;3653:2;3646:5;3642:14;3674:1;3684:195;3698:6;3695:1;3692:13;3684:195;;;3763:13;;-1:-1:-1;;;;;3759:39:1;3747:52;;3819:12;;;;3854:15;;;;3795:1;3713:9;3684:195;;;-1:-1:-1;3895:3:1;;3504:400;-1:-1:-1;;;;;3504:400:1:o;5153:597::-;5265:4;5294:2;5323;5312:9;5305:21;5355:6;5349:13;5398:6;5393:2;5382:9;5378:18;5371:34;5423:1;5433:140;5447:6;5444:1;5441:13;5433:140;;;5542:14;;;5538:23;;5532:30;5508:17;;;5527:2;5504:26;5497:66;5462:10;;5433:140;;;5591:6;5588:1;5585:13;5582:2;;;5661:1;5656:2;5647:6;5636:9;5632:22;5628:31;5621:42;5582:2;-1:-1:-1;5734:2:1;5713:15;-1:-1:-1;;5709:29:1;5694:45;;;;5741:2;5690:54;;5274:476;-1:-1:-1;;;5274:476:1:o;10446:356::-;10648:2;10630:21;;;10667:18;;;10660:30;10726:34;10721:2;10706:18;;10699:62;10793:2;10778:18;;10620:182::o;13854:332::-;14061:6;14050:9;14043:25;14104:2;14099;14088:9;14084:18;14077:30;14024:4;14124:56;14176:2;14165:9;14161:18;14153:6;14124:56;:::i;14191:582::-;14490:6;14479:9;14472:25;14533:6;14528:2;14517:9;14513:18;14506:34;14576:3;14571:2;14560:9;14556:18;14549:31;14453:4;14597:57;14649:3;14638:9;14634:19;14626:6;14597:57;:::i;:::-;-1:-1:-1;;;;;14690:32:1;;;;14685:2;14670:18;;14663:60;-1:-1:-1;14754:3:1;14739:19;14732:35;14589:65;14462:311;-1:-1:-1;;;14462:311:1:o;15291:128::-;15331:3;15362:1;15358:6;15355:1;15352:13;15349:2;;;15368:18;;:::i;:::-;-1:-1:-1;15404:9:1;;15339:80::o;15424:217::-;15464:1;15490;15480:2;;15534:10;15529:3;15525:20;15522:1;15515:31;15569:4;15566:1;15559:15;15597:4;15594:1;15587:15;15480:2;-1:-1:-1;15626:9:1;;15470:171::o;15646:168::-;15686:7;15752:1;15748;15744:6;15740:14;15737:1;15734:21;15729:1;15722:9;15715:17;15711:45;15708:2;;;15759:18;;:::i;:::-;-1:-1:-1;15799:9:1;;15698:116::o;15819:125::-;15859:4;15887:1;15884;15881:8;15878:2;;;15892:18;;:::i;:::-;-1:-1:-1;15929:9:1;;15868:76::o;15949:127::-;16010:10;16005:3;16001:20;15998:1;15991:31;16041:4;16038:1;16031:15;16065:4;16062:1;16055:15;16081:127;16142:10;16137:3;16133:20;16130:1;16123:31;16173:4;16170:1;16163:15;16197:4;16194:1;16187:15;16345:131;-1:-1:-1;;;;;16420:31:1;;16410:42;;16400:2;;16466:1;16463;16456:12

Swarm Source

ipfs://deff458abd8c0150029b391b098673d5e4bcbfbcab9a1f0cf358e6306699b7b6
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.