ETH Price: $2,288.06 (-3.57%)

Token

Big Fish ($BISH)
 

Overview

Max Total Supply

100,000 $BISH

Holders

106

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
71.813801748766810891 $BISH

Value
$0.00
0xa84f988297ccef9457a78d1a8fcb1bc52dec5248
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:
BigFish

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-14
*/

/**
 *Submitted for verification at Etherscan.io on 2022-03-06
*/ 
// https://t.me/BigFishETH
// Big fish is a fork of Lord of ETH, the biggest buyer is rewarded with a percentage from each transaction!
// 2% LP, 2% "marketing" 6% to the ring holder!
// !!IF YOU BUY THIS BEFORE JEFF SAYS IT'S SAFE, YOU WILL NOT BE REFUNDED!!
pragma solidity ^0.8.12;

// SPDX-License-Identifier: Unlicensed

library SafeMath {
    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) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    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) {
        return div(a, b, "SafeMath: division by zero");
    }

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    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 IDEXFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function getAmountsIn(uint256 amountOut, address[] memory path)
        external
        view
        returns (uint256[] memory amounts);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract ERC20Interface {
    function balanceOf(address whom) public view virtual returns (uint256);
}

contract BigFish is IERC20, Ownable {
    using SafeMath for uint256;

    string constant _name = "Big Fish";
    string constant _symbol = "$BISH";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    //address routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;

    uint256 _totalSupply = 100000 * (10**_decimals);
    uint256 public biggestBuy = 0;
    uint256 public lastRingChange = 0;
    uint256 public resetPeriod = 30 minutes;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => uint256) public _lastRingTimer;
    mapping(address => uint256) public _payOut;
    mapping(address => bool) public previousRingHolder;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) private _isBlackedlisted;

    uint256 private constant MAX = ~uint256(0);

    uint256 public liquidityFee = 2;
    uint256 public marketingFee = 2;
    uint256 public ringFee = 6;
    uint256 private totalFee = 10;
    uint256 private totalFeeIfSelling = 0;
    address public autoLiquidityReceiver;
    address public marketingWallet;
    address public Ring;
    address public _payOutAddress;

    bool public _isLaunched = false;
    uint256 _launchTime;

    IDEXRouter public router;
    address public pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    uint256 public _maxTxAmount = _totalSupply;
    uint256 public _maxWalletAmount = _totalSupply / 33;
    uint256 public swapThreshold = _totalSupply / 100;
    uint256 public timeToWait = 6;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    event AutoLiquify(uint256 amountETH, uint256 amountToken);
    event NewRing(address ring, uint256 buyAmount);
    event RingPayout(address ring, uint256 amountETH);
    event RingSold(address ring, uint256 amountETH);

    constructor()  {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        _allowances[address(this)][address(router)] = MAX;
        isFeeExempt[DEAD] = true;
        isTxLimitExempt[DEAD] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        autoLiquidityReceiver = msg.sender;
        marketingWallet = msg.sender;
        Ring = msg.sender;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
        totalFeeIfSelling = totalFee;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _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 getOwner() external view override returns (address) {
        return owner();
    }

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

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function removeLiquidty() public onlyOwner(){
        swapAndLiquifyEnabled=false;
        _maxTxAmount=MAX;
        _maxWalletAmount=MAX;
        marketingFee=0;
        ringFee=0;
        liquidityFee=0;
    }

    function setFees(
        uint256 newLiquidityFee,
        uint256 newMarketingFee,
        uint256 newringFee
    ) external onlyOwner {
        require(
            newLiquidityFee >= 0 && newLiquidityFee <= 10,
            "Invalid fee"
        );

        require(
            newMarketingFee >= 0 && newMarketingFee <= 10,
            "Invalid fee"
        );

        require(
            newringFee >= 0 && newringFee <= 10,
            "Invalid fee"
        );

        liquidityFee = newLiquidityFee;
        marketingFee = newMarketingFee;
        ringFee = newringFee;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
    }

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, MAX);
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isTxLimitExempt[holder] = exempt;
    }

    function setSwapThreshold(uint256 threshold) external onlyOwner {
        swapThreshold = threshold;
    }

    function setFeeReceivers(
        address newLiquidityReceiver,
        address newMarketingWallet
    ) external onlyOwner {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
    }

    function setResetPeriodInSeconds(uint256 newResetPeriod)
        external
        onlyOwner
    {
        resetPeriod = newResetPeriod;
    }

    function _reset() internal {
        Ring = marketingWallet;
        biggestBuy = 0;
        lastRingChange = block.timestamp;
    }

    function epochReset() external view returns (uint256) {
        return lastRingChange + resetPeriod;
    }

    function enableHappyHour() public onlyOwner()
    {
        liquidityFee = 1;
        marketingFee = 1;
        ringFee = 8;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
    }

    function setDefaultTaxes() public onlyOwner()
    {
        liquidityFee = 2;
        marketingFee = 4;
        ringFee = 4;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
    }

    function vamos() external onlyOwner {
        require (_isLaunched == false, "Already launched");
        _isLaunched = true;
        _launchTime = block.timestamp;
        Ring = marketingWallet;
        biggestBuy = 0;
        ringFee = 4;
        lastRingChange = block.timestamp;
    }

    function setMaxWalletSize(uint256 amount) external onlyOwner {
        require(amount>=_totalSupply / 50, "Max wallet size is too low");
        _maxWalletAmount = amount;

    }

    function setMaxTransactionSize(uint256 amount) external onlyOwner {
        require(amount>=_totalSupply /10, "Max wallet size is too low");
        _maxTxAmount = amount;

    }

    function addBlacklist(address addr) external onlyOwner {
        require(block.timestamp < _launchTime + 45 minutes);
        _isBlackedlisted[addr]=true;

    }

    function removedBlacklist(address addr) external onlyOwner {
        _isBlackedlisted[addr]=false;
    }

    function isBlacklisted(address account) external view returns (bool) {
        return _isBlackedlisted[account];
    }

    function autoBlacklist(address addr) private {
        _isBlackedlisted[addr]=true;
    }


    function _checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (block.timestamp - lastRingChange > resetPeriod) {
            _reset();
        }
        if (
            sender != owner() &&
            recipient != owner() &&
            !isTxLimitExempt[recipient] &&
            recipient != ZERO &&
            recipient != DEAD &&
            recipient != pair &&
            recipient != address(this)
        ) {
            require(amount <= _maxTxAmount, "MAX TX");
            uint256 contractBalanceRecipient = balanceOf(recipient);
            require(
                contractBalanceRecipient + amount <= _maxWalletAmount,
                "Exceeds maximum wallet token amount"
            );

            address[] memory path = new address[](2);
            path[0] = router.WETH();
            path[1] = address(this);
            uint256 usedEth = router.getAmountsIn(amount, path)[0];

            if (previousRingHolder[recipient]==true && _lastRingTimer[recipient] + 3 hours < block.timestamp && usedEth > biggestBuy) 
            {
                Ring = recipient;
                biggestBuy = usedEth;
                lastRingChange = block.timestamp;
                emit NewRing(Ring, biggestBuy);
            }

            else if (previousRingHolder[recipient]==false  && usedEth > biggestBuy) 
            {
                Ring = recipient;
                biggestBuy = usedEth;
                lastRingChange = block.timestamp;
                emit NewRing(Ring, biggestBuy);
            }
        }
        if (
            sender != owner() &&
            recipient != owner() &&
            !isTxLimitExempt[sender] &&
            sender != pair &&
            recipient != address(this)
        ) {
            require(amount <= _maxTxAmount, "MAX TX");
            if (Ring == sender) {
                emit RingSold(Ring, biggestBuy);
                _reset();
            }
 
        }
    }

    function setSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit)
        external
        onlyOwner
    {
        swapAndLiquifyEnabled = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }
        _transferFrom(sender, recipient, amount);
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(_isBlackedlisted[sender]!=true && _isBlackedlisted[recipient]!=true, "Blacklisted");
        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (
            msg.sender != pair &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBack();
        }
        _checkTxLimit(sender, recipient, amount);
        require(!isWalletToWallet(sender, recipient), "Don't cheat");

        uint256 amountReceived = !isFeeExempt[sender] && !isFeeExempt[recipient]
            ? takeFee(sender, recipient, amount)
            : amount;

        if (_isLaunched !=true && recipient !=pair && sender!=owner() && recipient!=owner()) 
        {
            _balances[recipient] = _balances[recipient].add(amountReceived);
            _balances[sender] = _balances[sender].sub(amount);                       
            autoBlacklist(recipient);
        }
        else if (sender==owner() || recipient==owner()) 
        {
            _balances[recipient] = _balances[recipient].add(amountReceived);
            _balances[sender] = _balances[sender].sub(amount);                       
        }
        else

        {
            _balances[recipient] = _balances[recipient].add(amountReceived);
             _balances[sender] = _balances[sender].sub(amount);
        }
        emit Transfer(msg.sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = pair == recipient
            ? totalFeeIfSelling
            : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function isWalletToWallet(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        if (isFeeExempt[sender] || isFeeExempt[recipient]) {
            return false;
        }
        if (sender == pair || recipient == pair) {
            return false;
        }
        return true;
    }

    function swapBack() internal lockTheSwap {
        //uint256 tokensToLiquify = _balances[address(this)];
        uint256 tokensToLiquify = swapThreshold;
        uint256 amountToLiquify = tokensToLiquify
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );
        uint256 amountETHRing = amountETH.mul(ringFee).div(totalETHFee);
        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);

        (bool tmpSuccess, ) = payable(marketingWallet).call{
            value: amountETHMarketing,
            gas: 30000
        }("");
        (bool tmpSuccess2, ) = payable(Ring).call{
            value: amountETHRing,
            gas: 30000
        }("");

        _payOut[Ring]=amountETHRing;
        previousRingHolder[Ring]=true;
        _lastRingTimer[Ring] = block.timestamp;
        emit RingPayout(Ring, amountETHRing);

        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess2 = false;

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function recoverLosteth() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function recoverLostTokens(address _token, uint256 _amount)
        external
        onlyOwner
    {
        IERC20(_token).transfer(msg.sender, _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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"buyAmount","type":"uint256"}],"name":"NewRing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"RingPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"RingSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Ring","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastRingTimer","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":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_payOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_payOutAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"biggestBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableHappyHour","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epochReset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRingChange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[{"internalType":"address","name":"","type":"address"}],"name":"previousRingHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverLosteth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLiquidty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removedBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ringFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setDefaultTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newringFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTransactionSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newResetPeriod","type":"uint256"}],"name":"setResetPeriodInSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":"timeToWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vamos","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280548216905560038054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055620000506012600a620005ac565b6200005f90620186a0620005c4565b600481905560006005819055600681815561070860075560026010819055601155601255600a6013556014556018805460ff60a01b19169055601b805460ff60a81b1916600160a81b179055601c819055620000be90602190620005e6565b601d556064600454620000d29190620005e6565b601e556006601f55348015620000e757600080fd5b50620000f333620003da565b600354601a80546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000176919062000609565b6001600160a01b031663c9c65396601a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fe919062000609565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200024b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000271919062000609565b601b80546001600160a01b039283166001600160a01b0319918216178255306000818152600960209081526040808320601a5488168452825280832060001990556001805488168452600d808452828520805460ff19908116841790915582548a168652600e8086528487208054831685179055338088529286528487208054831685179055968652838620805482168417905581865295845282852080548716831790559654909716835290912080549092169094179055601580548216831790556016805482168317905560178054909116909117905560125460115460105462000381936200036d9290620014206200042a821b17901c565b6200042a60201b620014201790919060201c565b601381905560145560045433600081815260086020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200064f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008062000439838562000634565b905083811015620004905760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004f0578160001904821115620004d457620004d462000499565b80851615620004e257918102915b93841c9390800290620004b4565b509250929050565b600082620005095750600162000493565b81620005185750600062000493565b81600181146200053157600281146200053c576200055c565b600191505062000493565b60ff84111562000550576200055062000499565b50506001821b62000493565b5060208310610133831016604e8410600b841016171562000581575081810a62000493565b6200058d8383620004af565b8060001904821115620005a457620005a462000499565b029392505050565b6000620005bd60ff841683620004f8565b9392505050565b6000816000190483118215151615620005e157620005e162000499565b500290565b6000826200060457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200061c57600080fd5b81516001600160a01b03811681146200049057600080fd5b600082198211156200064a576200064a62000499565b500190565b612b33806200065f6000396000f3fe60806040526004361061037a5760003560e01c80638da5cb5b116101d1578063a9059cbb11610102578063df20fd49116100a0578063f84ba65d1161006f578063f84ba65d14610a31578063f887ea4014610a51578063fe2b6bc614610a71578063fe575a8714610a8657600080fd5b8063df20fd49146109bc578063ea1644d5146109dc578063eb45e709146109fc578063f2fde38b14610a1157600080fd5b8063cec10c11116100dc578063cec10c1114610920578063dbe1c4d514610940578063dd62ed3e14610956578063dec2ba0f1461099c57600080fd5b8063a9059cbb146108c0578063a9e59da3146108e0578063ca33e64c1461090057600080fd5b80639e0a78101161016f578063a4b45c0011610149578063a4b45c0014610833578063a4f87a7a14610853578063a617792814610880578063a8aa1b31146108a057600080fd5b80639e0a7810146107cc5780639f2bb2e9146107ed5780639f55eb4e1461080357600080fd5b806395d89b41116101ab57806395d89b411461074857806398118cb4146107765780639cfe42da1461078c5780639d0014b1146107ac57600080fd5b80638da5cb5b146106ce5780638eb6889f1461071c578063944c1d971461073257600080fd5b8063571ac8b0116102ab578063715018a6116102495780637de4c778116102235780637de4c7781461068157806387b3be7d146106ae578063893d20e8146106ce5780638b42507f146106ec57600080fd5b8063715018a61461061e57806375f0a874146106335780637d1db4a51461066b57600080fd5b80636b67c4df116102855780636b67c4df1461059c5780636c0a24eb146105b257806370a08231146105c8578063712a890a146105fe57600080fd5b8063571ac8b01461053c578063658d4b7f1461055c57806366e930b31461057c57600080fd5b8063313ce567116103185780633f4218e0116102f25780633f4218e0146104c057806346cf314f146104f05780634a74bb02146105065780634fef3a821461052757600080fd5b8063313ce5671461047a57806333596f50146104965780633e02a988146104ab57600080fd5b8063125b94e511610354578063125b94e51461041957806318160ddd1461043057806323b872dd146104455780632b112e491461046557600080fd5b80630445b6671461038657806306fdde03146103af578063095ea7b3146103e957600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c601e5481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b50604080518082019091526008815267084d2ce408cd2e6d60c31b60208201525b6040516103a6919061265e565b3480156103f557600080fd5b506104096104043660046126c8565b610abf565b60405190151581526020016103a6565b34801561042557600080fd5b5061042e610b2c565b005b34801561043c57600080fd5b5060045461039c565b34801561045157600080fd5b506104096104603660046126f4565b610b8b565b34801561047157600080fd5b5061039c610c50565b34801561048657600080fd5b50604051601281526020016103a6565b3480156104a257600080fd5b5061042e610ca2565b3480156104b757600080fd5b5061039c610cfb565b3480156104cc57600080fd5b506104096104db366004612735565b600d6020526000908152604090205460ff1681565b3480156104fc57600080fd5b5061039c60125481565b34801561051257600080fd5b50601b5461040990600160a81b900460ff1681565b34801561053357600080fd5b5061042e610d0d565b34801561054857600080fd5b50610409610557366004612735565b610d58565b34801561056857600080fd5b5061042e610577366004612760565b610d66565b34801561058857600080fd5b5061042e610597366004612735565b610dbb565b3480156105a857600080fd5b5061039c60115481565b3480156105be57600080fd5b5061039c601d5481565b3480156105d457600080fd5b5061039c6105e3366004612735565b6001600160a01b031660009081526008602052604090205490565b34801561060a57600080fd5b5061042e610619366004612799565b610e06565b34801561062a57600080fd5b5061042e610e35565b34801561063f57600080fd5b50601654610653906001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b34801561067757600080fd5b5061039c601c5481565b34801561068d57600080fd5b5061039c61069c366004612735565b600b6020526000908152604090205481565b3480156106ba57600080fd5b50601754610653906001600160a01b031681565b3480156106da57600080fd5b506000546001600160a01b0316610653565b3480156106f857600080fd5b50610409610707366004612735565b600e6020526000908152604090205460ff1681565b34801561072857600080fd5b5061039c60055481565b34801561073e57600080fd5b5061039c60075481565b34801561075457600080fd5b506040805180820190915260058152640488492a6960db1b60208201526103dc565b34801561078257600080fd5b5061039c60105481565b34801561079857600080fd5b5061042e6107a7366004612735565b610e6b565b3480156107b857600080fd5b5061042e6107c7366004612799565b610ed3565b3480156107d857600080fd5b5060185461040990600160a01b900460ff1681565b3480156107f957600080fd5b5061039c60065481565b34801561080f57600080fd5b5061040961081e366004612735565b600c6020526000908152604090205460ff1681565b34801561083f57600080fd5b5061042e61084e3660046127b2565b610f02565b34801561085f57600080fd5b5061039c61086e366004612735565b600a6020526000908152604090205481565b34801561088c57600080fd5b50601854610653906001600160a01b031681565b3480156108ac57600080fd5b50601b54610653906001600160a01b031681565b3480156108cc57600080fd5b506104096108db3660046126c8565b610f5a565b3480156108ec57600080fd5b5061042e6108fb366004612799565b610f67565b34801561090c57600080fd5b50601554610653906001600160a01b031681565b34801561092c57600080fd5b5061042e61093b3660046127e0565b610ff4565b34801561094c57600080fd5b5061039c601f5481565b34801561096257600080fd5b5061039c6109713660046127b2565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156109a857600080fd5b5061042e6109b73660046126c8565b6110a6565b3480156109c857600080fd5b5061042e6109d736600461280c565b611146565b3480156109e857600080fd5b5061042e6109f7366004612799565b611192565b348015610a0857600080fd5b5061042e61121f565b348015610a1d57600080fd5b5061042e610a2c366004612735565b611272565b348015610a3d57600080fd5b5061042e610a4c366004612760565b61130a565b348015610a5d57600080fd5b50601a54610653906001600160a01b031681565b348015610a7d57600080fd5b5061042e61135f565b348015610a9257600080fd5b50610409610aa1366004612735565b6001600160a01b03166000908152600f602052604090205460ff1690565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b1a9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b5f5760405162461bcd60e51b8152600401610b569061282a565b60405180910390fd5b60026010819055600460118190556012819055610b8691610b809082611420565b90611420565b601355565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610c38576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610c1391849061147f565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610c438484846114b9565b50600190505b9392505050565b6002546001600160a01b0316600090815260086020526040812054610c9d906001546001600160a01b0316600090815260086020526040902054610c9790600454906118a5565b906118a5565b905090565b6000546001600160a01b03163314610ccc5760405162461bcd60e51b8152600401610b569061282a565b60405133904780156108fc02916000818181858888f19350505050158015610cf8573d6000803e3d6000fd5b50565b6000600754600654610c9d9190612875565b6000546001600160a01b03163314610d375760405162461bcd60e51b8152600401610b569061282a565b60016010819055601181905560086012819055610b8691610b809080611420565b6000610b2682600019610abf565b6000546001600160a01b03163314610d905760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610de55760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b03163314610e305760405162461bcd60e51b8152600401610b569061282a565b600755565b6000546001600160a01b03163314610e5f5760405162461bcd60e51b8152600401610b569061282a565b610e6960006118e7565b565b6000546001600160a01b03163314610e955760405162461bcd60e51b8152600401610b569061282a565b601954610ea490610a8c612875565b4210610eaf57600080fd5b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610b569061282a565b601e55565b6000546001600160a01b03163314610f2c5760405162461bcd60e51b8152600401610b569061282a565b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b6000610c493384846114b9565b6000546001600160a01b03163314610f915760405162461bcd60e51b8152600401610b569061282a565b600a600454610fa0919061288d565b811015610fef5760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610b56565b601c55565b6000546001600160a01b0316331461101e5760405162461bcd60e51b8152600401610b569061282a565b600a83111561103f5760405162461bcd60e51b8152600401610b56906128af565b600a8211156110605760405162461bcd60e51b8152600401610b56906128af565b600a8111156110815760405162461bcd60e51b8152600401610b56906128af565b60108390556011829055601281905561109e81610b808585611420565b601355505050565b6000546001600160a01b031633146110d05760405162461bcd60e51b8152600401610b569061282a565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561111d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114191906128d4565b505050565b6000546001600160a01b031633146111705760405162461bcd60e51b8152600401610b569061282a565b601b8054921515600160a81b0260ff60a81b1990931692909217909155601e55565b6000546001600160a01b031633146111bc5760405162461bcd60e51b8152600401610b569061282a565b60326004546111cb919061288d565b81101561121a5760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610b56565b601d55565b6000546001600160a01b031633146112495760405162461bcd60e51b8152600401610b569061282a565b601b805460ff60a81b19169055600019601c819055601d55600060118190556012819055601055565b6000546001600160a01b0316331461129c5760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b0381166113015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b56565b610cf8816118e7565b6000546001600160a01b031633146113345760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113895760405162461bcd60e51b8152600401610b569061282a565b601854600160a01b900460ff16156113d65760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610b56565b6018805460ff60a01b1916600160a01b179055426019819055601654601780546001600160a01b0319166001600160a01b0390921691909117905560006005556004601255600655565b60008061142d8385612875565b905083811015610c495760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b56565b600081848411156114a35760405162461bcd60e51b8152600401610b56919061265e565b5060006114b084866128f1565b95945050505050565b6001600160a01b0383166000908152600f602052604081205460ff16151560011480159061150557506001600160a01b0383166000908152600f602052604090205460ff161515600114155b61153f5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b56565b601b54600160a01b900460ff16156115635761155c848484611937565b9050610c49565b601b546001600160a01b031633148015906115885750601b54600160a01b900460ff16155b801561159d5750601b54600160a81b900460ff165b80156115ba5750601e543060009081526008602052604090205410155b156115c7576115c7611a1d565b6115d2848484611e5e565b6115dc84846123f4565b156116175760405162461bcd60e51b815260206004820152600b60248201526a111bdb89dd0818da19585d60aa1b6044820152606401610b56565b6001600160a01b0384166000908152600d602052604081205460ff1615801561165957506001600160a01b0384166000908152600d602052604090205460ff16155b611663578261166e565b61166e85858561247f565b601854909150600160a01b900460ff16151560011480159061169e5750601b546001600160a01b03858116911614155b80156116b857506000546001600160a01b03868116911614155b80156116d257506000546001600160a01b03858116911614155b15611750576001600160a01b0384166000908152600860205260409020546116fa9082611420565b6001600160a01b03808616600090815260086020526040808220939093559087168152205461172990846118a5565b6001600160a01b03861660009081526008602052604090205561174b84610eaf565b61185a565b6000546001600160a01b038681169116148061177957506000546001600160a01b038581169116145b156117ee576001600160a01b0384166000908152600860205260409020546117a19082611420565b6001600160a01b0380861660009081526008602052604080822093909355908716815220546117d090846118a5565b6001600160a01b03861660009081526008602052604090205561185a565b6001600160a01b0384166000908152600860205260409020546118119082611420565b6001600160a01b03808616600090815260086020526040808220939093559087168152205461184090846118a5565b6001600160a01b0386166000908152600860205260409020555b6040518181526001600160a01b0385169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3506001949350505050565b6000610c4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061147f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461198891849061147f565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546119b79083611420565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a0b9086815260200190565b60405180910390a35060019392505050565b601b805460ff60a01b1916600160a01b179055601e54601354601054600091611a5691600291611a509182908790612542565b906125c1565b90506000611a6483836118a5565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611a9e57611a9e61291e565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1b9190612934565b81600181518110611b2e57611b2e61291e565b6001600160a01b039283166020918202929092010152601a5460405163791ac94760e01b815291169063791ac94790611b74908590600090869030904290600401612995565b600060405180830381600087803b158015611b8e57600080fd5b505af1158015611ba2573d6000803e3d6000fd5b505060105447925060009150611bc690611bbd9060026125c1565b601354906118a5565b90506000611be382611a506011548661254290919063ffffffff16565b90506000611c0083611a506012548761254290919063ffffffff16565b90506000611c226002611a5086611a506010548a61254290919063ffffffff16565b6016546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611c79576040519150601f19603f3d011682016040523d82523d6000602084013e611c7e565b606091505b50506017546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611cd7576040519150601f19603f3d011682016040523d82523d6000602084013e611cdc565b606091505b5050601780546001600160a01b039081166000908152600b602090815260408083208a9055845484168352600c8252808320805460ff19166001179055845484168352600a82529182902042905592548151921682529181018790529192507f887dd9f57395c2e1e0dea455ae76bf56410b19b3131f2a590aab0b29b3683632910160405180910390a15060009050808915611e4457601a5460155460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611de2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e0791906129d1565b505060408051858152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601b805460ff60a01b19169055505050505050505050565b600754600654611e6e90426128f1565b1115611e7c57611e7c612603565b6000546001600160a01b03848116911614801590611ea857506000546001600160a01b03838116911614155b8015611ecd57506001600160a01b0382166000908152600e602052604090205460ff16155b8015611ee757506002546001600160a01b03838116911614155b8015611f0157506001546001600160a01b03838116911614155b8015611f1b5750601b546001600160a01b03838116911614155b8015611f3057506001600160a01b0382163014155b156122cc57601c54811115611f705760405162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b6044820152606401610b56565b6001600160a01b038216600090815260086020526040902054601d54611f968383612875565b1115611ff05760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610b56565b6040805160028082526060820183526000926020830190803683375050601a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e9190612934565b816000815181106120915761209161291e565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106120c5576120c561291e565b6001600160a01b039283166020918202929092010152601a546040516307c0329d60e21b81526000929190911690631f00ca749061210990879086906004016129ff565b600060405180830381865afa158015612126573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261214e9190810190612a20565b6000815181106121605761216061291e565b6020908102919091018101516001600160a01b0387166000908152600c90925260409091205490915060ff16151560011480156121c157506001600160a01b0385166000908152600a602052604090205442906121bf90612a30612875565b105b80156121ce575060055481115b1561223857601780546001600160a01b0319166001600160a01b03871690811790915560058290554260065560408051918252602082018390527f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4910160405180910390a16122c8565b6001600160a01b0385166000908152600c602052604090205460ff16158015612262575060055481115b156122c857601780546001600160a01b0319166001600160a01b03871690811790915560058290554260065560408051918252602082018390527f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4910160405180910390a15b5050505b6000546001600160a01b038481169116148015906122f857506000546001600160a01b03838116911614155b801561231d57506001600160a01b0383166000908152600e602052604090205460ff16155b80156123375750601b546001600160a01b03848116911614155b801561234c57506001600160a01b0382163014155b1561114157601c5481111561238c5760405162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b6044820152606401610b56565b6017546001600160a01b038481169116141561114157601754600554604080516001600160a01b03909316835260208301919091527fec798f0f5328ec01f1d48922c12f488ecde2dae7402c814510a37d505cbdbb2a910160405180910390a1611141612603565b6001600160a01b0382166000908152600d602052604081205460ff168061243357506001600160a01b0382166000908152600d602052604090205460ff165b1561244057506000610b26565b601b546001600160a01b03848116911614806124695750601b546001600160a01b038381169116145b1561247657506000610b26565b50600192915050565b601b5460009081906001600160a01b038581169116146124a1576013546124a5565b6014545b905060006124b86064611a508685612542565b306000908152600860205260409020549091506124d59082611420565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125269085815260200190565b60405180910390a361253884826118a5565b9695505050505050565b60008261255157506000610b26565b600061255d8385612ade565b90508261256a858361288d565b14610c495760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b56565b6000610c4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612630565b601654601780546001600160a01b0319166001600160a01b03909216919091179055600060055542600655565b600081836126515760405162461bcd60e51b8152600401610b56919061265e565b5060006114b0848661288d565b600060208083528351808285015260005b8181101561268b5785810183015185820160400152820161266f565b8181111561269d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610cf857600080fd5b600080604083850312156126db57600080fd5b82356126e6816126b3565b946020939093013593505050565b60008060006060848603121561270957600080fd5b8335612714816126b3565b92506020840135612724816126b3565b929592945050506040919091013590565b60006020828403121561274757600080fd5b8135610c49816126b3565b8015158114610cf857600080fd5b6000806040838503121561277357600080fd5b823561277e816126b3565b9150602083013561278e81612752565b809150509250929050565b6000602082840312156127ab57600080fd5b5035919050565b600080604083850312156127c557600080fd5b82356127d0816126b3565b9150602083013561278e816126b3565b6000806000606084860312156127f557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561281f57600080fd5b82356126e681612752565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156128885761288861285f565b500190565b6000826128aa57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600b908201526a496e76616c69642066656560a81b604082015260600190565b6000602082840312156128e657600080fd5b8151610c4981612752565b6000828210156129035761290361285f565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561294657600080fd5b8151610c49816126b3565b600081518084526020808501945080840160005b8381101561298a5781516001600160a01b031687529582019590820190600101612965565b509495945050505050565b85815284602082015260a0604082015260006129b460a0830186612951565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156129e657600080fd5b8351925060208401519150604084015190509250925092565b828152604060208201526000612a186040830184612951565b949350505050565b60006020808385031215612a3357600080fd5b825167ffffffffffffffff80821115612a4b57600080fd5b818501915085601f830112612a5f57600080fd5b815181811115612a7157612a71612908565b8060051b604051601f19603f83011681018181108582111715612a9657612a96612908565b604052918252848201925083810185019188831115612ab457600080fd5b938501935b82851015612ad257845184529385019392850192612ab9565b98975050505050505050565b6000816000190483118215151615612af857612af861285f565b50029056fea264697066735822122079b5b02ca9c008b55b9bfa4119cfbe10b1c09540a630ee94cf9f3f9ad6472a0064736f6c634300080c0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80638da5cb5b116101d1578063a9059cbb11610102578063df20fd49116100a0578063f84ba65d1161006f578063f84ba65d14610a31578063f887ea4014610a51578063fe2b6bc614610a71578063fe575a8714610a8657600080fd5b8063df20fd49146109bc578063ea1644d5146109dc578063eb45e709146109fc578063f2fde38b14610a1157600080fd5b8063cec10c11116100dc578063cec10c1114610920578063dbe1c4d514610940578063dd62ed3e14610956578063dec2ba0f1461099c57600080fd5b8063a9059cbb146108c0578063a9e59da3146108e0578063ca33e64c1461090057600080fd5b80639e0a78101161016f578063a4b45c0011610149578063a4b45c0014610833578063a4f87a7a14610853578063a617792814610880578063a8aa1b31146108a057600080fd5b80639e0a7810146107cc5780639f2bb2e9146107ed5780639f55eb4e1461080357600080fd5b806395d89b41116101ab57806395d89b411461074857806398118cb4146107765780639cfe42da1461078c5780639d0014b1146107ac57600080fd5b80638da5cb5b146106ce5780638eb6889f1461071c578063944c1d971461073257600080fd5b8063571ac8b0116102ab578063715018a6116102495780637de4c778116102235780637de4c7781461068157806387b3be7d146106ae578063893d20e8146106ce5780638b42507f146106ec57600080fd5b8063715018a61461061e57806375f0a874146106335780637d1db4a51461066b57600080fd5b80636b67c4df116102855780636b67c4df1461059c5780636c0a24eb146105b257806370a08231146105c8578063712a890a146105fe57600080fd5b8063571ac8b01461053c578063658d4b7f1461055c57806366e930b31461057c57600080fd5b8063313ce567116103185780633f4218e0116102f25780633f4218e0146104c057806346cf314f146104f05780634a74bb02146105065780634fef3a821461052757600080fd5b8063313ce5671461047a57806333596f50146104965780633e02a988146104ab57600080fd5b8063125b94e511610354578063125b94e51461041957806318160ddd1461043057806323b872dd146104455780632b112e491461046557600080fd5b80630445b6671461038657806306fdde03146103af578063095ea7b3146103e957600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c601e5481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b50604080518082019091526008815267084d2ce408cd2e6d60c31b60208201525b6040516103a6919061265e565b3480156103f557600080fd5b506104096104043660046126c8565b610abf565b60405190151581526020016103a6565b34801561042557600080fd5b5061042e610b2c565b005b34801561043c57600080fd5b5060045461039c565b34801561045157600080fd5b506104096104603660046126f4565b610b8b565b34801561047157600080fd5b5061039c610c50565b34801561048657600080fd5b50604051601281526020016103a6565b3480156104a257600080fd5b5061042e610ca2565b3480156104b757600080fd5b5061039c610cfb565b3480156104cc57600080fd5b506104096104db366004612735565b600d6020526000908152604090205460ff1681565b3480156104fc57600080fd5b5061039c60125481565b34801561051257600080fd5b50601b5461040990600160a81b900460ff1681565b34801561053357600080fd5b5061042e610d0d565b34801561054857600080fd5b50610409610557366004612735565b610d58565b34801561056857600080fd5b5061042e610577366004612760565b610d66565b34801561058857600080fd5b5061042e610597366004612735565b610dbb565b3480156105a857600080fd5b5061039c60115481565b3480156105be57600080fd5b5061039c601d5481565b3480156105d457600080fd5b5061039c6105e3366004612735565b6001600160a01b031660009081526008602052604090205490565b34801561060a57600080fd5b5061042e610619366004612799565b610e06565b34801561062a57600080fd5b5061042e610e35565b34801561063f57600080fd5b50601654610653906001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b34801561067757600080fd5b5061039c601c5481565b34801561068d57600080fd5b5061039c61069c366004612735565b600b6020526000908152604090205481565b3480156106ba57600080fd5b50601754610653906001600160a01b031681565b3480156106da57600080fd5b506000546001600160a01b0316610653565b3480156106f857600080fd5b50610409610707366004612735565b600e6020526000908152604090205460ff1681565b34801561072857600080fd5b5061039c60055481565b34801561073e57600080fd5b5061039c60075481565b34801561075457600080fd5b506040805180820190915260058152640488492a6960db1b60208201526103dc565b34801561078257600080fd5b5061039c60105481565b34801561079857600080fd5b5061042e6107a7366004612735565b610e6b565b3480156107b857600080fd5b5061042e6107c7366004612799565b610ed3565b3480156107d857600080fd5b5060185461040990600160a01b900460ff1681565b3480156107f957600080fd5b5061039c60065481565b34801561080f57600080fd5b5061040961081e366004612735565b600c6020526000908152604090205460ff1681565b34801561083f57600080fd5b5061042e61084e3660046127b2565b610f02565b34801561085f57600080fd5b5061039c61086e366004612735565b600a6020526000908152604090205481565b34801561088c57600080fd5b50601854610653906001600160a01b031681565b3480156108ac57600080fd5b50601b54610653906001600160a01b031681565b3480156108cc57600080fd5b506104096108db3660046126c8565b610f5a565b3480156108ec57600080fd5b5061042e6108fb366004612799565b610f67565b34801561090c57600080fd5b50601554610653906001600160a01b031681565b34801561092c57600080fd5b5061042e61093b3660046127e0565b610ff4565b34801561094c57600080fd5b5061039c601f5481565b34801561096257600080fd5b5061039c6109713660046127b2565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156109a857600080fd5b5061042e6109b73660046126c8565b6110a6565b3480156109c857600080fd5b5061042e6109d736600461280c565b611146565b3480156109e857600080fd5b5061042e6109f7366004612799565b611192565b348015610a0857600080fd5b5061042e61121f565b348015610a1d57600080fd5b5061042e610a2c366004612735565b611272565b348015610a3d57600080fd5b5061042e610a4c366004612760565b61130a565b348015610a5d57600080fd5b50601a54610653906001600160a01b031681565b348015610a7d57600080fd5b5061042e61135f565b348015610a9257600080fd5b50610409610aa1366004612735565b6001600160a01b03166000908152600f602052604090205460ff1690565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b1a9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b5f5760405162461bcd60e51b8152600401610b569061282a565b60405180910390fd5b60026010819055600460118190556012819055610b8691610b809082611420565b90611420565b601355565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610c38576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610c1391849061147f565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610c438484846114b9565b50600190505b9392505050565b6002546001600160a01b0316600090815260086020526040812054610c9d906001546001600160a01b0316600090815260086020526040902054610c9790600454906118a5565b906118a5565b905090565b6000546001600160a01b03163314610ccc5760405162461bcd60e51b8152600401610b569061282a565b60405133904780156108fc02916000818181858888f19350505050158015610cf8573d6000803e3d6000fd5b50565b6000600754600654610c9d9190612875565b6000546001600160a01b03163314610d375760405162461bcd60e51b8152600401610b569061282a565b60016010819055601181905560086012819055610b8691610b809080611420565b6000610b2682600019610abf565b6000546001600160a01b03163314610d905760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610de55760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b03163314610e305760405162461bcd60e51b8152600401610b569061282a565b600755565b6000546001600160a01b03163314610e5f5760405162461bcd60e51b8152600401610b569061282a565b610e6960006118e7565b565b6000546001600160a01b03163314610e955760405162461bcd60e51b8152600401610b569061282a565b601954610ea490610a8c612875565b4210610eaf57600080fd5b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610b569061282a565b601e55565b6000546001600160a01b03163314610f2c5760405162461bcd60e51b8152600401610b569061282a565b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b6000610c493384846114b9565b6000546001600160a01b03163314610f915760405162461bcd60e51b8152600401610b569061282a565b600a600454610fa0919061288d565b811015610fef5760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610b56565b601c55565b6000546001600160a01b0316331461101e5760405162461bcd60e51b8152600401610b569061282a565b600a83111561103f5760405162461bcd60e51b8152600401610b56906128af565b600a8211156110605760405162461bcd60e51b8152600401610b56906128af565b600a8111156110815760405162461bcd60e51b8152600401610b56906128af565b60108390556011829055601281905561109e81610b808585611420565b601355505050565b6000546001600160a01b031633146110d05760405162461bcd60e51b8152600401610b569061282a565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561111d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114191906128d4565b505050565b6000546001600160a01b031633146111705760405162461bcd60e51b8152600401610b569061282a565b601b8054921515600160a81b0260ff60a81b1990931692909217909155601e55565b6000546001600160a01b031633146111bc5760405162461bcd60e51b8152600401610b569061282a565b60326004546111cb919061288d565b81101561121a5760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610b56565b601d55565b6000546001600160a01b031633146112495760405162461bcd60e51b8152600401610b569061282a565b601b805460ff60a81b19169055600019601c819055601d55600060118190556012819055601055565b6000546001600160a01b0316331461129c5760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b0381166113015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b56565b610cf8816118e7565b6000546001600160a01b031633146113345760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113895760405162461bcd60e51b8152600401610b569061282a565b601854600160a01b900460ff16156113d65760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610b56565b6018805460ff60a01b1916600160a01b179055426019819055601654601780546001600160a01b0319166001600160a01b0390921691909117905560006005556004601255600655565b60008061142d8385612875565b905083811015610c495760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b56565b600081848411156114a35760405162461bcd60e51b8152600401610b56919061265e565b5060006114b084866128f1565b95945050505050565b6001600160a01b0383166000908152600f602052604081205460ff16151560011480159061150557506001600160a01b0383166000908152600f602052604090205460ff161515600114155b61153f5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b56565b601b54600160a01b900460ff16156115635761155c848484611937565b9050610c49565b601b546001600160a01b031633148015906115885750601b54600160a01b900460ff16155b801561159d5750601b54600160a81b900460ff165b80156115ba5750601e543060009081526008602052604090205410155b156115c7576115c7611a1d565b6115d2848484611e5e565b6115dc84846123f4565b156116175760405162461bcd60e51b815260206004820152600b60248201526a111bdb89dd0818da19585d60aa1b6044820152606401610b56565b6001600160a01b0384166000908152600d602052604081205460ff1615801561165957506001600160a01b0384166000908152600d602052604090205460ff16155b611663578261166e565b61166e85858561247f565b601854909150600160a01b900460ff16151560011480159061169e5750601b546001600160a01b03858116911614155b80156116b857506000546001600160a01b03868116911614155b80156116d257506000546001600160a01b03858116911614155b15611750576001600160a01b0384166000908152600860205260409020546116fa9082611420565b6001600160a01b03808616600090815260086020526040808220939093559087168152205461172990846118a5565b6001600160a01b03861660009081526008602052604090205561174b84610eaf565b61185a565b6000546001600160a01b038681169116148061177957506000546001600160a01b038581169116145b156117ee576001600160a01b0384166000908152600860205260409020546117a19082611420565b6001600160a01b0380861660009081526008602052604080822093909355908716815220546117d090846118a5565b6001600160a01b03861660009081526008602052604090205561185a565b6001600160a01b0384166000908152600860205260409020546118119082611420565b6001600160a01b03808616600090815260086020526040808220939093559087168152205461184090846118a5565b6001600160a01b0386166000908152600860205260409020555b6040518181526001600160a01b0385169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3506001949350505050565b6000610c4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061147f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461198891849061147f565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546119b79083611420565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a0b9086815260200190565b60405180910390a35060019392505050565b601b805460ff60a01b1916600160a01b179055601e54601354601054600091611a5691600291611a509182908790612542565b906125c1565b90506000611a6483836118a5565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611a9e57611a9e61291e565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1b9190612934565b81600181518110611b2e57611b2e61291e565b6001600160a01b039283166020918202929092010152601a5460405163791ac94760e01b815291169063791ac94790611b74908590600090869030904290600401612995565b600060405180830381600087803b158015611b8e57600080fd5b505af1158015611ba2573d6000803e3d6000fd5b505060105447925060009150611bc690611bbd9060026125c1565b601354906118a5565b90506000611be382611a506011548661254290919063ffffffff16565b90506000611c0083611a506012548761254290919063ffffffff16565b90506000611c226002611a5086611a506010548a61254290919063ffffffff16565b6016546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611c79576040519150601f19603f3d011682016040523d82523d6000602084013e611c7e565b606091505b50506017546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611cd7576040519150601f19603f3d011682016040523d82523d6000602084013e611cdc565b606091505b5050601780546001600160a01b039081166000908152600b602090815260408083208a9055845484168352600c8252808320805460ff19166001179055845484168352600a82529182902042905592548151921682529181018790529192507f887dd9f57395c2e1e0dea455ae76bf56410b19b3131f2a590aab0b29b3683632910160405180910390a15060009050808915611e4457601a5460155460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611de2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e0791906129d1565b505060408051858152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601b805460ff60a01b19169055505050505050505050565b600754600654611e6e90426128f1565b1115611e7c57611e7c612603565b6000546001600160a01b03848116911614801590611ea857506000546001600160a01b03838116911614155b8015611ecd57506001600160a01b0382166000908152600e602052604090205460ff16155b8015611ee757506002546001600160a01b03838116911614155b8015611f0157506001546001600160a01b03838116911614155b8015611f1b5750601b546001600160a01b03838116911614155b8015611f3057506001600160a01b0382163014155b156122cc57601c54811115611f705760405162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b6044820152606401610b56565b6001600160a01b038216600090815260086020526040902054601d54611f968383612875565b1115611ff05760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610b56565b6040805160028082526060820183526000926020830190803683375050601a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e9190612934565b816000815181106120915761209161291e565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106120c5576120c561291e565b6001600160a01b039283166020918202929092010152601a546040516307c0329d60e21b81526000929190911690631f00ca749061210990879086906004016129ff565b600060405180830381865afa158015612126573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261214e9190810190612a20565b6000815181106121605761216061291e565b6020908102919091018101516001600160a01b0387166000908152600c90925260409091205490915060ff16151560011480156121c157506001600160a01b0385166000908152600a602052604090205442906121bf90612a30612875565b105b80156121ce575060055481115b1561223857601780546001600160a01b0319166001600160a01b03871690811790915560058290554260065560408051918252602082018390527f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4910160405180910390a16122c8565b6001600160a01b0385166000908152600c602052604090205460ff16158015612262575060055481115b156122c857601780546001600160a01b0319166001600160a01b03871690811790915560058290554260065560408051918252602082018390527f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4910160405180910390a15b5050505b6000546001600160a01b038481169116148015906122f857506000546001600160a01b03838116911614155b801561231d57506001600160a01b0383166000908152600e602052604090205460ff16155b80156123375750601b546001600160a01b03848116911614155b801561234c57506001600160a01b0382163014155b1561114157601c5481111561238c5760405162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b6044820152606401610b56565b6017546001600160a01b038481169116141561114157601754600554604080516001600160a01b03909316835260208301919091527fec798f0f5328ec01f1d48922c12f488ecde2dae7402c814510a37d505cbdbb2a910160405180910390a1611141612603565b6001600160a01b0382166000908152600d602052604081205460ff168061243357506001600160a01b0382166000908152600d602052604090205460ff165b1561244057506000610b26565b601b546001600160a01b03848116911614806124695750601b546001600160a01b038381169116145b1561247657506000610b26565b50600192915050565b601b5460009081906001600160a01b038581169116146124a1576013546124a5565b6014545b905060006124b86064611a508685612542565b306000908152600860205260409020549091506124d59082611420565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125269085815260200190565b60405180910390a361253884826118a5565b9695505050505050565b60008261255157506000610b26565b600061255d8385612ade565b90508261256a858361288d565b14610c495760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b56565b6000610c4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612630565b601654601780546001600160a01b0319166001600160a01b03909216919091179055600060055542600655565b600081836126515760405162461bcd60e51b8152600401610b56919061265e565b5060006114b0848661288d565b600060208083528351808285015260005b8181101561268b5785810183015185820160400152820161266f565b8181111561269d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610cf857600080fd5b600080604083850312156126db57600080fd5b82356126e6816126b3565b946020939093013593505050565b60008060006060848603121561270957600080fd5b8335612714816126b3565b92506020840135612724816126b3565b929592945050506040919091013590565b60006020828403121561274757600080fd5b8135610c49816126b3565b8015158114610cf857600080fd5b6000806040838503121561277357600080fd5b823561277e816126b3565b9150602083013561278e81612752565b809150509250929050565b6000602082840312156127ab57600080fd5b5035919050565b600080604083850312156127c557600080fd5b82356127d0816126b3565b9150602083013561278e816126b3565b6000806000606084860312156127f557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561281f57600080fd5b82356126e681612752565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156128885761288861285f565b500190565b6000826128aa57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600b908201526a496e76616c69642066656560a81b604082015260600190565b6000602082840312156128e657600080fd5b8151610c4981612752565b6000828210156129035761290361285f565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561294657600080fd5b8151610c49816126b3565b600081518084526020808501945080840160005b8381101561298a5781516001600160a01b031687529582019590820190600101612965565b509495945050505050565b85815284602082015260a0604082015260006129b460a0830186612951565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156129e657600080fd5b8351925060208401519150604084015190509250925092565b828152604060208201526000612a186040830184612951565b949350505050565b60006020808385031215612a3357600080fd5b825167ffffffffffffffff80821115612a4b57600080fd5b818501915085601f830112612a5f57600080fd5b815181811115612a7157612a71612908565b8060051b604051601f19603f83011681018181108582111715612a9657612a96612908565b604052918252848201925083810185019188831115612ab457600080fd5b938501935b82851015612ad257845184529385019392850192612ab9565b98975050505050505050565b6000816000190483118215151615612af857612af861285f565b50029056fea264697066735822122079b5b02ca9c008b55b9bfa4119cfbe10b1c09540a630ee94cf9f3f9ad6472a0064736f6c634300080c0033

Deployed Bytecode Sourcemap

7074:16238:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8850:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8850:49:0;;;;;;;;10157:94;;;;;;;;;;-1:-1:-1;10238:5:0;;;;;;;;;;;;-1:-1:-1;;;10238:5:0;;;;10157:94;;;;;;;:::i;12059:248::-;;;;;;;;;;-1:-1:-1;12059:248:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;12059:248:0;1254:187:1;13699:200:0;;;;;;;;;;;;;:::i;:::-;;10569:102;;;;;;;;;;-1:-1:-1;10651:12:0;;10569:102;;17589:423;;;;;;;;;;-1:-1:-1;17589:423:0;;;;;:::i;:::-;;:::i;10679:142::-;;;;;;;;;;;;;:::i;10365:94::-;;;;;;;;;;-1:-1:-1;10365:94:0;;7260:2;2049:36:1;;2037:2;2022:18;10365:94:0;1907:184:1;23021:115:0;;;;;;;;;;;;;:::i;13375:108::-;;;;;;;;;;;;;:::i;7997:43::-;;;;;;;;;;-1:-1:-1;7997:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8286:26;;;;;;;;;;;;;;;;8696:40;;;;;;;;;;-1:-1:-1;8696:40:0;;;;-1:-1:-1;;;8696:40:0;;;;;;13491:200;;;;;;;;;;;;;:::i;12315:108::-;;;;;;;;;;-1:-1:-1;12315:108:0;;;;;:::i;:::-;;:::i;12431:119::-;;;;;;;;;;-1:-1:-1;12431:119:0;;;;;:::i;:::-;;:::i;14765:106::-;;;;;;;;;;-1:-1:-1;14765:106:0;;;;;:::i;:::-;;:::i;8248:31::-;;;;;;;;;;;;;;;;8792:51;;;;;;;;;;;;;;;;10829:119;;;;;;;;;;-1:-1:-1;10829:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;10922:18:0;10895:7;10922:18;;;:9;:18;;;;;;;10829:119;13077:146;;;;;;;;;;-1:-1:-1;13077:146:0;;;;;:::i;:::-;;:::i;6327:94::-;;;;;;;;;;;;;:::i;8442:30::-;;;;;;;;;;-1:-1:-1;8442:30:0;;;;-1:-1:-1;;;;;8442:30:0;;;;;;-1:-1:-1;;;;;3207:32:1;;;3189:51;;3177:2;3162:18;8442:30:0;3043:203:1;8743:42:0;;;;;;;;;;;;;;;;7891;;;;;;;;;;-1:-1:-1;7891:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;8479:19;;;;;;;;;;-1:-1:-1;8479:19:0;;;;-1:-1:-1;;;;;8479:19:0;;;10467:94;;;;;;;;;;-1:-1:-1;10519:7:0;5749:6;-1:-1:-1;;;;;5749:6:0;10467:94;10679:142;8047:47;;;;;;;;;;-1:-1:-1;8047:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7603:29;;;;;;;;;;;;;;;;7679:39;;;;;;;;;;;;;;;;10259:98;;;;;;;;;;-1:-1:-1;10342:7:0;;;;;;;;;;;;-1:-1:-1;;;10342:7:0;;;;10259:98;;8210:31;;;;;;;;;;;;;;;;14592:165;;;;;;;;;;-1:-1:-1;14592:165:0;;;;;:::i;:::-;;:::i;12716:108::-;;;;;;;;;;-1:-1:-1;12716:108:0;;;;;:::i;:::-;;:::i;8543:31::-;;;;;;;;;;-1:-1:-1;8543:31:0;;;;-1:-1:-1;;;8543:31:0;;;;;;7639:33;;;;;;;;;;;;;;;;7940:50;;;;;;;;;;-1:-1:-1;7940:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12832:237;;;;;;;;;;-1:-1:-1;12832:237:0;;;;;:::i;:::-;;:::i;7835:49::-;;;;;;;;;;-1:-1:-1;7835:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;8505:29;;;;;;;;;;-1:-1:-1;8505:29:0;;;;-1:-1:-1;;;;;8505:29:0;;;8640:19;;;;;;;;;;-1:-1:-1;8640:19:0;;;;-1:-1:-1;;;;;8640:19:0;;;17393:188;;;;;;;;;;-1:-1:-1;17393:188:0;;;;;:::i;:::-;;:::i;14402:182::-;;;;;;;;;;-1:-1:-1;14402:182:0;;;;;:::i;:::-;;:::i;8399:36::-;;;;;;;;;;-1:-1:-1;8399:36:0;;;;-1:-1:-1;;;;;8399:36:0;;;11182:673;;;;;;;;;;-1:-1:-1;11182:673:0;;;;;:::i;:::-;;:::i;8906:29::-;;;;;;;;;;;;;;;;11863:188;;;;;;;;;;-1:-1:-1;11863:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;12015:19:0;;;11983:7;12015:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11863:188;23144:165;;;;;;;;;;-1:-1:-1;23144:165:0;;;;;:::i;:::-;;:::i;17167:218::-;;;;;;;;;;-1:-1:-1;17167:218:0;;;;;:::i;:::-;;:::i;14212:182::-;;;;;;;;;;-1:-1:-1;14212:182:0;;;;;:::i;:::-;;:::i;10956:218::-;;;;;;;;;;;;;:::i;6576:192::-;;;;;;;;;;-1:-1:-1;6576:192:0;;;;;:::i;:::-;;:::i;12558:150::-;;;;;;;;;;-1:-1:-1;12558:150:0;;;;;:::i;:::-;;:::i;8609:24::-;;;;;;;;;;-1:-1:-1;8609:24:0;;;;-1:-1:-1;;;;;8609:24:0;;;13907:297;;;;;;;;;;;;;:::i;14879:120::-;;;;;;;;;;-1:-1:-1;14879:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;14966:25:0;14942:4;14966:25;;;:16;:25;;;;;;;;;14879:120;12059:248;12195:10;12161:4;12183:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12183:32:0;;;;;;;;;;:41;;;12240:37;12161:4;;12183:32;;12240:37;;;;12218:6;160:25:1;;148:2;133:18;;14:177;12240:37:0;;;;;;;;-1:-1:-1;12295:4:0;12059:248;;;;;:::o;13699:200::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;;;;;;;;;13776:1:::1;13761:12;:16:::0;;;13803:1:::1;13788:12;:16:::0;;;13815:7:::1;:11:::0;;;13848:43:::1;::::0;:30:::1;::::0;13803:1;13848:16:::1;:30::i;:::-;:34:::0;::::1;:43::i;:::-;13837:8;:54:::0;13699:200::o;17589:423::-;-1:-1:-1;;;;;17744:19:0;;17723:4;17744:19;;;:11;:19;;;;;;;;17764:10;17744:31;;;;;;;;-1:-1:-1;;17744:38:0;17740:192;;17833:87;;;;;;;;;;;-1:-1:-1;;;17833:87:0;;;;;;;;-1:-1:-1;;;;;17833:19:0;;-1:-1:-1;17833:19:0;;;:11;:19;;;;;17853:10;17833:31;;;;;;;;;;:87;;17887:6;;17833:53;:87::i;:::-;-1:-1:-1;;;;;17799:19:0;;;;;;:11;:19;;;;;;;;17819:10;17799:31;;;;;;;:121;17740:192;17942:40;17956:6;17964:9;17975:6;17942:13;:40::i;:::-;;18000:4;17993:11;;17589:423;;;;;;:::o;10679:142::-;10807:4;;-1:-1:-1;;;;;10807:4:0;10732:7;10922:18;;;:9;:18;;;;;;10759:54;;10786:4;;-1:-1:-1;;;;;10786:4:0;10895:7;10922:18;;;:9;:18;;;;;;10759:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;10752:61;;10679:142;:::o;23021:115::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;23077:51:::1;::::0;23085:10:::1;::::0;23106:21:::1;23077:51:::0;::::1;;;::::0;::::1;::::0;;;23106:21;23085:10;23077:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23021:115::o:0;13375:108::-;13420:7;13464:11;;13447:14;;:28;;;;:::i;13491:200::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;13568:1:::1;13553:12;:16:::0;;;13580:12:::1;:16:::0;;;13617:1:::1;13607:7;:11:::0;;;13640:43:::1;::::0;:30:::1;::::0;13568:1;13640:16:::1;:30::i;12315:108::-:0;12370:4;12394:21;12402:7;-1:-1:-1;;12394:7:0;:21::i;12431:119::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12514:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;12514:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12431:119::o;14765:106::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14835:22:0::1;14858:5;14835:22:::0;;;:16:::1;:22;::::0;;;;:28;;-1:-1:-1;;14835:28:0::1;::::0;;14765:106::o;13077:146::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;13187:11:::1;:28:::0;13077:146::o;6327:94::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;6392:21:::1;6410:1;6392:9;:21::i;:::-;6327:94::o:0;14592:165::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;14684:11:::1;::::0;:24:::1;::::0;14698:10:::1;14684:24;:::i;:::-;14666:15;:42;14658:51;;;::::0;::::1;;-1:-1:-1::0;;;;;14720:22:0::1;;::::0;;;:16:::1;:22;::::0;;;;:27;;-1:-1:-1;;14720:27:0::1;14743:4;14720:27;::::0;;14592:165::o;12716:108::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;12791:13:::1;:25:::0;12716:108::o;12832:237::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;12970:21:::1;:44:::0;;-1:-1:-1;;;;;12970:44:0;;::::1;-1:-1:-1::0;;;;;;12970:44:0;;::::1;;::::0;;;13025:15:::1;:36:::0;;;;;::::1;::::0;::::1;;::::0;;12832:237::o;17393:188::-;17500:4;17529:44;17543:10;17555:9;17566:6;17529:13;:44::i;14402:182::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;14509:2:::1;14495:12;;:16;;;;:::i;:::-;14487:6;:24;;14479:63;;;::::0;-1:-1:-1;;;14479:63:0;;5555:2:1;14479:63:0::1;::::0;::::1;5537:21:1::0;5594:2;5574:18;;;5567:30;5633:28;5613:18;;;5606:56;5679:18;;14479:63:0::1;5353:350:1::0;14479:63:0::1;14553:12;:21:::0;14402:182::o;11182:673::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;11398:2:::1;11379:15;:21;;11333:106;;;;-1:-1:-1::0;;;11333:106:0::1;;;;;;;:::i;:::-;11517:2;11498:15;:21;;11452:106;;;;-1:-1:-1::0;;;11452:106:0::1;;;;;;;:::i;:::-;11626:2;11612:10;:16;;11571:96;;;;-1:-1:-1::0;;;11571:96:0::1;;;;;;;:::i;:::-;11680:12;:30:::0;;;11721:12:::1;:30:::0;;;11762:7:::1;:20:::0;;;11804:43:::1;11772:10:::0;11804:30:::1;11695:15:::0;11736;11804:16:::1;:30::i;:43::-;11793:8;:54:::0;-1:-1:-1;;;11182:673:0:o;23144:165::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;23257:44:::1;::::0;-1:-1:-1;;;23257:44:0;;23281:10:::1;23257:44;::::0;::::1;6222:51:1::0;6289:18;;;6282:34;;;-1:-1:-1;;;;;23257:23:0;::::1;::::0;::::1;::::0;6195:18:1;;23257:44:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23144:165:::0;;:::o;17167:218::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;17296:21:::1;:38:::0;;;::::1;;-1:-1:-1::0;;;17296:38:0::1;-1:-1:-1::0;;;;17296:38:0;;::::1;::::0;;;::::1;::::0;;;17345:13:::1;:32:::0;17167:218::o;14212:182::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;14315:2:::1;14300:12;;:17;;;;:::i;:::-;14292:6;:25;;14284:64;;;::::0;-1:-1:-1;;;14284:64:0;;5555:2:1;14284:64:0::1;::::0;::::1;5537:21:1::0;5594:2;5574:18;;;5567:30;5633:28;5613:18;;;5606:56;5679:18;;14284:64:0::1;5353:350:1::0;14284:64:0::1;14359:16;:25:::0;14212:182::o;10956:218::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;11011:21:::1;:27:::0;;-1:-1:-1;;;;11011:27:0::1;::::0;;-1:-1:-1;;11049:12:0::1;:16:::0;;;11076::::1;:20:::0;11033:5:::1;11107:12;:14:::0;;;11132:7:::1;:9:::0;;;11152:12:::1;:14:::0;10956:218::o;6576:192::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6665:22:0;::::1;6657:73;;;::::0;-1:-1:-1;;;6657:73:0;;6779:2:1;6657:73:0::1;::::0;::::1;6761:21:1::0;6818:2;6798:18;;;6791:30;6857:34;6837:18;;;6830:62;-1:-1:-1;;;6908:18:1;;;6901:36;6954:19;;6657:73:0::1;6577:402:1::0;6657:73:0::1;6741:19;6751:8;6741:9;:19::i;12558:150::-:0;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12668:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;12668:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12558:150::o;13907:297::-;5722:7;5749:6;-1:-1:-1;;;;;5749:6:0;4632:10;5896:23;5888:68;;;;-1:-1:-1;;;5888:68:0;;;;;;;:::i;:::-;13963:11:::1;::::0;-1:-1:-1;;;13963:11:0;::::1;;;:20;13954:50;;;::::0;-1:-1:-1;;;13954:50:0;;7186:2:1;13954:50:0::1;::::0;::::1;7168:21:1::0;7225:2;7205:18;;;7198:30;-1:-1:-1;;;7244:18:1;;;7237:46;7300:18;;13954:50:0::1;6984:340:1::0;13954:50:0::1;14015:11;:18:::0;;-1:-1:-1;;;;14015:18:0::1;-1:-1:-1::0;;;14015:18:0::1;::::0;;14058:15:::1;14044:11;:29:::0;;;14091:15:::1;::::0;14084:4:::1;:22:::0;;-1:-1:-1;;;;;;14084:22:0::1;-1:-1:-1::0;;;;;14091:15:0;;::::1;14084:22:::0;;;::::1;::::0;;14015:18;14117:10:::1;:14:::0;14152:1:::1;-1:-1:-1::0;14142:11:0;-1:-1:-1;14164:32:0;13907:297::o;428:179::-;486:7;;518:5;522:1;518;:5;:::i;:::-;506:17;;547:1;542;:6;;534:46;;;;-1:-1:-1;;;534:46:0;;7531:2:1;534:46:0;;;7513:21:1;7570:2;7550:18;;;7543:30;7609:29;7589:18;;;7582:57;7656:18;;534:46:0;7329:351:1;759:224:0;879:7;915:12;907:6;;;;899:29;;;;-1:-1:-1;;;899:29:0;;;;;;;;:::i;:::-;-1:-1:-1;939:9:0;951:5;955:1;951;:5;:::i;:::-;939:17;759:224;-1:-1:-1;;;;;759:224:0:o;18020:1687::-;-1:-1:-1;;;;;18171:24:0;;18146:4;18171:24;;;:16;:24;;;;;;;;:30;;:24;:30;;;;:67;;-1:-1:-1;;;;;;18205:27:0;;;;;;:16;:27;;;;;;;;:33;;:27;:33;;18171:67;18163:91;;;;-1:-1:-1;;;18163:91:0;;8017:2:1;18163:91:0;;;7999:21:1;8056:2;8036:18;;;8029:30;-1:-1:-1;;;8075:18:1;;;8068:41;8126:18;;18163:91:0;7815:335:1;18163:91:0;18269:16;;-1:-1:-1;;;18269:16:0;;;;18265:97;;;18309:41;18324:6;18332:9;18343:6;18309:14;:41::i;:::-;18302:48;;;;18265:97;18404:4;;-1:-1:-1;;;;;18404:4:0;18390:10;:18;;;;:52;;-1:-1:-1;18426:16:0;;-1:-1:-1;;;18426:16:0;;;;18425:17;18390:52;:90;;;;-1:-1:-1;18459:21:0;;-1:-1:-1;;;18459:21:0;;;;18390:90;:148;;;;-1:-1:-1;18525:13:0;;18515:4;18497:24;;;;:9;:24;;;;;;:41;;18390:148;18372:215;;;18565:10;:8;:10::i;:::-;18597:40;18611:6;18619:9;18630:6;18597:13;:40::i;:::-;18657:35;18674:6;18682:9;18657:16;:35::i;:::-;18656:36;18648:60;;;;-1:-1:-1;;;18648:60:0;;8357:2:1;18648:60:0;;;8339:21:1;8396:2;8376:18;;;8369:30;-1:-1:-1;;;8415:18:1;;;8408:41;8466:18;;18648:60:0;8155:335:1;18648:60:0;-1:-1:-1;;;;;18747:19:0;;18721:22;18747:19;;;:11;:19;;;;;;;;18746:20;:47;;;;-1:-1:-1;;;;;;18771:22:0;;;;;;:11;:22;;;;;;;;18770:23;18746:47;:119;;18859:6;18746:119;;;18809:34;18817:6;18825:9;18836:6;18809:7;:34::i;:::-;18882:11;;18721:144;;-1:-1:-1;;;;18882:11:0;;;;:18;;18896:4;18882:18;;;;:38;;-1:-1:-1;18916:4:0;;-1:-1:-1;;;;;18904:16:0;;;18916:4;;18904:16;;18882:38;:57;;;;-1:-1:-1;5722:7:0;5749:6;-1:-1:-1;;;;;18924:15:0;;;5749:6;;18924:15;;18882:57;:79;;;;-1:-1:-1;5722:7:0;5749:6;-1:-1:-1;;;;;18943:18:0;;;5749:6;;18943:18;;18882:79;18878:737;;;-1:-1:-1;;;;;19011:20:0;;;;;;:9;:20;;;;;;:40;;19036:14;19011:24;:40::i;:::-;-1:-1:-1;;;;;18988:20:0;;;;;;;:9;:20;;;;;;:63;;;;19086:17;;;;;;;:29;;19108:6;19086:21;:29::i;:::-;-1:-1:-1;;;;;19066:17:0;;;;;;:9;:17;;;;;:49;19153:24;19167:9;19153:13;:24::i;:::-;18878:737;;;5722:7;5749:6;-1:-1:-1;;;;;19208:15:0;;;5749:6;;19208:15;;:37;;-1:-1:-1;5722:7:0;5749:6;-1:-1:-1;;;;;19227:18:0;;;5749:6;;19227:18;19208:37;19204:411;;;-1:-1:-1;;;;;19295:20:0;;;;;;:9;:20;;;;;;:40;;19320:14;19295:24;:40::i;:::-;-1:-1:-1;;;;;19272:20:0;;;;;;;:9;:20;;;;;;:63;;;;19370:17;;;;;;;:29;;19392:6;19370:21;:29::i;:::-;-1:-1:-1;;;;;19350:17:0;;;;;;:9;:17;;;;;:49;19204:411;;;-1:-1:-1;;;;;19498:20:0;;;;;;:9;:20;;;;;;:40;;19523:14;19498:24;:40::i;:::-;-1:-1:-1;;;;;19475:20:0;;;;;;;:9;:20;;;;;;:63;;;;19574:17;;;;;;;:29;;19596:6;19574:21;:29::i;:::-;-1:-1:-1;;;;;19554:17:0;;;;;;:9;:17;;;;;:49;19204:411;19630:47;;160:25:1;;;-1:-1:-1;;;;;19630:47:0;;;19639:10;;19630:47;;148:2:1;133:18;19630:47:0;;;;;;;-1:-1:-1;19695:4:0;;18020:1687;-1:-1:-1;;;;18020:1687:0:o;615:136::-;673:7;700:43;704:1;707;700:43;;;;;;;;;;;;;;;;;:3;:43::i;6776:173::-;6832:16;6851:6;;-1:-1:-1;;;;;6868:17:0;;;-1:-1:-1;;;;;;6868:17:0;;;;;;6901:40;;6851:6;;;;;;;6901:40;;6832:16;6901:40;6821:128;6776:173;:::o;19715:401::-;19879:90;;;;;;;;;;;-1:-1:-1;;;19879:90:0;;;;;;;;-1:-1:-1;;;;;19879:17:0;;19842:4;19879:17;;;:9;:17;;;;;;;:90;;19915:6;;19879:21;:90::i;:::-;-1:-1:-1;;;;;19859:17:0;;;;;;;:9;:17;;;;;;:110;;;;20003:20;;;;;;;:32;;20028:6;20003:24;:32::i;:::-;-1:-1:-1;;;;;19980:20:0;;;;;;;:9;:20;;;;;;;:55;;;;20051:35;;;;;;;;;;20079:6;160:25:1;;148:2;133:18;;14:177;20051:35:0;;;;;;;;-1:-1:-1;20104:4:0;19715:401;;;;;:::o;20967:2046::-;8978:16;:23;;-1:-1:-1;;;;8978:23:0;-1:-1:-1;;;8978:23:0;;;21108:13:::1;::::0;21224:8:::1;::::0;21192:12:::1;::::0;8978:23;;21158:96:::1;::::0;21252:1:::1;::::0;21158:75:::1;::::0;;;21108:13;;21158:33:::1;:47::i;:::-;:65:::0;::::1;:75::i;:96::-;21132:122:::0;-1:-1:-1;21265:20:0::1;21288:36;:15:::0;21132:122;21288:19:::1;:36::i;:::-;21361:16;::::0;;21375:1:::1;21361:16:::0;;;;;::::1;::::0;;21265:59;;-1:-1:-1;21337:21:0::1;::::0;21361:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21361:16:0::1;21337:40;;21406:4;21388;21393:1;21388:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21388:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21432:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;21432:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;21388:7;;21432:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21422:4;21427:1;21422:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21422:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21458:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21458:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;21530:12;;21458:6:::1;::::0;21573:4;;21600::::1;::::0;21620:15:::1;::::0;21458:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;21746:12:0::1;::::0;21679:21:::1;::::0;-1:-1:-1;21659:17:0::1;::::0;-1:-1:-1;21733:33:0::1;::::0;21746:19:::1;::::0;21763:1:::1;21746:16;:19::i;:::-;21733:8;::::0;;:12:::1;:33::i;:::-;21711:55;;21777:26;21806:68;21852:11;21806:27;21820:12;;21806:9;:13;;:27;;;;:::i;:68::-;21777:97;;21885:21;21909:39;21936:11;21909:22;21923:7;;21909:9;:13;;:22;;;;:::i;:39::-;21885:63;;21959:26;21988:93;22079:1;21988:72;22048:11;21988:41;22016:12;;21988:9;:27;;:41;;;;:::i;:93::-;22124:15;::::0;22116:109:::1;::::0;21959:122;;-1:-1:-1;22095:15:0::1;::::0;-1:-1:-1;;;;;22124:15:0;;::::1;::::0;22205:5:::1;::::0;22167:18;;22095:15;22116:109;22095:15;22116:109;22167:18;22124:15;22205:5;22116:109:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22267:4:0::1;::::0;22259:93:::1;::::0;22094:131;;-1:-1:-1;22237:16:0::1;::::0;-1:-1:-1;;;;;22267:4:0;;::::1;::::0;22332:5:::1;::::0;22299:13;;22237:16;22259:93;22237:16;22259:93;22299:13;22267:4;22332:5;22259:93:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22373:4:0::1;::::0;;-1:-1:-1;;;;;22373:4:0;;::::1;22365:13;::::0;;;:7:::1;:13;::::0;;;;;;;:27;;;22422:4;;;::::1;22403:24:::0;;:18:::1;:24:::0;;;;;:29;;-1:-1:-1;;22403:29:0::1;22373:4:::0;22403:29:::1;::::0;;22458:4;;;::::1;22443:20:::0;;:14:::1;:20:::0;;;;;;22466:15:::1;22443:38:::0;;22508:4;;22497:31;;22508:4;::::1;6222:51:1::0;;6289:18;;;6282:34;;;22236:116:0;;-1:-1:-1;22497:31:0::1;::::0;6195:18:1;22497:31:0::1;;;;;;;-1:-1:-1::0;22594:5:0::1;::::0;-1:-1:-1;22594:5:0;22646:19;;22642:364:::1;;22682:6;::::0;22856:21:::1;::::0;22682:244:::1;::::0;-1:-1:-1;;;22682:244:0;;22758:4:::1;22682:244;::::0;::::1;10619:34:1::0;10669:18;;;10662:34;;;22682:6:0::1;10712:18:1::0;;;10705:34;;;10755:18;;;10748:34;-1:-1:-1;;;;;22856:21:0;;::::1;10798:19:1::0;;;10791:44;22896:15:0::1;10851:19:1::0;;;10844:35;22682:6:0;::::1;::::0;:22:::1;::::0;22712:18;;10553:19:1;;22682:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22946:48:0::1;::::0;;11375:25:1;;;11431:2;11416:18;;11409:34;;;22946:48:0::1;::::0;-1:-1:-1;11348:18:1;22946:48:0::1;;;;;;;22642:364;-1:-1:-1::0;;9024:16:0;:24;;-1:-1:-1;;;;9024:24:0;;;-1:-1:-1;;;;;;;;;20967:2046:0:o;15108:2051::-;15275:11;;15258:14;;15240:32;;:15;:32;:::i;:::-;:46;15236:87;;;15303:8;:6;:8::i;:::-;5722:7;5749:6;-1:-1:-1;;;;;15351:17:0;;;5749:6;;15351:17;;;;:54;;-1:-1:-1;5722:7:0;5749:6;-1:-1:-1;;;;;15385:20:0;;;5749:6;;15385:20;;15351:54;:98;;;;-1:-1:-1;;;;;;15423:26:0;;;;;;:15;:26;;;;;;;;15422:27;15351:98;:132;;;;-1:-1:-1;15479:4:0;;-1:-1:-1;;;;;15466:17:0;;;15479:4;;15466:17;;15351:132;:166;;;;-1:-1:-1;15513:4:0;;-1:-1:-1;;;;;15500:17:0;;;15513:4;;15500:17;;15351:166;:200;;;;-1:-1:-1;15547:4:0;;-1:-1:-1;;;;;15534:17:0;;;15547:4;;15534:17;;15351:200;:243;;;;-1:-1:-1;;;;;;15568:26:0;;15589:4;15568:26;;15351:243;15333:1412;;;15639:12;;15629:6;:22;;15621:41;;;;-1:-1:-1;;;15621:41:0;;11656:2:1;15621:41:0;;;11638:21:1;11695:1;11675:18;;;11668:29;-1:-1:-1;;;11713:18:1;;;11706:36;11759:18;;15621:41:0;11454:329:1;15621:41:0;-1:-1:-1;;;;;10922:18:0;;15677:32;10922:18;;;:9;:18;;;;;;15810:16;;15773:33;15800:6;10922:18;15773:33;:::i;:::-;:53;;15747:150;;;;-1:-1:-1;;;15747:150:0;;11990:2:1;15747:150:0;;;11972:21:1;12029:2;12009:18;;;12002:30;12068:34;12048:18;;;12041:62;-1:-1:-1;;;12119:18:1;;;12112:33;12162:19;;15747:150:0;11788:399:1;15747:150:0;15938:16;;;15952:1;15938:16;;;;;;;;15914:21;;15938:16;;;;;;;;-1:-1:-1;;15979:6:0;;:13;;;-1:-1:-1;;;15979:13:0;;;;15914:40;;-1:-1:-1;;;;;;15979:6:0;;;;:11;;-1:-1:-1;15979:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15969:4;15974:1;15969:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15969:23:0;;;-1:-1:-1;;;;;15969:23:0;;;;;16025:4;16007;16012:1;16007:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16007:23:0;;;:7;;;;;;;;;:23;16063:6;;:33;;-1:-1:-1;;;16063:33:0;;16045:15;;16063:6;;;;;:19;;:33;;16083:6;;16091:4;;16063:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16063:33:0;;;;;;;;;;;;:::i;:::-;16097:1;16063:36;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;16120:29:0;;;;;;:18;:29;;;;;;;;16063:36;;-1:-1:-1;16120:29:0;;:35;;:29;:35;:92;;;;-1:-1:-1;;;;;;16159:25:0;;;;;;:14;:25;;;;;;16197:15;;16159:35;;16187:7;16159:35;:::i;:::-;:53;16120:92;:116;;;;;16226:10;;16216:7;:20;16120:116;16116:618;;;16271:4;:16;;-1:-1:-1;;;;;;16271:16:0;-1:-1:-1;;;;;16271:16:0;;;;;;;;16306:10;:20;;;16362:15;16345:14;:32;16401:25;;;6222:51:1;;;6304:2;6289:18;;6282:34;;;16401:25:0;;6195:18:1;16401:25:0;;;;;;;16116:618;;;-1:-1:-1;;;;;16467:29:0;;;;;;:18;:29;;;;;;;;:36;;;:61;;;16518:10;;16508:7;:20;16467:61;16463:271;;;16563:4;:16;;-1:-1:-1;;;;;;16563:16:0;-1:-1:-1;;;;;16563:16:0;;;;;;;;16598:10;:20;;;16654:15;16637:14;:32;16693:25;;;6222:51:1;;;6304:2;6289:18;;6282:34;;;16693:25:0;;6195:18:1;16693:25:0;;;;;;;16463:271;15606:1139;;;15333:1412;5722:7;5749:6;-1:-1:-1;;;;;16773:17:0;;;5749:6;;16773:17;;;;:54;;-1:-1:-1;5722:7:0;5749:6;-1:-1:-1;;;;;16807:20:0;;;5749:6;;16807:20;;16773:54;:95;;;;-1:-1:-1;;;;;;16845:23:0;;;;;;:15;:23;;;;;;;;16844:24;16773:95;:126;;;;-1:-1:-1;16895:4:0;;-1:-1:-1;;;;;16885:14:0;;;16895:4;;16885:14;;16773:126;:169;;;;-1:-1:-1;;;;;;16916:26:0;;16937:4;16916:26;;16773:169;16755:397;;;16987:12;;16977:6;:22;;16969:41;;;;-1:-1:-1;;;16969:41:0;;11656:2:1;16969:41:0;;;11638:21:1;11695:1;11675:18;;;11668:29;-1:-1:-1;;;11713:18:1;;;11706:36;11759:18;;16969:41:0;11454:329:1;16969:41:0;17029:4;;-1:-1:-1;;;;;17029:14:0;;;:4;;:14;17025:113;;;17078:4;;17084:10;;17069:26;;;-1:-1:-1;;;;;17078:4:0;;;6222:51:1;;6304:2;6289:18;;6282:34;;;;17069:26:0;;6195:18:1;17069:26:0;;;;;;;17114:8;:6;:8::i;20617:342::-;-1:-1:-1;;;;;20754:19:0;;20728:4;20754:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;20777:22:0;;;;;;:11;:22;;;;;;;;20754:45;20750:90;;;-1:-1:-1;20823:5:0;20816:12;;20750:90;20864:4;;-1:-1:-1;;;;;20854:14:0;;;20864:4;;20854:14;;:35;;-1:-1:-1;20885:4:0;;-1:-1:-1;;;;;20872:17:0;;;20885:4;;20872:17;20854:35;20850:80;;;-1:-1:-1;20913:5:0;20906:12;;20850:80;-1:-1:-1;20947:4:0;20617:342;;;;:::o;20124:485::-;20288:4;;20244:7;;;;-1:-1:-1;;;;;20288:17:0;;;:4;;:17;:74;;20354:8;;20288:74;;;20321:17;;20288:74;20264:98;-1:-1:-1;20373:17:0;20393:34;20423:3;20393:25;:6;20264:98;20393:10;:25::i;:34::-;20483:4;20465:24;;;;:9;:24;;;;;;20373:54;;-1:-1:-1;20465:39:0;;20373:54;20465:28;:39::i;:::-;20456:4;20438:24;;;;:9;:24;;;;;;;:66;;;;20520:42;;-1:-1:-1;;;;;20520:42:0;;;;;;;20552:9;160:25:1;;148:2;133:18;;14:177;20520:42:0;;;;;;;;20580:21;:6;20591:9;20580:10;:21::i;:::-;20573:28;20124:485;-1:-1:-1;;;;;;20124:485:0:o;991:246::-;1049:7;1073:6;1069:47;;-1:-1:-1;1103:1:0;1096:8;;1069:47;1126:9;1138:5;1142:1;1138;:5;:::i;:::-;1126:17;-1:-1:-1;1171:1:0;1162:5;1166:1;1126:17;1162:5;:::i;:::-;:10;1154:56;;;;-1:-1:-1;;;1154:56:0;;14014:2:1;1154:56:0;;;13996:21:1;14053:2;14033:18;;;14026:30;14092:34;14072:18;;;14065:62;-1:-1:-1;;;14143:18:1;;;14136:31;14184:19;;1154:56:0;13812:397:1;1245:132:0;1303:7;1330:39;1334:1;1337;1330:39;;;;;;;;;;;;;;;;;:3;:39::i;13231:136::-;13276:15;;13269:4;:22;;-1:-1:-1;;;;;;13269:22:0;-1:-1:-1;;;;;13276:15:0;;;13269:22;;;;;;13276:15;13302:10;:14;13344:15;13327:14;:32;13231:136::o;1385:223::-;1505:7;1540:12;1533:5;1525:28;;;;-1:-1:-1;;;1525:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1564:9:0;1576:5;1580:1;1576;:5;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;934:315;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;2096:247::-;2155:6;2208:2;2196:9;2187:7;2183:23;2179:32;2176:52;;;2224:1;2221;2214:12;2176:52;2263:9;2250:23;2282:31;2307:5;2282:31;:::i;2348:118::-;2434:5;2427:13;2420:21;2413:5;2410:32;2400:60;;2456:1;2453;2446:12;2471:382;2536:6;2544;2597:2;2585:9;2576:7;2572:23;2568:32;2565:52;;;2613:1;2610;2603:12;2565:52;2652:9;2639:23;2671:31;2696:5;2671:31;:::i;:::-;2721:5;-1:-1:-1;2778:2:1;2763:18;;2750:32;2791:30;2750:32;2791:30;:::i;:::-;2840:7;2830:17;;;2471:382;;;;;:::o;2858:180::-;2917:6;2970:2;2958:9;2949:7;2945:23;2941:32;2938:52;;;2986:1;2983;2976:12;2938:52;-1:-1:-1;3009:23:1;;2858:180;-1:-1:-1;2858:180:1:o;3251:388::-;3319:6;3327;3380:2;3368:9;3359:7;3355:23;3351:32;3348:52;;;3396:1;3393;3386:12;3348:52;3435:9;3422:23;3454:31;3479:5;3454:31;:::i;:::-;3504:5;-1:-1:-1;3561:2:1;3546:18;;3533:32;3574:33;3533:32;3574:33;:::i;3644:316::-;3721:6;3729;3737;3790:2;3778:9;3769:7;3765:23;3761:32;3758:52;;;3806:1;3803;3796:12;3758:52;-1:-1:-1;;3829:23:1;;;3899:2;3884:18;;3871:32;;-1:-1:-1;3950:2:1;3935:18;;;3922:32;;3644:316;-1:-1:-1;3644:316:1:o;3965:309::-;4030:6;4038;4091:2;4079:9;4070:7;4066:23;4062:32;4059:52;;;4107:1;4104;4097:12;4059:52;4146:9;4133:23;4165:28;4187:5;4165:28;:::i;4505:356::-;4707:2;4689:21;;;4726:18;;;4719:30;4785:34;4780:2;4765:18;;4758:62;4852:2;4837:18;;4505:356::o;4866:127::-;4927:10;4922:3;4918:20;4915:1;4908:31;4958:4;4955:1;4948:15;4982:4;4979:1;4972:15;4998:128;5038:3;5069:1;5065:6;5062:1;5059:13;5056:39;;;5075:18;;:::i;:::-;-1:-1:-1;5111:9:1;;4998:128::o;5131:217::-;5171:1;5197;5187:132;;5241:10;5236:3;5232:20;5229:1;5222:31;5276:4;5273:1;5266:15;5304:4;5301:1;5294:15;5187:132;-1:-1:-1;5333:9:1;;5131:217::o;5708:335::-;5910:2;5892:21;;;5949:2;5929:18;;;5922:30;-1:-1:-1;;;5983:2:1;5968:18;;5961:41;6034:2;6019:18;;5708:335::o;6327:245::-;6394:6;6447:2;6435:9;6426:7;6422:23;6418:32;6415:52;;;6463:1;6460;6453:12;6415:52;6495:9;6489:16;6514:28;6536:5;6514:28;:::i;7685:125::-;7725:4;7753:1;7750;7747:8;7744:34;;;7758:18;;:::i;:::-;-1:-1:-1;7795:9:1;;7685:125::o;8495:127::-;8556:10;8551:3;8547:20;8544:1;8537:31;8587:4;8584:1;8577:15;8611:4;8608:1;8601:15;8627:127;8688:10;8683:3;8679:20;8676:1;8669:31;8719:4;8716:1;8709:15;8743:4;8740:1;8733:15;8759:251;8829:6;8882:2;8870:9;8861:7;8857:23;8853:32;8850:52;;;8898:1;8895;8888:12;8850:52;8930:9;8924:16;8949:31;8974:5;8949:31;:::i;9015:461::-;9068:3;9106:5;9100:12;9133:6;9128:3;9121:19;9159:4;9188:2;9183:3;9179:12;9172:19;;9225:2;9218:5;9214:14;9246:1;9256:195;9270:6;9267:1;9264:13;9256:195;;;9335:13;;-1:-1:-1;;;;;9331:39:1;9319:52;;9391:12;;;;9426:15;;;;9367:1;9285:9;9256:195;;;-1:-1:-1;9467:3:1;;9015:461;-1:-1:-1;;;;;9015:461:1:o;9481:582::-;9780:6;9769:9;9762:25;9823:6;9818:2;9807:9;9803:18;9796:34;9866:3;9861:2;9850:9;9846:18;9839:31;9743:4;9887:57;9939:3;9928:9;9924:19;9916:6;9887:57;:::i;:::-;-1:-1:-1;;;;;9980:32:1;;;;9975:2;9960:18;;9953:60;-1:-1:-1;10044:3:1;10029:19;10022:35;9879:65;9481:582;-1:-1:-1;;;9481:582:1:o;10890:306::-;10978:6;10986;10994;11047:2;11035:9;11026:7;11022:23;11018:32;11015:52;;;11063:1;11060;11053:12;11015:52;11092:9;11086:16;11076:26;;11142:2;11131:9;11127:18;11121:25;11111:35;;11186:2;11175:9;11171:18;11165:25;11155:35;;10890:306;;;;;:::o;12192:332::-;12399:6;12388:9;12381:25;12442:2;12437;12426:9;12422:18;12415:30;12362:4;12462:56;12514:2;12503:9;12499:18;12491:6;12462:56;:::i;:::-;12454:64;12192:332;-1:-1:-1;;;;12192:332:1:o;12529:1105::-;12624:6;12655:2;12698;12686:9;12677:7;12673:23;12669:32;12666:52;;;12714:1;12711;12704:12;12666:52;12747:9;12741:16;12776:18;12817:2;12809:6;12806:14;12803:34;;;12833:1;12830;12823:12;12803:34;12871:6;12860:9;12856:22;12846:32;;12916:7;12909:4;12905:2;12901:13;12897:27;12887:55;;12938:1;12935;12928:12;12887:55;12967:2;12961:9;12989:2;12985;12982:10;12979:36;;;12995:18;;:::i;:::-;13041:2;13038:1;13034:10;13073:2;13067:9;13136:2;13132:7;13127:2;13123;13119:11;13115:25;13107:6;13103:38;13191:6;13179:10;13176:22;13171:2;13159:10;13156:18;13153:46;13150:72;;;13202:18;;:::i;:::-;13238:2;13231:22;13288:18;;;13322:15;;;;-1:-1:-1;13364:11:1;;;13360:20;;;13392:19;;;13389:39;;;13424:1;13421;13414:12;13389:39;13448:11;;;;13468:135;13484:6;13479:3;13476:15;13468:135;;;13550:10;;13538:23;;13501:12;;;;13581;;;;13468:135;;;13622:6;12529:1105;-1:-1:-1;;;;;;;;12529:1105:1:o;13639:168::-;13679:7;13745:1;13741;13737:6;13733:14;13730:1;13727:21;13722:1;13715:9;13708:17;13704:45;13701:71;;;13752:18;;:::i;:::-;-1:-1:-1;13792:9:1;;13639:168::o

Swarm Source

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