ETH Price: $2,514.80 (+3.02%)

Token

Non Fungible Media Token (NFMToken)
 

Overview

Max Total Supply

1,000,000,000 NFMToken

Holders

78

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
13,160.181385265 NFMToken

Value
$0.00
0x5666ba60d132edf7341166edb2e733d79b4bcde2
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:
NFMToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSE
pragma solidity ^0.8.7;

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

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    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);
    }
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

    function WETH() external pure returns (address);

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

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

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

contract NFMToken is Context, IBEP20, Ownable {
    using Address for address payable;

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

    address[] private _excluded;

    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;

    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 30 seconds;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1e9 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 2_000_000 * 10**9;
    uint256 public maxBuyLimit = 10_000_000 * 10**9;
    uint256 public maxSellLimit = 10_000_000 * 10**9;
    uint256 public maxWalletLimit = 10_000_000 * 10**9;

    uint256 public genesis_block;
    uint256 private deadline = 3;

    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public marketingWallet = 0xDB2F2D0596bCE604933707513e75991B3AB887a9;
    address public devWallet = 0x808B0839B867f28365d9A6802643d0C53c2aaF2e;

    string private constant _name = "Non Fungible Media Token";
    string private constant _symbol = "NFMToken";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 dev;
    }

    Taxes public taxes = Taxes(2, 4, 2, 0);
    Taxes public sellTaxes = Taxes(2, 4, 2, 0);
    Taxes private launchtax = Taxes(0, 99, 0, 0);

    struct TotFeesPaidStruct {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 dev;
    }

    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues {
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rRfi;
        uint256 rMarketing;
        uint256 rLiquidity;
        uint256 rDev;
        uint256 tTransferAmount;
        uint256 tRfi;
        uint256 tMarketing;
        uint256 tLiquidity;
        uint256 tDev;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    constructor(address routerAddress) {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;

        excludeFromReward(pair);
        excludeFromReward(deadWallet);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[devWallet] = true;
        _isExcludedFromFee[deadWallet] = true;
        _isExcludedFromFee[0x71B5759d73262FBb223956913ecF4ecC51057641] = true;
        _isExcludedFromFee[0xD152f549545093347A162Dce210e7293f1452150] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    //std BEP20:
    function name() public pure returns (string memory) {
        return _name;
    }

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

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

    //override BEP20:
    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "BEP20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false, false);
            return s.rTransferAmount;
        }
    }

    function EnableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require(_deadline < 5,"Deadline should be less than 5 Blocks");
        deadline = _deadline;
    }

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

    //@dev kept original RFI naming -> "reward" as in reflection
    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

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

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function setTaxes(
        uint256 _rfi,
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) public onlyOwner {
        require((_rfi + _marketing + _liquidity + _dev ) <= 20, "Must keep fees at 20% or less");
        taxes = Taxes(_rfi, _marketing, _liquidity, _dev);
        emit FeesChanged();
    }

    function setSellTaxes(
        uint256 _rfi,
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) public onlyOwner {
        require((_rfi + _marketing + _liquidity + _dev ) <= 20, "Must keep fees at 20% or less");
        sellTaxes = Taxes(_rfi, _marketing, _liquidity, _dev);
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -= rRfi;
        totFeesPaid.rfi += tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity += tLiquidity;

        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] += tLiquidity;
        }
        _rOwned[address(this)] += rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing += tMarketing;

        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] += tMarketing;
        }
        _rOwned[address(this)] += rMarketing;
    }

    function _takeDev(uint256 rDev, uint256 tDev) private {
        totFeesPaid.dev += tDev;

        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] += tDev;
        }
        _rOwned[address(this)] += rDev;
    }

    function _getValues(
        uint256 tAmount,
        bool takeFee,
        bool isSell,
        bool useLaunchTax
    ) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell, useLaunchTax);
        (
            to_return.rAmount,
            to_return.rTransferAmount,
            to_return.rRfi,
            to_return.rMarketing,
            to_return.rLiquidity
        ) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rDev) = _getRValues2(
            to_return,
            takeFee,
            _getRate()
        );

        return to_return;
    }

    function _getTValues(
        uint256 tAmount,
        bool takeFee,
        bool isSell,
        bool useLaunchTax
    ) private view returns (valuesFromGetValues memory s) {
        if (!takeFee) {
            s.tTransferAmount = tAmount;
            return s;
        }
        Taxes memory temp;
        if (isSell && !useLaunchTax) temp = sellTaxes;
        else if (!useLaunchTax) temp = taxes;
        else temp = launchtax;

        s.tRfi = (tAmount * temp.rfi) / 100;
        s.tMarketing = (tAmount * temp.marketing) / 100;
        s.tLiquidity = (tAmount * temp.liquidity) / 100;
        s.tDev = (tAmount * temp.dev) / 100;
        s.tTransferAmount =
            tAmount -
            s.tRfi -
            s.tMarketing -
            s.tLiquidity -
            s.tDev ;
        return s;
    }

    function _getRValues1(
        valuesFromGetValues memory s,
        uint256 tAmount,
        bool takeFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rRfi,
            uint256 rMarketing,
            uint256 rLiquidity
        )
    {
        rAmount = tAmount * currentRate;

        if (!takeFee) {
            return (rAmount, rAmount, 0, 0, 0);
        }

        rRfi = s.tRfi * currentRate;
        rMarketing = s.tMarketing * currentRate;
        rLiquidity = s.tLiquidity * currentRate;
        uint256 rDev = s.tDev * currentRate;
        rTransferAmount =
            rAmount -
            rRfi -
            rMarketing -
            rLiquidity -
            rDev ;
        return (rAmount, rTransferAmount, rRfi, rMarketing, rLiquidity);
    }

    function _getRValues2(
        valuesFromGetValues memory s,
        bool takeFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256 rDev
        )
    {
        if (!takeFee) {
            return (0);
        }

        rDev = s.tDev * currentRate;
        return (rDev);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply)
                return (_rTotal, _tTotal);
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "BEP20: transfer from the zero address");
        require(to != address(0), "BEP20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            amount <= balanceOf(from),
            "You are trying to transfer more than your balance"
        );

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(tradingEnabled, "Trading not active");
        }

        if (from == pair && !_isExcludedFromFee[to] && !swapping) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(to) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (to != pair) {
                require(
                    balanceOf(to) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
            if (coolDownEnabled) {
                uint256 timePassed = block.timestamp - _lastSell[from];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[from] = block.timestamp;
            }
        }

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if (
            !swapping &&
            swapEnabled &&
            canSwap &&
            from != pair &&
            !_isExcludedFromFee[from] &&
            !_isExcludedFromFee[to]
        ) {
            if (to == pair) swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if (swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if (to == pair) isSell = true;

        _tokenTransfer(from, to, amount, takeFee, isSell);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool isSell
    ) private {
        bool useLaunchTax = !_isExcludedFromFee[sender] &&
            !_isExcludedFromFee[recipient] &&
            block.number < genesis_block + deadline;

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell, useLaunchTax);

        if (_isExcluded[sender]) {
            //from excluded
            _tOwned[sender] = _tOwned[sender] - tAmount;
        }
        if (_isExcluded[recipient]) {
            //to excluded
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender] - s.rAmount;
        _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount;

        if (s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if (s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity, s.tLiquidity);
            emit Transfer(
                sender,
                address(this),
                s.tLiquidity + s.tMarketing + s.tDev 
            );
        }
        if (s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if (s.rDev > 0 || s.tDev > 0) _takeDev(s.rDev, s.tDev);
        emit Transfer(sender, recipient, s.tTransferAmount);
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap {
        uint256 denominator = (temp.liquidity +
            temp.marketing +
            temp.dev ) * 2;

        if (denominator == 0){
            return;
        }

        uint256 tokensToAddLiquidityWith = (contractBalance * temp.liquidity) / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance = deltaBalance / (denominator - temp.liquidity);
        uint256 bnbToAddLiquidityWith = unitBalance * temp.liquidity;

        if (bnbToAddLiquidityWith > 0) {
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if (marketingAmt > 0) {
            payable(marketingWallet).sendValue(marketingAmt);
        }

        uint256 devAmt = unitBalance * 2 * temp.dev;
        if (devAmt > 0) {
            payable(devWallet).sendValue(devAmt);
        }
    }

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

        // add the liquidity
        router.addLiquidityETH{ value: bnbAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForBNB(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

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

    function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        devWallet = newWallet;
    }

    function updateCooldown(bool state, uint256 time) external onlyOwner {
        require(time <= 60, "cooldown timer cannot exceed 1 minutes");
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner {
        require(amount <= 10_000_000, "Cannot set swap threshold amount higher than 1% of tokens");
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner {
        swapEnabled = _enabled;
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 1_000_000, "Cannot set max buy amount lower than 0.1% of tokens");
        require(maxSell >= 1_000_000, "Cannot set max sell amount lower than 0.1% of tokens%");
        require(maxWallet >= 1_000_000, "Cannot set max wallet amount lower than 0.1% of tokens");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

    //Use this in case BNB are sent to the contract by mistake
    function rescueBNB(uint256 weiAmount) external onlyOwner {
        require(address(this).balance >= weiAmount, "insufficient BNB balance");
        payable(msg.sender).transfer(weiAmount);
    }

    //Use this in case BEP20 Tokens are sent to the contract by mistake
    function rescueAnyBEP20Tokens(address _tokenAddr,address _to, uint256 _amount) public onlyOwner {
        require(_tokenAddr != address(this), "Owner can't claim contract's balance of its own tokens");
        IBEP20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009805460ff19166001178155601e600a908155620000249190620009e5565b6200003490633b9aca0062000aa6565b600d819055620000479060001962000b00565b620000559060001962000ac8565b600e5566071afd498d0000600f55662386f26fc10000601081905560118190556012556003601455601580546001600160a01b031990811661dead1790915560168054821673db2f2d0596bce604933707513e75991b3ab887a91790556017805490911673808b0839b867f28365d9a6802643d0c53c2aaf2e17905560408051608080820183526002808352600460208085018290528486018390526000606095860181905260188490556019839055601a849055601b819055865180860188528481528083018490528088018590528601819052601c849055601d92909255601e92909255601f819055845192830185528083526063838301819052948301819052919092018190529081905560219190915560228190556023553480156200017e57600080fd5b506040516200442038038062004420833981016040819052620001a1916200095a565b620001ac3362000530565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ed57600080fd5b505afa15801562000202573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022891906200095a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027157600080fd5b505afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac91906200095a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002f557600080fd5b505af11580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033091906200095a565b600b80546001600160a01b038086166001600160a01b031992831617909255600c805492841692909116821790559091506200036c9062000580565b60155462000383906001600160a01b031662000580565b600e54600160006200039d6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff1916600190811790915591620003ec6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601654821681526004909352818320805485166001908117909155601754821684528284208054861682179055601554909116835290822080548416821790557f181b38dae107ad7a36f51e654ef972d6c41d165bcb40c2dfb49fb5e641e8f466805484168217905573d152f549545093347a162dce210e7293f14521509091527f2fc42e7588b4edb66ce07fb3609ffa59834fccc36ebe8aae6c36eab91742a4d08054909216179055620004d76000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040516200051f91815260200190565b60405180910390a350505062000b59565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620005e05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16156200064b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620005d7565b6001600160a01b03811660009081526001602052604090205415620006a8576001600160a01b0381166000908152600160205260409020546200068e906200070e565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000600e54821115620007775760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620005d7565b60006200078362000798565b905062000791818462000985565b9392505050565b60008080620007a6620007be565b9092509050620007b7818362000985565b9250505090565b600e54600d546000918291825b6006548110156200092657826001600060068481548110620007f157620007f162000b43565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000860575081600260006006848154811062000839576200083962000b43565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200087757600e54600d54945094505050509091565b600160006006838154811062000891576200089162000b43565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008c2908462000ac8565b92506002600060068381548110620008de57620008de62000b43565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200090f908362000ac8565b9150806200091d8162000ae2565b915050620007cb565b50600d54600e5462000939919062000985565b8210156200095157600e54600d549350935050509091565b90939092509050565b6000602082840312156200096d57600080fd5b81516001600160a01b03811681146200079157600080fd5b60008262000997576200099762000b2d565b500490565b600181815b80851115620009dd578160001904821115620009c157620009c162000b17565b80851615620009cf57918102915b93841c9390800290620009a1565b509250929050565b60006200079160ff84168360008262000a015750600162000aa0565b8162000a105750600062000aa0565b816001811462000a29576002811462000a345762000a54565b600191505062000aa0565b60ff84111562000a485762000a4862000b17565b50506001821b62000aa0565b5060208310610133831016604e8410600b841016171562000a79575081810a62000aa0565b62000a8583836200099c565b806000190482111562000a9c5762000a9c62000b17565b0290505b92915050565b600081600019048311821515161562000ac35762000ac362000b17565b500290565b60008282101562000add5762000add62000b17565b500390565b600060001982141562000af95762000af962000b17565b5060010190565b60008262000b125762000b1262000b2d565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6138b78062000b696000396000f3fe60806040526004361061031e5760003560e01c806375f0a874116101ab578063aacebbe3116100f7578063ea2f0b3711610095578063f2fde38b1161006f578063f2fde38b146109d5578063f480fec2146109f5578063f66895a314610a15578063f887ea4014610a3857600080fd5b8063ea2f0b371461097b578063edaa11681461099b578063ee36e359146109bb57600080fd5b8063dd62ed3e116100d1578063dd62ed3e146108df578063e1b450ad14610925578063e2f4560514610945578063e517f2b91461095b57600080fd5b8063aacebbe314610889578063d257b34f146108a9578063d2ce0db2146108c957600080fd5b8063924de9b711610164578063a12a7d611161013e578063a12a7d6114610809578063a457c2d714610829578063a8aa1b3114610849578063a9059cbb1461086957600080fd5b8063924de9b71461079557806395d89b41146107b55780639ba5e4d5146107e657600080fd5b806375f0a874146106a657806385141a77146106de57806388f82020146106fe5780638da5cb5b146107375780638e2839ff146107555780638ea5220f1461077557600080fd5b8063441b1d301161026a578063652e2f04116102235780636ddd1713116101fd5780636ddd17131461060f57806370a082311461062e578063715018a61461064e578063728f8eea1461066357600080fd5b8063652e2f04146105cd57806366a88d96146105e35780636aa5b37f146105f957600080fd5b8063441b1d30146104fa5780634549b0391461051a57806347c230921461053a5780634ada218b1461055a57806352390c02146105745780635342acb41461059457600080fd5b8063274a533c116102d75780633685d419116102b15780633685d4191461047a578063395093511461049a57806340b28c2f146104ba578063437823ec146104da57600080fd5b8063274a533c146104285780632d8381191461043e578063313ce5671461045e57600080fd5b806306fdde031461032a578063095ea7b31461038257806318160ddd146103b25780631816467f146103d15780631d97b7cd146103f357806323b872dd1461040857600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5060408051808201909152601881527f4e6f6e2046756e6769626c65204d6564696120546f6b656e000000000000000060208201525b6040516103799190613550565b60405180910390f35b34801561038e57600080fd5b506103a261039d366004613324565b610a58565b6040519015158152602001610379565b3480156103be57600080fd5b50600d545b604051908152602001610379565b3480156103dd57600080fd5b506103f16103ec366004613270565b610a6f565b005b3480156103ff57600080fd5b506103f1610aea565b34801561041457600080fd5b506103a26104233660046132e3565b610b7c565b34801561043457600080fd5b506103c360135481565b34801561044a57600080fd5b506103c3610459366004613486565b610c2f565b34801561046a57600080fd5b5060405160098152602001610379565b34801561048657600080fd5b506103f1610495366004613270565b610cac565b3480156104a657600080fd5b506103a26104b5366004613324565b610e63565b3480156104c657600080fd5b506103f16104d53660046132aa565b610e9a565b3480156104e657600080fd5b506103f16104f5366004613270565b610ef2565b34801561050657600080fd5b506103f1610515366004613486565b610f40565b34801561052657600080fd5b506103c361053536600461349f565b610fe7565b34801561054657600080fd5b506103f16105553660046132e3565b611077565b34801561056657600080fd5b506007546103a29060ff1681565b34801561058057600080fd5b506103f161058f366004613270565b6111a1565b3480156105a057600080fd5b506103a26105af366004613270565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105d957600080fd5b506103c360115481565b3480156105ef57600080fd5b506103c360125481565b34801561060557600080fd5b506103c360105481565b34801561061b57600080fd5b506007546103a290610100900460ff1681565b34801561063a57600080fd5b506103c3610649366004613270565b6112f4565b34801561065a57600080fd5b506103f1611353565b34801561066f57600080fd5b50601854601954601a54601b546106869392919084565b604080519485526020850193909352918301526060820152608001610379565b3480156106b257600080fd5b506016546106c6906001600160a01b031681565b6040516001600160a01b039091168152602001610379565b3480156106ea57600080fd5b506015546106c6906001600160a01b031681565b34801561070a57600080fd5b506103a2610719366004613270565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561074357600080fd5b506000546001600160a01b03166106c6565b34801561076157600080fd5b506103f1610770366004613350565b611389565b34801561078157600080fd5b506017546106c6906001600160a01b031681565b3480156107a157600080fd5b506103f16107b036600461342e565b61141f565b3480156107c157600080fd5b50604080518082019091526008815267272326aa37b5b2b760c11b602082015261036c565b3480156107f257600080fd5b506024546025546026546027546106869392919084565b34801561081557600080fd5b506103f161082436600461351e565b611463565b34801561083557600080fd5b506103a2610844366004613324565b61155e565b34801561085557600080fd5b50600c546106c6906001600160a01b031681565b34801561087557600080fd5b506103a2610884366004613324565b6115f9565b34801561089557600080fd5b506103f16108a4366004613270565b611606565b3480156108b557600080fd5b506103f16108c4366004613486565b611678565b3480156108d557600080fd5b506103c3600a5481565b3480156108eb57600080fd5b506103c36108fa3660046132aa565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561093157600080fd5b506103f16109403660046134c4565b611737565b34801561095157600080fd5b506103c3600f5481565b34801561096757600080fd5b506103f1610976366004613468565b611903565b34801561098757600080fd5b506103f1610996366004613270565b6119af565b3480156109a757600080fd5b506103f16109b6366004613486565b6119fa565b3480156109c757600080fd5b506009546103a29060ff1681565b3480156109e157600080fd5b506103f16109f0366004613270565b611ae8565b348015610a0157600080fd5b506103f1610a1036600461351e565b611b83565b348015610a2157600080fd5b50601c54601d54601e54601f546106869392919084565b348015610a4457600080fd5b50600b546106c6906001600160a01b031681565b6000610a65338484611c7e565b5060015b92915050565b6000546001600160a01b03163314610aa25760405162461bcd60e51b8152600401610a99906135e7565b60405180910390fd5b6001600160a01b038116610ac85760405162461bcd60e51b8152600401610a99906135a5565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b145760405162461bcd60e51b8152600401610a99906135e7565b60075460ff1615610b675760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610a99565b6007805461ffff191661010117905543601355565b6000610b89848484611da2565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610c0e5760405162461bcd60e51b815260206004820152602860248201527f42455032303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a99565b610c228533610c1d86856137d4565b611c7e565b60019150505b9392505050565b6000600e54821115610c965760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a99565b6000610ca0612462565b9050610c2881846136a5565b6000546001600160a01b03163314610cd65760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b03811660009081526005602052604090205460ff16610d3e5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610a99565b60005b600654811015610e5f57816001600160a01b031660068281548110610d6857610d68613832565b6000918252602090912001546001600160a01b03161415610e4d5760068054610d93906001906137d4565b81548110610da357610da3613832565b600091825260209091200154600680546001600160a01b039092169183908110610dcf57610dcf613832565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610e2757610e2761381c565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610e57816137eb565b915050610d41565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a65918590610c1d90869061368d565b6000546001600160a01b03163314610ec45760405162461bcd60e51b8152600401610a99906135e7565b600b80546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b6000546001600160a01b03163314610f1c5760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610f6a5760405162461bcd60e51b8152600401610a99906135e7565b80471015610fba5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610a99565b604051339082156108fc029083906000818181858888f19350505050158015610e5f573d6000803e3d6000fd5b6000600d5483111561103b5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a99565b8161105a576000611050846001600080612485565b519150610a699050565b600061106a846001600080612485565b602001519150610a699050565b6000546001600160a01b031633146110a15760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b0383163014156111195760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610a99565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561116357600080fd5b505af1158015611177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119b919061344b565b50505050565b6000546001600160a01b031633146111cb5760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b03811660009081526005602052604090205460ff16156112345760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a99565b6001600160a01b0381166000908152600160205260409020541561128e576001600160a01b03811660009081526001602052604090205461127490610c2f565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff161561133157506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a6990610c2f565b6000546001600160a01b0316331461137d5760405162461bcd60e51b8152600401610a99906135e7565b61138760006124e4565b565b6000546001600160a01b031633146113b35760405162461bcd60e51b8152600401610a99906135e7565b60005b825181101561141a5781600460008584815181106113d6576113d6613832565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611412816137eb565b9150506113b6565b505050565b6000546001600160a01b031633146114495760405162461bcd60e51b8152600401610a99906135e7565b600780549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461148d5760405162461bcd60e51b8152600401610a99906135e7565b6014818361149b868861368d565b6114a5919061368d565b6114af919061368d565b11156114fd5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610a99565b604080516080810182528581526020810185905280820184905260600182905260188590556019849055601a839055601b829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156115e05760405162461bcd60e51b815260206004820152602560248201527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a99565b6115ef3385610c1d86856137d4565b5060019392505050565b6000610a65338484611da2565b6000546001600160a01b031633146116305760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b0381166116565760405162461bcd60e51b8152600401610a99906135a5565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116a25760405162461bcd60e51b8152600401610a99906135e7565b6298968081111561171b5760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e73000000000000006064820152608401610a99565b6117276009600a61370a565b61173190826137b5565b600f5550565b6000546001600160a01b031633146117615760405162461bcd60e51b8152600401610a99906135e7565b620f42408310156117d05760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152727468616e20302e3125206f6620746f6b656e7360681b6064820152608401610a99565b620f42408210156118415760405162461bcd60e51b815260206004820152603560248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015274207468616e20302e3125206f6620746f6b656e732560581b6064820152608401610a99565b620f42408110156118b35760405162461bcd60e51b815260206004820152603660248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152756572207468616e20302e3125206f6620746f6b656e7360501b6064820152608401610a99565b6118bf6009600a61370a565b6118c990846137b5565b6010556118d86009600a61370a565b6118e290836137b5565b6011556118f16009600a61370a565b6118fb90826137b5565b601255505050565b6000546001600160a01b0316331461192d5760405162461bcd60e51b8152600401610a99906135e7565b603c81111561198d5760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d604482015265696e7574657360d01b6064820152608401610a99565b6119988160016137b5565b600a55506009805460ff1916911515919091179055565b6000546001600160a01b031633146119d95760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611a245760405162461bcd60e51b8152600401610a99906135e7565b60075460ff1615611a855760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610a99565b60058110611ae35760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b6064820152608401610a99565b601455565b6000546001600160a01b03163314611b125760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b038116611b775760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a99565b611b80816124e4565b50565b6000546001600160a01b03163314611bad5760405162461bcd60e51b8152600401610a99906135e7565b60148183611bbb868861368d565b611bc5919061368d565b611bcf919061368d565b1115611c1d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610a99565b6040805160808101825285815260208101859052808201849052606001829052601c859055601d849055601e839055601f829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b038316611ce05760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a99565b6001600160a01b038216611d415760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a99565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e065760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a99565b6001600160a01b038216611e685760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a99565b60008111611eca5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a99565b611ed3836112f4565b811115611f3c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610a99565b6001600160a01b03831660009081526004602052604090205460ff16158015611f7e57506001600160a01b03821660009081526004602052604090205460ff16155b15611fca5760075460ff16611fca5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610a99565b600c546001600160a01b03848116911614801561200057506001600160a01b03821660009081526004602052604090205460ff16155b8015612015575060075462010000900460ff16155b156120d15760105481111561206c5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610a99565b60125481612079846112f4565b612083919061368d565b11156120d15760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610a99565b600c546001600160a01b0384811691161480159061210857506001600160a01b03821660009081526004602052604090205460ff16155b801561212d57506001600160a01b03831660009081526004602052604090205460ff16155b8015612142575060075462010000900460ff16155b156122a5576011548111156121995760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610a99565b600c546001600160a01b0383811691161461221357601254816121bb846112f4565b6121c5919061368d565b11156122135760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610a99565b60095460ff16156122a5576001600160a01b03831660009081526008602052604081205461224190426137d4565b9050600a548110156122885760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610a99565b506001600160a01b03831660009081526008602052604090204290555b6000600f546122b3306112f4565b600754911115915062010000900460ff161580156122d85750600754610100900460ff165b80156122e15750805b80156122fb5750600c546001600160a01b03858116911614155b801561232057506001600160a01b03841660009081526004602052604090205460ff16155b801561234557506001600160a01b03831660009081526004602052604090205460ff16155b156123d157600c546001600160a01b038481169116141561239b57600f5460408051608081018252601c548152601d546020820152601e5491810191909152601f5460608201526123969190612534565b6123d1565b600f546040805160808101825260185481526019546020820152601a5491810191909152601b5460608201526123d19190612534565b60075460019060009062010000900460ff168061240657506001600160a01b03861660009081526004602052604090205460ff165b8061242957506001600160a01b03851660009081526004602052604090205460ff165b1561243357600091505b600c546001600160a01b038681169116141561244d575060015b61245a868686858561269a565b505050505050565b600080600061246f6129c7565b909250905061247e81836136a5565b9250505090565b61248d6131fb565b61249985858585612b4a565b90506124ae8186866124a9612462565b612cf9565b608086015260608501526040840152602083015281526124d681856124d1612462565b612da8565b60a08201525b949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805462ff0000191662010000179055606081015160208201516040830151600092916125619161368d565b61256b919061368d565b6125769060026137b5565b905080612583575061268a565b60008183604001518561259691906137b5565b6125a091906136a5565b905060006125ae82866137d4565b9050476125ba82612dc8565b60006125c682476137d4565b905060008660400151866125da91906137d4565b6125e490836136a5565b905060008760400151826125f891906137b5565b9050801561260a5761260a8682612f29565b602088015160009061261d8460026137b5565b61262791906137b5565b9050801561264557601654612645906001600160a01b03168261300d565b60608901516000906126588560026137b5565b61266291906137b5565b9050801561268057601754612680906001600160a01b03168261300d565b5050505050505050505b50506007805462ff000019169055565b6001600160a01b03851660009081526004602052604081205460ff161580156126dc57506001600160a01b03851660009081526004602052604090205460ff16155b80156126f657506014546013546126f3919061368d565b43105b9050600061270685858585612485565b6001600160a01b03881660009081526005602052604090205490915060ff1615612768576001600160a01b03871660009081526002602052604090205461274e9086906137d4565b6001600160a01b0388166000908152600260205260409020555b6001600160a01b03861660009081526005602052604090205460ff16156127cb5760c08101516001600160a01b0387166000908152600260205260409020546127b1919061368d565b6001600160a01b0387166000908152600260205260409020555b80516001600160a01b0388166000908152600160205260409020546127f091906137d4565b6001600160a01b0380891660009081526001602090815260408083209490945584015191891681529190912054612827919061368d565b6001600160a01b0387166000908152600160205260409081902091909155810151151580612859575060008160e00151115b156128705761287081604001518260e00151613126565b60008160800151118061288857506000816101200151115b1561290d576128a0816080015182610120015161315b565b306001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361014001518461010001518561012001516128f1919061368d565b6128fb919061368d565b60405190815260200160405180910390a35b60008160600151118061292557506000816101000151115b1561293d5761293d81606001518261010001516131d1565b60008160a00151118061295557506000816101400151115b1561296d5761296d8160a001518261014001516131e6565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c001516040516129b691815260200190565b60405180910390a350505050505050565b600e54600d546000918291825b600654811015612b19578260016000600684815481106129f6576129f6613832565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a615750816002600060068481548110612a3a57612a3a613832565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612a7757600e54600d54945094505050509091565b6001600060068381548110612a8e57612a8e613832565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612abd90846137d4565b92506002600060068381548110612ad657612ad6613832565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b0590836137d4565b915080612b11816137eb565b9150506129d4565b50600d54600e54612b2a91906136a5565b821015612b4157600e54600d549350935050509091565b90939092509050565b612b526131fb565b83612b635760c081018590526124dc565b612b8e6040518060800160405280600081526020016000815260200160008152602001600081525090565b838015612b99575082155b15612bcd575060408051608081018252601c548152601d546020820152601e5491810191909152601f546060820152612c2c565b82612c0157506040805160808101825260185481526019546020820152601a5491810191909152601b546060820152612c2c565b5060408051608081018252602080548252602154908201526022549181019190915260235460608201525b8051606490612c3b90886137b5565b612c4591906136a5565b60e08301526020810151606490612c5c90886137b5565b612c6691906136a5565b6101008301526040810151606490612c7e90886137b5565b612c8891906136a5565b6101208301526060810151606490612ca090886137b5565b612caa91906136a5565b610140830181905261012083015161010084015160e0850151612ccd908a6137d4565b612cd791906137d4565b612ce191906137d4565b612ceb91906137d4565b60c083015250949350505050565b600080808080612d0986896137b5565b945086612d2157508392506000915081905080612d9d565b858960e00151612d3191906137b5565b925085896101000151612d4491906137b5565b915085896101200151612d5791906137b5565b90506000868a6101400151612d6c91906137b5565b9050808284612d7b878a6137d4565b612d8591906137d4565b612d8f91906137d4565b612d9991906137d4565b9450505b945094509450945094565b600082612db757506000610c28565b818461014001516124dc91906137b5565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612dfd57612dfd613832565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612e5157600080fd5b505afa158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e89919061328d565b81600181518110612e9c57612e9c613832565b6001600160a01b039283166020918202929092010152600b54612ec29130911684611c7e565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612efb90859060009086903090429060040161361c565b600060405180830381600087803b158015612f1557600080fd5b505af115801561245a573d6000803e3d6000fd5b600b54612f419030906001600160a01b031684611c7e565b600b546001600160a01b031663f305d719823085600080612f6a6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015612fcd57600080fd5b505af1158015612fe1573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061300691906134f0565b5050505050565b8047101561305d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a99565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146130aa576040519150601f19603f3d011682016040523d82523d6000602084013e6130af565b606091505b505090508061141a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610a99565b81600e600082825461313891906137d4565b90915550506024805482919060009061315290849061368d565b90915550505050565b8060246002016000828254613170919061368d565b90915550503060009081526005602052604090205460ff16156131b25730600090815260026020526040812080548392906131ac90849061368d565b90915550505b306000908152600160205260408120805484929061315290849061368d565b8060246001016000828254613170919061368d565b8060246003016000828254613170919061368d565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356132608161385e565b919050565b803561326081613873565b60006020828403121561328257600080fd5b8135610c288161385e565b60006020828403121561329f57600080fd5b8151610c288161385e565b600080604083850312156132bd57600080fd5b82356132c88161385e565b915060208301356132d88161385e565b809150509250929050565b6000806000606084860312156132f857600080fd5b83356133038161385e565b925060208401356133138161385e565b929592945050506040919091013590565b6000806040838503121561333757600080fd5b82356133428161385e565b946020939093013593505050565b6000806040838503121561336357600080fd5b823567ffffffffffffffff8082111561337b57600080fd5b818501915085601f83011261338f57600080fd5b81356020828211156133a3576133a3613848565b8160051b604051601f19603f830116810181811086821117156133c8576133c8613848565b604052838152828101945085830182870184018b10156133e757600080fd5b600096505b84871015613411576133fd81613255565b8652600196909601959483019483016133ec565b5096506134219050878201613265565b9450505050509250929050565b60006020828403121561344057600080fd5b8135610c2881613873565b60006020828403121561345d57600080fd5b8151610c2881613873565b6000806040838503121561347b57600080fd5b823561334281613873565b60006020828403121561349857600080fd5b5035919050565b600080604083850312156134b257600080fd5b8235915060208301356132d881613873565b6000806000606084860312156134d957600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561350557600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561353457600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b8181101561357d57858101830151858201604001528201613561565b8181111561358f576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561366c5784516001600160a01b031683529383019391830191600101613647565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156136a0576136a0613806565b500190565b6000826136c257634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156137025781600019048211156136e8576136e8613806565b808516156136f557918102915b93841c93908002906136cc565b509250929050565b6000610c2860ff84168360008261372357506001610a69565b8161373057506000610a69565b816001811461374657600281146137505761376c565b6001915050610a69565b60ff84111561376157613761613806565b50506001821b610a69565b5060208310610133831016604e8410600b841016171561378f575081810a610a69565b61379983836136c7565b80600019048211156137ad576137ad613806565b029392505050565b60008160001904831182151516156137cf576137cf613806565b500290565b6000828210156137e6576137e6613806565b500390565b60006000198214156137ff576137ff613806565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611b8057600080fd5b8015158114611b8057600080fdfea26469706673582212200875f603b4d86b5d9bb222b13be7320b693aa1d9d6c598e8303d0132ea5bd57064736f6c634300080700330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x60806040526004361061031e5760003560e01c806375f0a874116101ab578063aacebbe3116100f7578063ea2f0b3711610095578063f2fde38b1161006f578063f2fde38b146109d5578063f480fec2146109f5578063f66895a314610a15578063f887ea4014610a3857600080fd5b8063ea2f0b371461097b578063edaa11681461099b578063ee36e359146109bb57600080fd5b8063dd62ed3e116100d1578063dd62ed3e146108df578063e1b450ad14610925578063e2f4560514610945578063e517f2b91461095b57600080fd5b8063aacebbe314610889578063d257b34f146108a9578063d2ce0db2146108c957600080fd5b8063924de9b711610164578063a12a7d611161013e578063a12a7d6114610809578063a457c2d714610829578063a8aa1b3114610849578063a9059cbb1461086957600080fd5b8063924de9b71461079557806395d89b41146107b55780639ba5e4d5146107e657600080fd5b806375f0a874146106a657806385141a77146106de57806388f82020146106fe5780638da5cb5b146107375780638e2839ff146107555780638ea5220f1461077557600080fd5b8063441b1d301161026a578063652e2f04116102235780636ddd1713116101fd5780636ddd17131461060f57806370a082311461062e578063715018a61461064e578063728f8eea1461066357600080fd5b8063652e2f04146105cd57806366a88d96146105e35780636aa5b37f146105f957600080fd5b8063441b1d30146104fa5780634549b0391461051a57806347c230921461053a5780634ada218b1461055a57806352390c02146105745780635342acb41461059457600080fd5b8063274a533c116102d75780633685d419116102b15780633685d4191461047a578063395093511461049a57806340b28c2f146104ba578063437823ec146104da57600080fd5b8063274a533c146104285780632d8381191461043e578063313ce5671461045e57600080fd5b806306fdde031461032a578063095ea7b31461038257806318160ddd146103b25780631816467f146103d15780631d97b7cd146103f357806323b872dd1461040857600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5060408051808201909152601881527f4e6f6e2046756e6769626c65204d6564696120546f6b656e000000000000000060208201525b6040516103799190613550565b60405180910390f35b34801561038e57600080fd5b506103a261039d366004613324565b610a58565b6040519015158152602001610379565b3480156103be57600080fd5b50600d545b604051908152602001610379565b3480156103dd57600080fd5b506103f16103ec366004613270565b610a6f565b005b3480156103ff57600080fd5b506103f1610aea565b34801561041457600080fd5b506103a26104233660046132e3565b610b7c565b34801561043457600080fd5b506103c360135481565b34801561044a57600080fd5b506103c3610459366004613486565b610c2f565b34801561046a57600080fd5b5060405160098152602001610379565b34801561048657600080fd5b506103f1610495366004613270565b610cac565b3480156104a657600080fd5b506103a26104b5366004613324565b610e63565b3480156104c657600080fd5b506103f16104d53660046132aa565b610e9a565b3480156104e657600080fd5b506103f16104f5366004613270565b610ef2565b34801561050657600080fd5b506103f1610515366004613486565b610f40565b34801561052657600080fd5b506103c361053536600461349f565b610fe7565b34801561054657600080fd5b506103f16105553660046132e3565b611077565b34801561056657600080fd5b506007546103a29060ff1681565b34801561058057600080fd5b506103f161058f366004613270565b6111a1565b3480156105a057600080fd5b506103a26105af366004613270565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105d957600080fd5b506103c360115481565b3480156105ef57600080fd5b506103c360125481565b34801561060557600080fd5b506103c360105481565b34801561061b57600080fd5b506007546103a290610100900460ff1681565b34801561063a57600080fd5b506103c3610649366004613270565b6112f4565b34801561065a57600080fd5b506103f1611353565b34801561066f57600080fd5b50601854601954601a54601b546106869392919084565b604080519485526020850193909352918301526060820152608001610379565b3480156106b257600080fd5b506016546106c6906001600160a01b031681565b6040516001600160a01b039091168152602001610379565b3480156106ea57600080fd5b506015546106c6906001600160a01b031681565b34801561070a57600080fd5b506103a2610719366004613270565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561074357600080fd5b506000546001600160a01b03166106c6565b34801561076157600080fd5b506103f1610770366004613350565b611389565b34801561078157600080fd5b506017546106c6906001600160a01b031681565b3480156107a157600080fd5b506103f16107b036600461342e565b61141f565b3480156107c157600080fd5b50604080518082019091526008815267272326aa37b5b2b760c11b602082015261036c565b3480156107f257600080fd5b506024546025546026546027546106869392919084565b34801561081557600080fd5b506103f161082436600461351e565b611463565b34801561083557600080fd5b506103a2610844366004613324565b61155e565b34801561085557600080fd5b50600c546106c6906001600160a01b031681565b34801561087557600080fd5b506103a2610884366004613324565b6115f9565b34801561089557600080fd5b506103f16108a4366004613270565b611606565b3480156108b557600080fd5b506103f16108c4366004613486565b611678565b3480156108d557600080fd5b506103c3600a5481565b3480156108eb57600080fd5b506103c36108fa3660046132aa565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561093157600080fd5b506103f16109403660046134c4565b611737565b34801561095157600080fd5b506103c3600f5481565b34801561096757600080fd5b506103f1610976366004613468565b611903565b34801561098757600080fd5b506103f1610996366004613270565b6119af565b3480156109a757600080fd5b506103f16109b6366004613486565b6119fa565b3480156109c757600080fd5b506009546103a29060ff1681565b3480156109e157600080fd5b506103f16109f0366004613270565b611ae8565b348015610a0157600080fd5b506103f1610a1036600461351e565b611b83565b348015610a2157600080fd5b50601c54601d54601e54601f546106869392919084565b348015610a4457600080fd5b50600b546106c6906001600160a01b031681565b6000610a65338484611c7e565b5060015b92915050565b6000546001600160a01b03163314610aa25760405162461bcd60e51b8152600401610a99906135e7565b60405180910390fd5b6001600160a01b038116610ac85760405162461bcd60e51b8152600401610a99906135a5565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b145760405162461bcd60e51b8152600401610a99906135e7565b60075460ff1615610b675760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610a99565b6007805461ffff191661010117905543601355565b6000610b89848484611da2565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610c0e5760405162461bcd60e51b815260206004820152602860248201527f42455032303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a99565b610c228533610c1d86856137d4565b611c7e565b60019150505b9392505050565b6000600e54821115610c965760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a99565b6000610ca0612462565b9050610c2881846136a5565b6000546001600160a01b03163314610cd65760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b03811660009081526005602052604090205460ff16610d3e5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610a99565b60005b600654811015610e5f57816001600160a01b031660068281548110610d6857610d68613832565b6000918252602090912001546001600160a01b03161415610e4d5760068054610d93906001906137d4565b81548110610da357610da3613832565b600091825260209091200154600680546001600160a01b039092169183908110610dcf57610dcf613832565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610e2757610e2761381c565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610e57816137eb565b915050610d41565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a65918590610c1d90869061368d565b6000546001600160a01b03163314610ec45760405162461bcd60e51b8152600401610a99906135e7565b600b80546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b6000546001600160a01b03163314610f1c5760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610f6a5760405162461bcd60e51b8152600401610a99906135e7565b80471015610fba5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610a99565b604051339082156108fc029083906000818181858888f19350505050158015610e5f573d6000803e3d6000fd5b6000600d5483111561103b5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a99565b8161105a576000611050846001600080612485565b519150610a699050565b600061106a846001600080612485565b602001519150610a699050565b6000546001600160a01b031633146110a15760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b0383163014156111195760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610a99565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561116357600080fd5b505af1158015611177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119b919061344b565b50505050565b6000546001600160a01b031633146111cb5760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b03811660009081526005602052604090205460ff16156112345760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a99565b6001600160a01b0381166000908152600160205260409020541561128e576001600160a01b03811660009081526001602052604090205461127490610c2f565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff161561133157506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a6990610c2f565b6000546001600160a01b0316331461137d5760405162461bcd60e51b8152600401610a99906135e7565b61138760006124e4565b565b6000546001600160a01b031633146113b35760405162461bcd60e51b8152600401610a99906135e7565b60005b825181101561141a5781600460008584815181106113d6576113d6613832565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611412816137eb565b9150506113b6565b505050565b6000546001600160a01b031633146114495760405162461bcd60e51b8152600401610a99906135e7565b600780549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461148d5760405162461bcd60e51b8152600401610a99906135e7565b6014818361149b868861368d565b6114a5919061368d565b6114af919061368d565b11156114fd5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610a99565b604080516080810182528581526020810185905280820184905260600182905260188590556019849055601a839055601b829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156115e05760405162461bcd60e51b815260206004820152602560248201527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a99565b6115ef3385610c1d86856137d4565b5060019392505050565b6000610a65338484611da2565b6000546001600160a01b031633146116305760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b0381166116565760405162461bcd60e51b8152600401610a99906135a5565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116a25760405162461bcd60e51b8152600401610a99906135e7565b6298968081111561171b5760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e73000000000000006064820152608401610a99565b6117276009600a61370a565b61173190826137b5565b600f5550565b6000546001600160a01b031633146117615760405162461bcd60e51b8152600401610a99906135e7565b620f42408310156117d05760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152727468616e20302e3125206f6620746f6b656e7360681b6064820152608401610a99565b620f42408210156118415760405162461bcd60e51b815260206004820152603560248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015274207468616e20302e3125206f6620746f6b656e732560581b6064820152608401610a99565b620f42408110156118b35760405162461bcd60e51b815260206004820152603660248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152756572207468616e20302e3125206f6620746f6b656e7360501b6064820152608401610a99565b6118bf6009600a61370a565b6118c990846137b5565b6010556118d86009600a61370a565b6118e290836137b5565b6011556118f16009600a61370a565b6118fb90826137b5565b601255505050565b6000546001600160a01b0316331461192d5760405162461bcd60e51b8152600401610a99906135e7565b603c81111561198d5760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d604482015265696e7574657360d01b6064820152608401610a99565b6119988160016137b5565b600a55506009805460ff1916911515919091179055565b6000546001600160a01b031633146119d95760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611a245760405162461bcd60e51b8152600401610a99906135e7565b60075460ff1615611a855760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610a99565b60058110611ae35760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b6064820152608401610a99565b601455565b6000546001600160a01b03163314611b125760405162461bcd60e51b8152600401610a99906135e7565b6001600160a01b038116611b775760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a99565b611b80816124e4565b50565b6000546001600160a01b03163314611bad5760405162461bcd60e51b8152600401610a99906135e7565b60148183611bbb868861368d565b611bc5919061368d565b611bcf919061368d565b1115611c1d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610a99565b6040805160808101825285815260208101859052808201849052606001829052601c859055601d849055601e839055601f829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b038316611ce05760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a99565b6001600160a01b038216611d415760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a99565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e065760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a99565b6001600160a01b038216611e685760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a99565b60008111611eca5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a99565b611ed3836112f4565b811115611f3c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610a99565b6001600160a01b03831660009081526004602052604090205460ff16158015611f7e57506001600160a01b03821660009081526004602052604090205460ff16155b15611fca5760075460ff16611fca5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610a99565b600c546001600160a01b03848116911614801561200057506001600160a01b03821660009081526004602052604090205460ff16155b8015612015575060075462010000900460ff16155b156120d15760105481111561206c5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610a99565b60125481612079846112f4565b612083919061368d565b11156120d15760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610a99565b600c546001600160a01b0384811691161480159061210857506001600160a01b03821660009081526004602052604090205460ff16155b801561212d57506001600160a01b03831660009081526004602052604090205460ff16155b8015612142575060075462010000900460ff16155b156122a5576011548111156121995760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610a99565b600c546001600160a01b0383811691161461221357601254816121bb846112f4565b6121c5919061368d565b11156122135760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610a99565b60095460ff16156122a5576001600160a01b03831660009081526008602052604081205461224190426137d4565b9050600a548110156122885760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610a99565b506001600160a01b03831660009081526008602052604090204290555b6000600f546122b3306112f4565b600754911115915062010000900460ff161580156122d85750600754610100900460ff165b80156122e15750805b80156122fb5750600c546001600160a01b03858116911614155b801561232057506001600160a01b03841660009081526004602052604090205460ff16155b801561234557506001600160a01b03831660009081526004602052604090205460ff16155b156123d157600c546001600160a01b038481169116141561239b57600f5460408051608081018252601c548152601d546020820152601e5491810191909152601f5460608201526123969190612534565b6123d1565b600f546040805160808101825260185481526019546020820152601a5491810191909152601b5460608201526123d19190612534565b60075460019060009062010000900460ff168061240657506001600160a01b03861660009081526004602052604090205460ff165b8061242957506001600160a01b03851660009081526004602052604090205460ff165b1561243357600091505b600c546001600160a01b038681169116141561244d575060015b61245a868686858561269a565b505050505050565b600080600061246f6129c7565b909250905061247e81836136a5565b9250505090565b61248d6131fb565b61249985858585612b4a565b90506124ae8186866124a9612462565b612cf9565b608086015260608501526040840152602083015281526124d681856124d1612462565b612da8565b60a08201525b949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805462ff0000191662010000179055606081015160208201516040830151600092916125619161368d565b61256b919061368d565b6125769060026137b5565b905080612583575061268a565b60008183604001518561259691906137b5565b6125a091906136a5565b905060006125ae82866137d4565b9050476125ba82612dc8565b60006125c682476137d4565b905060008660400151866125da91906137d4565b6125e490836136a5565b905060008760400151826125f891906137b5565b9050801561260a5761260a8682612f29565b602088015160009061261d8460026137b5565b61262791906137b5565b9050801561264557601654612645906001600160a01b03168261300d565b60608901516000906126588560026137b5565b61266291906137b5565b9050801561268057601754612680906001600160a01b03168261300d565b5050505050505050505b50506007805462ff000019169055565b6001600160a01b03851660009081526004602052604081205460ff161580156126dc57506001600160a01b03851660009081526004602052604090205460ff16155b80156126f657506014546013546126f3919061368d565b43105b9050600061270685858585612485565b6001600160a01b03881660009081526005602052604090205490915060ff1615612768576001600160a01b03871660009081526002602052604090205461274e9086906137d4565b6001600160a01b0388166000908152600260205260409020555b6001600160a01b03861660009081526005602052604090205460ff16156127cb5760c08101516001600160a01b0387166000908152600260205260409020546127b1919061368d565b6001600160a01b0387166000908152600260205260409020555b80516001600160a01b0388166000908152600160205260409020546127f091906137d4565b6001600160a01b0380891660009081526001602090815260408083209490945584015191891681529190912054612827919061368d565b6001600160a01b0387166000908152600160205260409081902091909155810151151580612859575060008160e00151115b156128705761287081604001518260e00151613126565b60008160800151118061288857506000816101200151115b1561290d576128a0816080015182610120015161315b565b306001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361014001518461010001518561012001516128f1919061368d565b6128fb919061368d565b60405190815260200160405180910390a35b60008160600151118061292557506000816101000151115b1561293d5761293d81606001518261010001516131d1565b60008160a00151118061295557506000816101400151115b1561296d5761296d8160a001518261014001516131e6565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c001516040516129b691815260200190565b60405180910390a350505050505050565b600e54600d546000918291825b600654811015612b19578260016000600684815481106129f6576129f6613832565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a615750816002600060068481548110612a3a57612a3a613832565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612a7757600e54600d54945094505050509091565b6001600060068381548110612a8e57612a8e613832565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612abd90846137d4565b92506002600060068381548110612ad657612ad6613832565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b0590836137d4565b915080612b11816137eb565b9150506129d4565b50600d54600e54612b2a91906136a5565b821015612b4157600e54600d549350935050509091565b90939092509050565b612b526131fb565b83612b635760c081018590526124dc565b612b8e6040518060800160405280600081526020016000815260200160008152602001600081525090565b838015612b99575082155b15612bcd575060408051608081018252601c548152601d546020820152601e5491810191909152601f546060820152612c2c565b82612c0157506040805160808101825260185481526019546020820152601a5491810191909152601b546060820152612c2c565b5060408051608081018252602080548252602154908201526022549181019190915260235460608201525b8051606490612c3b90886137b5565b612c4591906136a5565b60e08301526020810151606490612c5c90886137b5565b612c6691906136a5565b6101008301526040810151606490612c7e90886137b5565b612c8891906136a5565b6101208301526060810151606490612ca090886137b5565b612caa91906136a5565b610140830181905261012083015161010084015160e0850151612ccd908a6137d4565b612cd791906137d4565b612ce191906137d4565b612ceb91906137d4565b60c083015250949350505050565b600080808080612d0986896137b5565b945086612d2157508392506000915081905080612d9d565b858960e00151612d3191906137b5565b925085896101000151612d4491906137b5565b915085896101200151612d5791906137b5565b90506000868a6101400151612d6c91906137b5565b9050808284612d7b878a6137d4565b612d8591906137d4565b612d8f91906137d4565b612d9991906137d4565b9450505b945094509450945094565b600082612db757506000610c28565b818461014001516124dc91906137b5565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612dfd57612dfd613832565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612e5157600080fd5b505afa158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e89919061328d565b81600181518110612e9c57612e9c613832565b6001600160a01b039283166020918202929092010152600b54612ec29130911684611c7e565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612efb90859060009086903090429060040161361c565b600060405180830381600087803b158015612f1557600080fd5b505af115801561245a573d6000803e3d6000fd5b600b54612f419030906001600160a01b031684611c7e565b600b546001600160a01b031663f305d719823085600080612f6a6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015612fcd57600080fd5b505af1158015612fe1573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061300691906134f0565b5050505050565b8047101561305d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a99565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146130aa576040519150601f19603f3d011682016040523d82523d6000602084013e6130af565b606091505b505090508061141a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610a99565b81600e600082825461313891906137d4565b90915550506024805482919060009061315290849061368d565b90915550505050565b8060246002016000828254613170919061368d565b90915550503060009081526005602052604090205460ff16156131b25730600090815260026020526040812080548392906131ac90849061368d565b90915550505b306000908152600160205260408120805484929061315290849061368d565b8060246001016000828254613170919061368d565b8060246003016000828254613170919061368d565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356132608161385e565b919050565b803561326081613873565b60006020828403121561328257600080fd5b8135610c288161385e565b60006020828403121561329f57600080fd5b8151610c288161385e565b600080604083850312156132bd57600080fd5b82356132c88161385e565b915060208301356132d88161385e565b809150509250929050565b6000806000606084860312156132f857600080fd5b83356133038161385e565b925060208401356133138161385e565b929592945050506040919091013590565b6000806040838503121561333757600080fd5b82356133428161385e565b946020939093013593505050565b6000806040838503121561336357600080fd5b823567ffffffffffffffff8082111561337b57600080fd5b818501915085601f83011261338f57600080fd5b81356020828211156133a3576133a3613848565b8160051b604051601f19603f830116810181811086821117156133c8576133c8613848565b604052838152828101945085830182870184018b10156133e757600080fd5b600096505b84871015613411576133fd81613255565b8652600196909601959483019483016133ec565b5096506134219050878201613265565b9450505050509250929050565b60006020828403121561344057600080fd5b8135610c2881613873565b60006020828403121561345d57600080fd5b8151610c2881613873565b6000806040838503121561347b57600080fd5b823561334281613873565b60006020828403121561349857600080fd5b5035919050565b600080604083850312156134b257600080fd5b8235915060208301356132d881613873565b6000806000606084860312156134d957600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561350557600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561353457600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b8181101561357d57858101830151858201604001528201613561565b8181111561358f576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561366c5784516001600160a01b031683529383019391830191600101613647565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156136a0576136a0613806565b500190565b6000826136c257634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156137025781600019048211156136e8576136e8613806565b808516156136f557918102915b93841c93908002906136cc565b509250929050565b6000610c2860ff84168360008261372357506001610a69565b8161373057506000610a69565b816001811461374657600281146137505761376c565b6001915050610a69565b60ff84111561376157613761613806565b50506001821b610a69565b5060208310610133831016604e8410600b841016171561378f575081810a610a69565b61379983836136c7565b80600019048211156137ad576137ad613806565b029392505050565b60008160001904831182151516156137cf576137cf613806565b500290565b6000828210156137e6576137e6613806565b500390565b60006000198214156137ff576137ff613806565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611b8057600080fd5b8015158114611b8057600080fdfea26469706673582212200875f603b4d86b5d9bb222b13be7320b693aa1d9d6c598e8303d0132ea5bd57064736f6c63430008070033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

3312:22496:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6741:83;;;;;;;;;;-1:-1:-1;6811:5:0;;;;;;;;;;;;;;;;;6741:83;;;;;;;:::i;:::-;;;;;;;;7501:161;;;;;;;;;;-1:-1:-1;7501:161:0;;;;;:::i;:::-;;:::i;:::-;;;6980:14:1;;6973:22;6955:41;;6943:2;6928:18;7501:161:0;6815:187:1;7041:95:0;;;;;;;;;;-1:-1:-1;7121:7:0;;7041:95;;;20841:25:1;;;20829:2;20814:18;7041:95:0;20695:177:1;23672:183:0;;;;;;;;;;-1:-1:-1;23672:183:0;;;;;:::i;:::-;;:::i;:::-;;9567:215;;;;;;;;;;;;;:::i;7670:448::-;;;;;;;;;;-1:-1:-1;7670:448:0;;;;;:::i;:::-;;:::i;4468:28::-;;;;;;;;;;;;;;;;10048:250;;;;;;;;;;-1:-1:-1;10048:250:0;;;;;:::i;:::-;;:::i;6927:83::-;;;;;;;;;;-1:-1:-1;6927:83:0;;4071:1;22400:36:1;;22388:2;22373:18;6927:83:0;22258:184:1;10712:473:0;;;;;;;;;;-1:-1:-1;10712:473:0;;;;;:::i;:::-;;:::i;8126:207::-;;;;;;;;;;-1:-1:-1;8126:207:0;;;;;:::i;:::-;;:::i;25002:155::-;;;;;;;;;;-1:-1:-1;25002:155:0;;;;;:::i;:::-;;:::i;11193:111::-;;;;;;;;;;-1:-1:-1;11193:111:0;;;;;:::i;:::-;;:::i;25229:197::-;;;;;;;;;;-1:-1:-1;25229:197:0;;;;;:::i;:::-;;:::i;9042:517::-;;;;;;;;;;-1:-1:-1;9042:517:0;;;;;:::i;:::-;;:::i;25507:261::-;;;;;;;;;;-1:-1:-1;25507:261:0;;;;;:::i;:::-;;:::i;3728:26::-;;;;;;;;;;-1:-1:-1;3728:26:0;;;;;;;;10372:332;;;;;;;;;;-1:-1:-1;10372:332:0;;;;;:::i;:::-;;:::i;11430:124::-;;;;;;;;;;-1:-1:-1;11430:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;11519:27:0;11495:4;11519:27;;;:18;:27;;;;;;;;;11430:124;4354:48;;;;;;;;;;;;;;;;4409:50;;;;;;;;;;;;;;;;4300:47;;;;;;;;;;;;;;;;3761:23;;;;;;;;;;-1:-1:-1;3761:23:0;;;;;;;;;;;7144:198;;;;;;;;;;-1:-1:-1;7144:198:0;;;;;:::i;:::-;;:::i;1626:94::-;;;;;;;;;;;;;:::i;5024:38::-;;;;;;;;;;-1:-1:-1;5024:38:0;;;;;;;;;;;;;;;;;;;22093:25:1;;;22149:2;22134:18;;22127:34;;;;22177:18;;;22170:34;22235:2;22220:18;;22213:34;22080:3;22065:19;5024:38:0;21862:391:1;4617:75:0;;;;;;;;;;-1:-1:-1;4617:75:0;;;;-1:-1:-1;;;;;4617:75:0;;;;;;-1:-1:-1;;;;;5880:32:1;;;5862:51;;5850:2;5835:18;4617:75:0;5716:203:1;4540:70:0;;;;;;;;;;-1:-1:-1;4540:70:0;;;;-1:-1:-1;;;;;4540:70:0;;;8914:120;;;;;;;;;;-1:-1:-1;8914:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9006:20:0;8982:4;9006:20;;;:11;:20;;;;;;;;;8914:120;1403:87;;;;;;;;;;-1:-1:-1;1449:7:0;1476:6;-1:-1:-1;;;;;1476:6:0;1403:87;;23249:212;;;;;;;;;;-1:-1:-1;23249:212:0;;;;;:::i;:::-;;:::i;4699:69::-;;;;;;;;;;-1:-1:-1;4699:69:0;;;;-1:-1:-1;;;;;4699:69:0;;;24336:102;;;;;;;;;;-1:-1:-1;24336:102:0;;;;;:::i;:::-;;:::i;6832:87::-;;;;;;;;;;-1:-1:-1;6904:7:0;;;;;;;;;;;;-1:-1:-1;;;6904:7:0;;;;6832:87;;5312:36;;;;;;;;;;-1:-1:-1;5312:36:0;;;;;;;;;;;;;;;11562:342;;;;;;;;;;-1:-1:-1;11562:342:0;;;;;:::i;:::-;;:::i;8341:392::-;;;;;;;;;;-1:-1:-1;8341:392:0;;;;;:::i;:::-;;:::i;4008:19::-;;;;;;;;;;-1:-1:-1;4008:19:0;;;;-1:-1:-1;;;;;4008:19:0;;;8741:165;;;;;;;;;;-1:-1:-1;8741:165:0;;;;;:::i;:::-;;:::i;23469:195::-;;;;;;;;;;-1:-1:-1;23469:195:0;;;;;:::i;:::-;;:::i;24096:232::-;;;;;;;;;;-1:-1:-1;24096:232:0;;;;;:::i;:::-;;:::i;3931:40::-;;;;;;;;;;;;;;;;7350:143;;;;;;;;;;-1:-1:-1;7350:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7458:18:0;;;7431:7;7458:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7350:143;24446:548;;;;;;;;;;-1:-1:-1;24446:548:0;;;;;:::i;:::-;;:::i;4240:53::-;;;;;;;;;;;;;;;;23863:225;;;;;;;;;;-1:-1:-1;23863:225:0;;;;;:::i;:::-;;:::i;11312:110::-;;;;;;;;;;-1:-1:-1;11312:110:0;;;;;:::i;:::-;;:::i;9790:250::-;;;;;;;;;;-1:-1:-1;9790:250:0;;;;;:::i;:::-;;:::i;3890:34::-;;;;;;;;;;-1:-1:-1;3890:34:0;;;;;;;;1728:192;;;;;;;;;;-1:-1:-1;1728:192:0;;;;;:::i;:::-;;:::i;11912:350::-;;;;;;;;;;-1:-1:-1;11912:350:0;;;;;:::i;:::-;;:::i;5069:42::-;;;;;;;;;;-1:-1:-1;5069:42:0;;;;;;;;;;;;;;;3980:21;;;;;;;;;;-1:-1:-1;3980:21:0;;;;-1:-1:-1;;;;;3980:21:0;;;7501:161;7576:4;7593:39;904:10;7616:7;7625:6;7593:8;:39::i;:::-;-1:-1:-1;7650:4:0;7501:161;;;;;:::o;23672:183::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;23754:23:0;::::1;23746:69;;;;-1:-1:-1::0;;;23746:69:0::1;;;;;;;:::i;:::-;23826:9;:21:::0;;-1:-1:-1;;;;;;23826:21:0::1;-1:-1:-1::0;;;;;23826:21:0;;;::::1;::::0;;;::::1;::::0;;23672:183::o;9567:215::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;9631:14:::1;::::0;::::1;;9630:15;9622:52;;;::::0;-1:-1:-1;;;9622:52:0;;15425:2:1;9622:52:0::1;::::0;::::1;15407:21:1::0;15464:2;15444:18;;;15437:30;15503:26;15483:18;;;15476:54;15547:18;;9622:52:0::1;15223:348:1::0;9622:52:0::1;9685:14;:21:::0;;-1:-1:-1;;9717:18:0;;;;;9762:12:::1;9746:13;:28:::0;9567:215::o;7670:448::-;7802:4;7819:36;7829:6;7837:9;7848:6;7819:9;:36::i;:::-;-1:-1:-1;;;;;7895:19:0;;7868:24;7895:19;;;:11;:19;;;;;;;;904:10;7895:33;;;;;;;;7947:26;;;;7939:79;;;;-1:-1:-1;;;7939:79:0;;12352:2:1;7939:79:0;;;12334:21:1;12391:2;12371:18;;;12364:30;12430:34;12410:18;;;12403:62;-1:-1:-1;;;12481:18:1;;;12474:38;12529:19;;7939:79:0;12150:404:1;7939:79:0;8029:57;8038:6;904:10;8060:25;8079:6;8060:16;:25;:::i;:::-;8029:8;:57::i;:::-;8106:4;8099:11;;;7670:448;;;;;;:::o;10048:250::-;10115:7;10154;;10143;:18;;10135:73;;;;-1:-1:-1;;;10135:73:0;;10394:2:1;10135:73:0;;;10376:21:1;10433:2;10413:18;;;10406:30;10472:34;10452:18;;;10445:62;-1:-1:-1;;;10523:18:1;;;10516:40;10573:19;;10135:73:0;10192:406:1;10135:73:0;10219:19;10241:10;:8;:10::i;:::-;10219:32;-1:-1:-1;10269:21:0;10219:32;10269:7;:21;:::i;10712:473::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10792:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10784:56;;;::::0;-1:-1:-1;;;10784:56:0;;13188:2:1;10784:56:0::1;::::0;::::1;13170:21:1::0;13227:2;13207:18;;;13200:30;13266:25;13246:18;;;13239:53;13309:18;;10784:56:0::1;12986:347:1::0;10784:56:0::1;10856:9;10851:327;10875:9;:16:::0;10871:20;::::1;10851:327;;;10933:7;-1:-1:-1::0;;;;;10917:23:0::1;:9;10927:1;10917:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;10917:12:0::1;:23;10913:254;;;10976:9;10986:16:::0;;:20:::1;::::0;11005:1:::1;::::0;10986:20:::1;:::i;:::-;10976:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;10961:9:::1;:12:::0;;-1:-1:-1;;;;;10976:31:0;;::::1;::::0;10971:1;;10961:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;10961:46:0::1;-1:-1:-1::0;;;;;10961:46:0;;::::1;;::::0;;11026:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;11065:11:::1;:20:::0;;;;:28;;-1:-1:-1;;11065:28:0::1;::::0;;11112:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11112:15:0;;;;;-1:-1:-1;;;;;;11112:15:0::1;::::0;;;;;10851:327:::1;10712:473:::0;:::o;10913:254::-:1;10893:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10851:327;;;;10712:473:::0;:::o;8126:207::-;904:10;8206:4;8255:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8255:34:0;;;;;;;;;;8206:4;;8223:80;;8246:7;;8255:47;;8292:10;;8255:47;:::i;25002:155::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;25097:6:::1;:27:::0;;-1:-1:-1;;;;;25097:27:0;;::::1;-1:-1:-1::0;;;;;;25097:27:0;;::::1;;::::0;;;25135:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;25002:155::o;11193:111::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11262:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11262:34:0::1;11292:4;11262:34;::::0;;11193:111::o;25229:197::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;25330:9:::1;25305:21;:34;;25297:71;;;::::0;-1:-1:-1;;;25297:71:0;;16607:2:1;25297:71:0::1;::::0;::::1;16589:21:1::0;16646:2;16626:18;;;16619:30;16685:26;16665:18;;;16658:54;16729:18;;25297:71:0::1;16405:348:1::0;25297:71:0::1;25379:39;::::0;25387:10:::1;::::0;25379:39;::::1;;;::::0;25408:9;;25379:39:::1;::::0;;;25408:9;25387:10;25379:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;9042:517:::0;9160:7;9204;;9193;:18;;9185:62;;;;-1:-1:-1;;;9185:62:0;;15065:2:1;9185:62:0;;;15047:21:1;15104:2;15084:18;;;15077:30;15143:33;15123:18;;;15116:61;15194:18;;9185:62:0;14863:355:1;9185:62:0;9263:17;9258:294;;9297:28;9328:39;9339:7;9348:4;9354:5;9361;9328:10;:39::i;:::-;9389:9;;-1:-1:-1;9382:16:0;;-1:-1:-1;9382:16:0;9258:294;9431:28;9462:39;9473:7;9482:4;9488:5;9495;9462:10;:39::i;:::-;9523:17;;;;-1:-1:-1;9516:24:0;;-1:-1:-1;9516:24:0;25507:261;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25622:27:0;::::1;25644:4;25622:27;;25614:94;;;::::0;-1:-1:-1;;;25614:94:0;;11212:2:1;25614:94:0::1;::::0;::::1;11194:21:1::0;11251:2;11231:18;;;11224:30;11290:34;11270:18;;;11263:62;-1:-1:-1;;;11341:18:1;;;11334:52;11403:19;;25614:94:0::1;11010:418:1::0;25614:94:0::1;25719:41;::::0;-1:-1:-1;;;25719:41:0;;-1:-1:-1;;;;;6116:32:1;;;25719:41:0::1;::::0;::::1;6098:51:1::0;6165:18;;;6158:34;;;25719:27:0;::::1;::::0;::::1;::::0;6071:18:1;;25719:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25507:261:::0;;;:::o;10372:332::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10453:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10452:21;10444:61;;;::::0;-1:-1:-1;;;10444:61:0;;11635:2:1;10444:61:0::1;::::0;::::1;11617:21:1::0;11674:2;11654:18;;;11647:30;11713:29;11693:18;;;11686:57;11760:18;;10444:61:0::1;11433:351:1::0;10444:61:0::1;-1:-1:-1::0;;;;;10520:16:0;::::1;10539:1;10520:16:::0;;;:7:::1;:16;::::0;;;;;:20;10516:109:::1;;-1:-1:-1::0;;;;;10596:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;10576:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;10557:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;10516:109:::1;-1:-1:-1::0;;;;;10635:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;10635:27:0::1;10658:4;10635:27:::0;;::::1;::::0;;;10673:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10673:23:0::1;::::0;;::::1;::::0;;10372:332::o;7144:198::-;-1:-1:-1;;;;;7234:20:0;;7210:7;7234:20;;;:11;:20;;;;;;;;7230:49;;;-1:-1:-1;;;;;;7263:16:0;;;;;:7;:16;;;;;;;7144:198::o;7230:49::-;-1:-1:-1;;;;;7317:16:0;;;;;;:7;:16;;;;;;7297:37;;:19;:37::i;1626:94::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;1691:21:::1;1709:1;1691:9;:21::i;:::-;1626:94::o:0;23249:212::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;23347:9:::1;23342:112;23366:8;:15;23362:1;:19;23342:112;;;23437:5;23403:18;:31;23422:8;23431:1;23422:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23403:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23403:31:0;:39;;-1:-1:-1;;23403:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23383:3;::::1;::::0;::::1;:::i;:::-;;;;23342:112;;;;23249:212:::0;;:::o;24336:102::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;24408:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;24408:22:0;;::::1;::::0;;;::::1;::::0;;24336:102::o;11562:342::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;11771:2:::1;11761:4:::0;11748:10;11728:17:::1;11735:10:::0;11728:4;:17:::1;:::i;:::-;:30;;;;:::i;:::-;:37;;;;:::i;:::-;11727:46;;11719:88;;;::::0;-1:-1:-1;;;11719:88:0;;13898:2:1;11719:88:0::1;::::0;::::1;13880:21:1::0;13937:2;13917:18;;;13910:30;13976:31;13956:18;;;13949:59;14025:18;;11719:88:0::1;13696:353:1::0;11719:88:0::1;11826:41;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;11818:5:::1;:49:::0;;;;;;;;;;;;;;;11883:13;::::1;::::0;-1:-1:-1;;11883:13:0::1;11562:342:::0;;;;:::o;8341:392::-;904:10;8444:4;8493:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8493:34:0;;;;;;;;;;8546:35;;;;8538:85;;;;-1:-1:-1;;;8538:85:0;;18480:2:1;8538:85:0;;;18462:21:1;18519:2;18499:18;;;18492:30;18558:34;18538:18;;;18531:62;-1:-1:-1;;;18609:18:1;;;18602:35;18654:19;;8538:85:0;18278:401:1;8538:85:0;8634:67;904:10;8657:7;8666:34;8685:15;8666:16;:34;:::i;8634:67::-;-1:-1:-1;8721:4:0;;8341:392;-1:-1:-1;;;8341:392:0:o;8741:165::-;8819:4;8836:40;8846:10;8858:9;8869:6;8836:9;:40::i;23469:195::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23557:23:0;::::1;23549:69;;;;-1:-1:-1::0;;;23549:69:0::1;;;;;;;:::i;:::-;23629:15;:27:::0;;-1:-1:-1;;;;;;23629:27:0::1;-1:-1:-1::0;;;;;23629:27:0;;;::::1;::::0;;;::::1;::::0;;23469:195::o;24096:232::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;24194:10:::1;24184:6;:20;;24176:90;;;::::0;-1:-1:-1;;;24176:90:0;;9203:2:1;24176:90:0::1;::::0;::::1;9185:21:1::0;9242:2;9222:18;;;9215:30;9281:34;9261:18;;;9254:62;9352:27;9332:18;;;9325:55;9397:19;;24176:90:0::1;9001:421:1::0;24176:90:0::1;24307:13;4071:1;24307:2;:13;:::i;:::-;24298:22;::::0;:6;:22:::1;:::i;:::-;24277:18;:43:::0;-1:-1:-1;24096:232:0:o;24446:548::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;24572:9:::1;24562:6;:19;;24554:83;;;::::0;-1:-1:-1;;;24554:83:0;;19293:2:1;24554:83:0::1;::::0;::::1;19275:21:1::0;19332:2;19312:18;;;19305:30;19371:34;19351:18;;;19344:62;-1:-1:-1;;;19422:18:1;;;19415:49;19481:19;;24554:83:0::1;19091:415:1::0;24554:83:0::1;24667:9;24656:7;:20;;24648:86;;;::::0;-1:-1:-1;;;24648:86:0;;20475:2:1;24648:86:0::1;::::0;::::1;20457:21:1::0;20514:2;20494:18;;;20487:30;20553:34;20533:18;;;20526:62;-1:-1:-1;;;20604:18:1;;;20597:51;20665:19;;24648:86:0::1;20273:417:1::0;24648:86:0::1;24766:9;24753;:22;;24745:89;;;::::0;-1:-1:-1;;;24745:89:0;;16184:2:1;24745:89:0::1;::::0;::::1;16166:21:1::0;16223:2;16203:18;;;16196:30;16262:34;16242:18;;;16235:62;-1:-1:-1;;;16313:18:1;;;16306:52;16375:19;;24745:89:0::1;15982:418:1::0;24745:89:0::1;24868:14;4071:1:::0;24868:2:::1;:14;:::i;:::-;24859:23;::::0;:6;:23:::1;:::i;:::-;24845:11;:37:::0;24918:14:::1;4071:1:::0;24918:2:::1;:14;:::i;:::-;24908:24;::::0;:7;:24:::1;:::i;:::-;24893:12;:39:::0;24972:14:::1;4071:1:::0;24972:2:::1;:14;:::i;:::-;24960:26;::::0;:9;:26:::1;:::i;:::-;24943:14;:43:::0;-1:-1:-1;;;24446:548:0:o;23863:225::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;23959:2:::1;23951:4;:10;;23943:61;;;::::0;-1:-1:-1;;;23943:61:0;;18886:2:1;23943:61:0::1;::::0;::::1;18868:21:1::0;18925:2;18905:18;;;18898:30;18964:34;18944:18;;;18937:62;-1:-1:-1;;;19015:18:1;;;19008:36;19061:19;;23943:61:0::1;18684:402:1::0;23943:61:0::1;24030:16;:4:::0;24037:9:::1;24030:16;:::i;:::-;24015:12;:31:::0;-1:-1:-1;24057:15:0::1;:23:::0;;-1:-1:-1;;24057:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23863:225::o;11312:110::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11379:27:0::1;11409:5;11379:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11379:35:0::1;::::0;;11312:110::o;9790:250::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;9872:14:::1;::::0;::::1;;9871:15;9863:65;;;::::0;-1:-1:-1;;;9863:65:0;;15778:2:1;9863:65:0::1;::::0;::::1;15760:21:1::0;15817:2;15797:18;;;15790:30;15856:34;15836:18;;;15829:62;-1:-1:-1;;;15907:18:1;;;15900:35;15952:19;;9863:65:0::1;15576:401:1::0;9863:65:0::1;9959:1;9947:9;:13;9939:62;;;::::0;-1:-1:-1;;;9939:62:0;;14659:2:1;9939:62:0::1;::::0;::::1;14641:21:1::0;14698:2;14678:18;;;14671:30;14737:34;14717:18;;;14710:62;-1:-1:-1;;;14788:18:1;;;14781:35;14833:19;;9939:62:0::1;14457:401:1::0;9939:62:0::1;10012:8;:20:::0;9790:250::o;1728:192::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1817:22:0;::::1;1809:73;;;::::0;-1:-1:-1;;;1809:73:0;;10805:2:1;1809:73:0::1;::::0;::::1;10787:21:1::0;10844:2;10824:18;;;10817:30;10883:34;10863:18;;;10856:62;-1:-1:-1;;;10934:18:1;;;10927:36;10980:19;;1809:73:0::1;10603:402:1::0;1809:73:0::1;1893:19;1903:8;1893:9;:19::i;:::-;1728:192:::0;:::o;11912:350::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;12125:2:::1;12115:4:::0;12102:10;12082:17:::1;12089:10:::0;12082:4;:17:::1;:::i;:::-;:30;;;;:::i;:::-;:37;;;;:::i;:::-;12081:46;;12073:88;;;::::0;-1:-1:-1;;;12073:88:0;;13898:2:1;12073:88:0::1;::::0;::::1;13880:21:1::0;13937:2;13917:18;;;13910:30;13976:31;13956:18;;;13949:59;14025:18;;12073:88:0::1;13696:353:1::0;12073:88:0::1;12184:41;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;12172:9:::1;:53:::0;;;;;;;;;;;;;;;12241:13;::::1;::::0;-1:-1:-1;;12241:13:0::1;11912:350:::0;;;;:::o;16758:369::-;-1:-1:-1;;;;;16885:19:0;;16877:68;;;;-1:-1:-1;;;16877:68:0;;8798:2:1;16877:68:0;;;8780:21:1;8837:2;8817:18;;;8810:30;8876:34;8856:18;;;8849:62;-1:-1:-1;;;8927:18:1;;;8920:34;8971:19;;16877:68:0;8596:400:1;16877:68:0;-1:-1:-1;;;;;16964:21:0;;16956:68;;;;-1:-1:-1;;;16956:68:0;;20072:2:1;16956:68:0;;;20054:21:1;20111:2;20091:18;;;20084:30;20150:34;20130:18;;;20123:62;-1:-1:-1;;;20201:18:1;;;20194:32;20243:19;;16956:68:0;19870:398:1;16956:68:0;-1:-1:-1;;;;;17035:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17087:32;;20841:25:1;;;17087:32:0;;20814:18:1;17087:32:0;;;;;;;16758:369;;;:::o;17135:2293::-;-1:-1:-1;;;;;17257:18:0;;17249:68;;;;-1:-1:-1;;;17249:68:0;;8034:2:1;17249:68:0;;;8016:21:1;8073:2;8053:18;;;8046:30;8112:34;8092:18;;;8085:62;-1:-1:-1;;;8163:18:1;;;8156:35;8208:19;;17249:68:0;7832:401:1;17249:68:0;-1:-1:-1;;;;;17336:16:0;;17328:64;;;;-1:-1:-1;;;17328:64:0;;17731:2:1;17328:64:0;;;17713:21:1;17770:2;17750:18;;;17743:30;17809:34;17789:18;;;17782:62;-1:-1:-1;;;17860:18:1;;;17853:33;17903:19;;17328:64:0;17529:399:1;17328:64:0;17420:1;17411:6;:10;17403:64;;;;-1:-1:-1;;;17403:64:0;;17321:2:1;17403:64:0;;;17303:21:1;17360:2;17340:18;;;17333:30;17399:34;17379:18;;;17372:62;-1:-1:-1;;;17450:18:1;;;17443:39;17499:19;;17403:64:0;17119:405:1;17403:64:0;17510:15;17520:4;17510:9;:15::i;:::-;17500:6;:25;;17478:124;;;;-1:-1:-1;;;17478:124:0;;9976:2:1;17478:124:0;;;9958:21:1;10015:2;9995:18;;;9988:30;10054:34;10034:18;;;10027:62;-1:-1:-1;;;10105:18:1;;;10098:47;10162:19;;17478:124:0;9774:413:1;17478:124:0;-1:-1:-1;;;;;17620:24:0;;;;;;:18;:24;;;;;;;;17619:25;:52;;;;-1:-1:-1;;;;;;17649:22:0;;;;;;:18;:22;;;;;;;;17648:23;17619:52;17615:130;;;17696:14;;;;17688:45;;;;-1:-1:-1;;;17688:45:0;;9629:2:1;17688:45:0;;;9611:21:1;9668:2;9648:18;;;9641:30;-1:-1:-1;;;9687:18:1;;;9680:48;9745:18;;17688:45:0;9427:342:1;17688:45:0;17769:4;;-1:-1:-1;;;;;17761:12:0;;;17769:4;;17761:12;:39;;;;-1:-1:-1;;;;;;17778:22:0;;;;;;:18;:22;;;;;;;;17777:23;17761:39;:52;;;;-1:-1:-1;17805:8:0;;;;;;;17804:9;17761:52;17757:297;;;17848:11;;17838:6;:21;;17830:63;;;;-1:-1:-1;;;17830:63:0;;8440:2:1;17830:63:0;;;8422:21:1;8479:2;8459:18;;;8452:30;8518:31;8498:18;;;8491:59;8567:18;;17830:63:0;8238:353:1;17830:63:0;17960:14;;17950:6;17934:13;17944:2;17934:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17908:134;;;;-1:-1:-1;;;17908:134:0;;11991:2:1;17908:134:0;;;11973:21:1;;;12010:18;;;12003:30;12069:34;12049:18;;;12042:62;12121:18;;17908:134:0;11789:356:1;17908:134:0;18092:4;;-1:-1:-1;;;;;18084:12:0;;;18092:4;;18084:12;;;;:39;;-1:-1:-1;;;;;;18101:22:0;;;;;;:18;:22;;;;;;;;18100:23;18084:39;:68;;;;-1:-1:-1;;;;;;18128:24:0;;;;;;:18;:24;;;;;;;;18127:25;18084:68;:81;;;;-1:-1:-1;18157:8:0;;;;;;;18156:9;18084:81;18066:664;;;18210:12;;18200:6;:22;;18192:65;;;;-1:-1:-1;;;18192:65:0;;19713:2:1;18192:65:0;;;19695:21:1;19752:2;19732:18;;;19725:30;19791:32;19771:18;;;19764:60;19841:18;;18192:65:0;19511:354:1;18192:65:0;18282:4;;-1:-1:-1;;;;;18276:10:0;;;18282:4;;18276:10;18272:197;;18363:14;;18353:6;18337:13;18347:2;18337:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18307:146;;;;-1:-1:-1;;;18307:146:0;;11991:2:1;18307:146:0;;;11973:21:1;;;12010:18;;;12003:30;12069:34;12049:18;;;12042:62;12121:18;;18307:146:0;11789:356:1;18307:146:0;18487:15;;;;18483:236;;;-1:-1:-1;;;;;18562:15:0;;18523:18;18562:15;;;:9;:15;;;;;;18544:33;;:15;:33;:::i;:::-;18523:54;;18618:12;;18604:10;:26;;18596:55;;;;-1:-1:-1;;;18596:55:0;;18135:2:1;18596:55:0;;;18117:21:1;18174:2;18154:18;;;18147:30;-1:-1:-1;;;18193:18:1;;;18186:46;18249:18;;18596:55:0;17933:340:1;18596:55:0;-1:-1:-1;;;;;;18670:15:0;;;;;;:9;:15;;;;;18688;18670:33;;18483:236;18742:12;18785:18;;18757:24;18775:4;18757:9;:24::i;:::-;18833:8;;-1:-1:-1;;18757:46:0;;-1:-1:-1;18833:8:0;;;;;18832:9;:37;;;;-1:-1:-1;18858:11:0;;;;;;;18832:37;:61;;;;;18886:7;18832:61;:90;;;;-1:-1:-1;18918:4:0;;-1:-1:-1;;;;;18910:12:0;;;18918:4;;18910:12;;18832:90;:132;;;;-1:-1:-1;;;;;;18940:24:0;;;;;;:18;:24;;;;;;;;18939:25;18832:132;:172;;;;-1:-1:-1;;;;;;18982:22:0;;;;;;:18;:22;;;;;;;;18981:23;18832:172;18814:351;;;19041:4;;-1:-1:-1;;;;;19035:10:0;;;19041:4;;19035:10;19031:122;;;19062:18;;19047:45;;;;;;;;19082:9;19047:45;;;;;;;;;;;;;;;;;;;;;;;;;;19062:18;19047:14;:45::i;:::-;19031:122;;;19127:18;;19112:41;;;;;;;;19147:5;19112:41;;;;;;;;;;;;;;;;;;;;;;;;;;19127:18;19112:14;:41::i;:::-;19239:8;;19190:4;;19175:12;;19239:8;;;;;;:36;;-1:-1:-1;;;;;;19251:24:0;;;;;;:18;:24;;;;;;;;19239:36;:62;;;-1:-1:-1;;;;;;19279:22:0;;;;;;:18;:22;;;;;;;;19239:62;19235:83;;;19313:5;19303:15;;19235:83;19339:4;;-1:-1:-1;;;;;19333:10:0;;;19339:4;;19333:10;19329:29;;;-1:-1:-1;19354:4:0;19329:29;19371:49;19386:4;19392:2;19396:6;19404:7;19413:6;19371:14;:49::i;:::-;17238:2190;;;17135:2293;;;:::o;16017:161::-;16059:7;16080:15;16097;16116:19;:17;:19::i;:::-;16079:56;;-1:-1:-1;16079:56:0;-1:-1:-1;16153:17:0;16079:56;;16153:17;:::i;:::-;16146:24;;;;16017:161;:::o;13225:670::-;13373:36;;:::i;:::-;13434:51;13446:7;13455;13464:6;13472:12;13434:11;:51::i;:::-;13422:63;;13681:53;13694:9;13705:7;13714;13723:10;:8;:10::i;:::-;13681:12;:53::i;:::-;13647:20;;;13496:238;13612:20;;;13496:238;13583:14;;;13496:238;13543:25;;;13496:238;;;13764:94;13511:9;13815:7;13837:10;:8;:10::i;:::-;13764:12;:94::i;:::-;13746:14;;;13745:113;13225:670;;;;;;;:::o;1928:173::-;1984:16;2003:6;;-1:-1:-1;;;;;2020:17:0;;;-1:-1:-1;;;;;;2020:17:0;;;;;;2053:40;;2003:6;;;;;;;2053:40;;1984:16;2053:40;1973:128;1928:173;:::o;20927:1247::-;5828:8;:15;;-1:-1:-1;;5828:15:0;;;;;21109:8:::1;::::0;::::1;::::0;21079:14:::1;::::0;::::1;::::0;21049::::1;::::0;::::1;::::0;5828:15;;21109:8;21049:44:::1;::::0;::::1;:::i;:::-;:68;;;;:::i;:::-;21048:75;::::0;21122:1:::1;21048:75;:::i;:::-;21026:97:::0;-1:-1:-1;21140:16:0;21136:54:::1;;21172:7;;;21136:54;21202:32;21274:11;21256:4;:14;;;21238:15;:32;;;;:::i;:::-;21237:48;;;;:::i;:::-;21202:83:::0;-1:-1:-1;21296:14:0::1;21313:42;21202:83:::0;21313:15;:42:::1;:::i;:::-;21296:59:::0;-1:-1:-1;21393:21:0::1;21427:24;21296:59:::0;21427:16:::1;:24::i;:::-;21464:20;21487:38;21511:14:::0;21487:21:::1;:38;:::i;:::-;21464:61;;21536:19;21588:4;:14;;;21574:11;:28;;;;:::i;:::-;21558:45;::::0;:12;:45:::1;:::i;:::-;21536:67;;21614:29;21660:4;:14;;;21646:11;:28;;;;:::i;:::-;21614:60:::0;-1:-1:-1;21691:25:0;;21687:160:::1;;21774:61;21787:24;21813:21;21774:12;:61::i;:::-;21900:14;::::0;::::1;::::0;21859:20:::1;::::0;21882:15:::1;:11:::0;21896:1:::1;21882:15;:::i;:::-;:32;;;;:::i;:::-;21859:55:::0;-1:-1:-1;21929:16:0;;21925:97:::1;;21970:15;::::0;21962:48:::1;::::0;-1:-1:-1;;;;;21970:15:0::1;21997:12:::0;21962:34:::1;:48::i;:::-;22069:8;::::0;::::1;::::0;22034:14:::1;::::0;22051:15:::1;:11:::0;22065:1:::1;22051:15;:::i;:::-;:26;;;;:::i;:::-;22034:43:::0;-1:-1:-1;22092:10:0;;22088:79:::1;;22127:9;::::0;22119:36:::1;::::0;-1:-1:-1;;;;;22127:9:0::1;22148:6:::0;22119:28:::1;:36::i;:::-;21015:1159;;;;;;;;;5854:1;-1:-1:-1::0;;5866:8:0;:16;;-1:-1:-1;;5866:16:0;;;20927:1247::o;19509:1410::-;-1:-1:-1;;;;;19704:26:0;;19683:17;19704:26;;;:18;:26;;;;;;;;19703:27;:74;;;;-1:-1:-1;;;;;;19748:29:0;;;;;;:18;:29;;;;;;;;19747:30;19703:74;:130;;;;;19825:8;;19809:13;;:24;;;;:::i;:::-;19794:12;:39;19703:130;19683:150;;19846:28;19877:50;19888:7;19897;19906:6;19914:12;19877:10;:50::i;:::-;-1:-1:-1;;;;;19944:19:0;;;;;;:11;:19;;;;;;19846:81;;-1:-1:-1;19944:19:0;;19940:124;;;-1:-1:-1;;;;;20027:15:0;;;;;;:7;:15;;;;;;:25;;20045:7;;20027:25;:::i;:::-;-1:-1:-1;;;;;20009:15:0;;;;;;:7;:15;;;;;:43;19940:124;-1:-1:-1;;;;;20078:22:0;;;;;;:11;:22;;;;;;;;20074:141;;;20186:17;;;;-1:-1:-1;;;;;20165:18:0;;;;;;:7;:18;;;;;;:38;;20186:17;20165:38;:::i;:::-;-1:-1:-1;;;;;20144:18:0;;;;;;:7;:18;;;;;:59;20074:141;20263:9;;-1:-1:-1;;;;;20245:15:0;;20263:9;20245:15;;;:7;:15;;;;;;:27;;20263:9;20245:27;:::i;:::-;-1:-1:-1;;;;;20227:15:0;;;;;;;:7;:15;;;;;;;;:45;;;;20325:17;;;20304:18;;;;;;;;;;:38;;20325:17;20304:38;:::i;:::-;-1:-1:-1;;;;;20283:18:0;;;;;;:7;:18;;;;;;;:59;;;;20359:6;;;:10;;;:24;;;20382:1;20373;:6;;;:10;20359:24;20355:57;;;20385:27;20397:1;:6;;;20405:1;:6;;;20385:11;:27::i;:::-;20442:1;20427;:12;;;:16;:36;;;;20462:1;20447;:12;;;:16;20427:36;20423:267;;;20480:42;20495:1;:12;;;20509:1;:12;;;20480:14;:42::i;:::-;20602:4;-1:-1:-1;;;;;20542:136:0;20569:6;-1:-1:-1;;;;;20542:136:0;;20656:1;:6;;;20641:1;:12;;;20626:1;:12;;;:27;;;;:::i;:::-;:36;;;;:::i;:::-;20542:136;;20841:25:1;;;20829:2;20814:18;20542:136:0;;;;;;;20423:267;20719:1;20704;:12;;;:16;:36;;;;20739:1;20724;:12;;;:16;20704:36;20700:84;;;20742:42;20757:1;:12;;;20771:1;:12;;;20742:14;:42::i;:::-;20808:1;20799;:6;;;:10;:24;;;;20822:1;20813;:6;;;:10;20799:24;20795:54;;;20825:24;20834:1;:6;;;20842:1;:6;;;20825:8;:24::i;:::-;20882:9;-1:-1:-1;;;;;20865:46:0;20874:6;-1:-1:-1;;;;;20865:46:0;;20893:1;:17;;;20865:46;;;;20841:25:1;;20829:2;20814:18;;20695:177;20865:46:0;;;;;;;;19672:1247;;19509:1410;;;;;:::o;16186:564::-;16284:7;;16320;;16237;;;;;16338:300;16362:9;:16;16358:20;;16338:300;;;16428:7;16404;:21;16412:9;16422:1;16412:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16412:12:0;16404:21;;;;;;;;;;;;;:31;;:66;;;16463:7;16439;:21;16447:9;16457:1;16447:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16447:12:0;16439:21;;;;;;;;;;;;;:31;16404:66;16400:114;;;16497:7;;16506;;16489:25;;;;;;;16186:564;;:::o;16400:114::-;16549:7;:21;16557:9;16567:1;16557:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16557:12:0;16549:21;;;;;;;;;;;;;16539:31;;:7;:31;:::i;:::-;16529:41;;16605:7;:21;16613:9;16623:1;16613:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16613:12:0;16605:21;;;;;;;;;;;;;16595:31;;:7;:31;:::i;:::-;16585:41;-1:-1:-1;16380:3:0;;;;:::i;:::-;;;;16338:300;;;;16672:7;;16662;;:17;;;;:::i;:::-;16652:7;:27;16648:58;;;16689:7;;16698;;16681:25;;;;;;16186:564;;:::o;16648:58::-;16725:7;;16734;;-1:-1:-1;16186:564:0;-1:-1:-1;16186:564:0:o;13903:832::-;14052:28;;:::i;:::-;14098:7;14093:91;;14122:17;;;:27;;;14164:8;;14093:91;14194:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14194:17:0;14226:6;:23;;;;;14237:12;14236:13;14226:23;14222:124;;;-1:-1:-1;14251:16:0;;;;;;;;14258:9;14251:16;;;;;;;;;;;;;;;;;;;;;;;;14222:124;;;14288:12;14283:63;;-1:-1:-1;14302:12:0;;;;;;;;14309:5;14302:12;;;;;;;;;;;;;;;;;;;;;;;;14283:63;;;-1:-1:-1;14330:16:0;;;;;;;;14337:9;14330:16;;;;;;;;;;;;;;;;;;;;;;;;;14283:63;14379:8;;14391:3;;14369:18;;:7;:18;:::i;:::-;14368:26;;;;:::i;:::-;14359:6;;;:35;14431:14;;;;14449:3;;14421:24;;:7;:24;:::i;:::-;14420:32;;;;:::i;:::-;14405:12;;;:47;14489:14;;;;14507:3;;14479:24;;:7;:24;:::i;:::-;14478:32;;;;:::i;:::-;14463:12;;;:47;14541:8;;;;14553:3;;14531:18;;:7;:18;:::i;:::-;14530:26;;;;:::i;:::-;14521:6;;;:35;;;14673:12;;;;14645;;;;14623:6;;;;14600:29;;:7;:29;:::i;:::-;:57;;;;:::i;:::-;:85;;;;:::i;:::-;:107;;;;:::i;:::-;14567:17;;;:140;-1:-1:-1;13903:832:0;;;;;;:::o;14743:912::-;14953:15;;;;;15137:21;15147:11;15137:7;:21;:::i;:::-;15127:31;;15176:7;15171:75;;-1:-1:-1;15208:7:0;;-1:-1:-1;15226:1:0;;-1:-1:-1;15226:1:0;;-1:-1:-1;15226:1:0;15200:34;;15171:75;15274:11;15265:1;:6;;;:20;;;;:::i;:::-;15258:27;;15324:11;15309:1;:12;;;:26;;;;:::i;:::-;15296:39;;15374:11;15359:1;:12;;;:26;;;;:::i;:::-;15346:39;;15396:12;15420:11;15411:1;:6;;;:20;;;;:::i;:::-;15396:35;-1:-1:-1;15396:35:0;15542:10;15516;15473:27;15496:4;15473:7;:27;:::i;:::-;:53;;;;:::i;:::-;:79;;;;:::i;:::-;:99;;;;:::i;:::-;15442:130;;15584:63;14743:912;;;;;;;;;;:::o;15663:346::-;15847:12;15892:7;15887:51;;-1:-1:-1;15924:1:0;15916:10;;15887:51;15966:11;15957:1;:6;;;:20;;;;:::i;22687:554::-;22829:16;;;22843:1;22829:16;;;;;;;;22805:21;;22829:16;;;;;;;;;;-1:-1:-1;22829:16:0;22805:40;;22874:4;22856;22861:1;22856:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22856:23:0;;;:7;;;;;;;;;;:23;;;;22900:6;;:13;;;-1:-1:-1;;;22900:13:0;;;;:6;;;;;:11;;:13;;;;;22856:7;;22900:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22890:4;22895:1;22890:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22890:23:0;;;:7;;;;;;;;;:23;22958:6;;22926:53;;22943:4;;22958:6;22967:11;22926:8;:53::i;:::-;23018:6;;:215;;-1:-1:-1;;;23018:215:0;;-1:-1:-1;;;;;23018:6:0;;;;:57;;:215;;23090:11;;23018:6;;23160:4;;23187;;23207:15;;23018:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22182:497;22362:6;;22330:53;;22347:4;;-1:-1:-1;;;;;22362:6:0;22371:11;22330:8;:53::i;:::-;22426:6;;-1:-1:-1;;;;;22426:6:0;:22;22457:9;22491:4;22511:11;22426:6;;22623:7;1449;1476:6;-1:-1:-1;;;;;1476:6:0;;1403:87;22623:7;22426:245;;;;;;-1:-1:-1;;;;;;22426:245:0;;;-1:-1:-1;;;;;6562:15:1;;;22426:245:0;;;6544:34:1;6594:18;;;6587:34;;;;6637:18;;;6630:34;;;;6680:18;;;6673:34;6744:15;;;6723:19;;;6716:44;22645:15:0;6776:19:1;;;6769:35;6478:19;;22426:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22182:497;;:::o;2986:319::-;3101:6;3076:21;:31;;3068:73;;;;-1:-1:-1;;;3068:73:0;;13540:2:1;3068:73:0;;;13522:21:1;13579:2;13559:18;;;13552:30;13618:31;13598:18;;;13591:59;13667:18;;3068:73:0;13338:353:1;3068:73:0;3155:12;3173:9;-1:-1:-1;;;;;3173:14:0;3196:6;3173:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3154:54;;;3227:7;3219:78;;;;-1:-1:-1;;;3219:78:0;;12761:2:1;3219:78:0;;;12743:21:1;12800:2;12780:18;;;12773:30;12839:34;12819:18;;;12812:62;12910:28;12890:18;;;12883:56;12956:19;;3219:78:0;12559:422:1;12270:125:0;12349:4;12338:7;;:15;;;;;;;:::i;:::-;;;;-1:-1:-1;;12364:11:0;:23;;12383:4;;12364:11;:15;;:23;;12383:4;;12364:23;:::i;:::-;;;;-1:-1:-1;;;;12270:125:0:o;12403:280::-;12511:10;12486:11;:21;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;12558:4:0;12538:26;;;;:11;:26;;;;;;;;12534:95;;;12597:4;12581:22;;;;:7;:22;;;;;:36;;12607:10;;12581:22;:36;;12607:10;;12581:36;:::i;:::-;;;;-1:-1:-1;;12534:95:0;12655:4;12639:22;;;;:7;:22;;;;;:36;;12665:10;;12639:22;:36;;12665:10;;12639:36;:::i;12691:280::-;12799:10;12774:11;:21;;;:35;;;;;;;:::i;12979:238::-;13063:4;13044:11;:15;;;:23;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:128::-;218:20;;247:28;218:20;247:28;:::i;286:247::-;345:6;398:2;386:9;377:7;373:23;369:32;366:52;;;414:1;411;404:12;366:52;453:9;440:23;472:31;497:5;472:31;:::i;538:251::-;608:6;661:2;649:9;640:7;636:23;632:32;629:52;;;677:1;674;667:12;629:52;709:9;703:16;728:31;753:5;728:31;:::i;794:388::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;978:9;965:23;997:31;1022:5;997:31;:::i;:::-;1047:5;-1:-1:-1;1104:2:1;1089:18;;1076:32;1117:33;1076:32;1117:33;:::i;:::-;1169:7;1159:17;;;794:388;;;;;:::o;1187:456::-;1264:6;1272;1280;1333:2;1321:9;1312:7;1308:23;1304:32;1301:52;;;1349:1;1346;1339:12;1301:52;1388:9;1375:23;1407:31;1432:5;1407:31;:::i;:::-;1457:5;-1:-1:-1;1514:2:1;1499:18;;1486:32;1527:33;1486:32;1527:33;:::i;:::-;1187:456;;1579:7;;-1:-1:-1;;;1633:2:1;1618:18;;;;1605:32;;1187:456::o;1648:315::-;1716:6;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;1953:2;1938:18;;;;1925:32;;-1:-1:-1;;;1648:315:1:o;1968:1202::-;2058:6;2066;2119:2;2107:9;2098:7;2094:23;2090:32;2087:52;;;2135:1;2132;2125:12;2087:52;2175:9;2162:23;2204:18;2245:2;2237:6;2234:14;2231:34;;;2261:1;2258;2251:12;2231:34;2299:6;2288:9;2284:22;2274:32;;2344:7;2337:4;2333:2;2329:13;2325:27;2315:55;;2366:1;2363;2356:12;2315:55;2402:2;2389:16;2424:4;2447:2;2443;2440:10;2437:36;;;2453:18;;:::i;:::-;2499:2;2496:1;2492:10;2531:2;2525:9;2594:2;2590:7;2585:2;2581;2577:11;2573:25;2565:6;2561:38;2649:6;2637:10;2634:22;2629:2;2617:10;2614:18;2611:46;2608:72;;;2660:18;;:::i;:::-;2696:2;2689:22;2746:18;;;2780:15;;;;-1:-1:-1;2815:11:1;;;2845;;;2841:20;;2838:33;-1:-1:-1;2835:53:1;;;2884:1;2881;2874:12;2835:53;2906:1;2897:10;;2916:169;2930:2;2927:1;2924:9;2916:169;;;2987:23;3006:3;2987:23;:::i;:::-;2975:36;;2948:1;2941:9;;;;;3031:12;;;;3063;;2916:169;;;-1:-1:-1;3104:6:1;-1:-1:-1;3129:35:1;;-1:-1:-1;3145:18:1;;;3129:35;:::i;:::-;3119:45;;;;;;1968:1202;;;;;:::o;3175:241::-;3231:6;3284:2;3272:9;3263:7;3259:23;3255:32;3252:52;;;3300:1;3297;3290:12;3252:52;3339:9;3326:23;3358:28;3380:5;3358:28;:::i;3421:245::-;3488:6;3541:2;3529:9;3520:7;3516:23;3512:32;3509:52;;;3557:1;3554;3547:12;3509:52;3589:9;3583:16;3608:28;3630:5;3608:28;:::i;3671:309::-;3736:6;3744;3797:2;3785:9;3776:7;3772:23;3768:32;3765:52;;;3813:1;3810;3803:12;3765:52;3852:9;3839:23;3871:28;3893:5;3871:28;:::i;3985:180::-;4044:6;4097:2;4085:9;4076:7;4072:23;4068:32;4065:52;;;4113:1;4110;4103:12;4065:52;-1:-1:-1;4136:23:1;;3985:180;-1:-1:-1;3985:180:1:o;4170:309::-;4235:6;4243;4296:2;4284:9;4275:7;4271:23;4267:32;4264:52;;;4312:1;4309;4302:12;4264:52;4348:9;4335:23;4325:33;;4408:2;4397:9;4393:18;4380:32;4421:28;4443:5;4421:28;:::i;4484:316::-;4561:6;4569;4577;4630:2;4618:9;4609:7;4605:23;4601:32;4598:52;;;4646:1;4643;4636:12;4598:52;-1:-1:-1;;4669:23:1;;;4739:2;4724:18;;4711:32;;-1:-1:-1;4790:2:1;4775:18;;;4762:32;;4484:316;-1:-1:-1;4484:316:1:o;4805:306::-;4893:6;4901;4909;4962:2;4950:9;4941:7;4937:23;4933:32;4930:52;;;4978:1;4975;4968:12;4930:52;5007:9;5001:16;4991:26;;5057:2;5046:9;5042:18;5036:25;5026:35;;5101:2;5090:9;5086:18;5080:25;5070:35;;4805:306;;;;;:::o;5116:385::-;5202:6;5210;5218;5226;5279:3;5267:9;5258:7;5254:23;5250:33;5247:53;;;5296:1;5293;5286:12;5247:53;-1:-1:-1;;5319:23:1;;;5389:2;5374:18;;5361:32;;-1:-1:-1;5440:2:1;5425:18;;5412:32;;5491:2;5476:18;5463:32;;-1:-1:-1;5116:385:1;-1:-1:-1;5116:385:1:o;7230:597::-;7342:4;7371:2;7400;7389:9;7382:21;7432:6;7426:13;7475:6;7470:2;7459:9;7455:18;7448:34;7500:1;7510:140;7524:6;7521:1;7518:13;7510:140;;;7619:14;;;7615:23;;7609:30;7585:17;;;7604:2;7581:26;7574:66;7539:10;;7510:140;;;7668:6;7665:1;7662:13;7659:91;;;7738:1;7733:2;7724:6;7713:9;7709:22;7705:31;7698:42;7659:91;-1:-1:-1;7811:2:1;7790:15;-1:-1:-1;;7786:29:1;7771:45;;;;7818:2;7767:54;;7230:597;-1:-1:-1;;;7230:597:1:o;14054:398::-;14256:2;14238:21;;;14295:2;14275:18;;;14268:30;14334:34;14329:2;14314:18;;14307:62;-1:-1:-1;;;14400:2:1;14385:18;;14378:32;14442:3;14427:19;;14054:398::o;16758:356::-;16960:2;16942:21;;;16979:18;;;16972:30;17038:34;17033:2;17018:18;;17011:62;17105:2;17090:18;;16758:356::o;20877:980::-;21139:4;21187:3;21176:9;21172:19;21218:6;21207:9;21200:25;21244:2;21282:6;21277:2;21266:9;21262:18;21255:34;21325:3;21320:2;21309:9;21305:18;21298:31;21349:6;21384;21378:13;21415:6;21407;21400:22;21453:3;21442:9;21438:19;21431:26;;21492:2;21484:6;21480:15;21466:29;;21513:1;21523:195;21537:6;21534:1;21531:13;21523:195;;;21602:13;;-1:-1:-1;;;;;21598:39:1;21586:52;;21693:15;;;;21658:12;;;;21634:1;21552:9;21523:195;;;-1:-1:-1;;;;;;;21774:32:1;;;;21769:2;21754:18;;21747:60;-1:-1:-1;;;21838:3:1;21823:19;21816:35;21735:3;20877:980;-1:-1:-1;;;20877:980:1:o;22447:128::-;22487:3;22518:1;22514:6;22511:1;22508:13;22505:39;;;22524:18;;:::i;:::-;-1:-1:-1;22560:9:1;;22447:128::o;22580:217::-;22620:1;22646;22636:132;;22690:10;22685:3;22681:20;22678:1;22671:31;22725:4;22722:1;22715:15;22753:4;22750:1;22743:15;22636:132;-1:-1:-1;22782:9:1;;22580:217::o;22802:422::-;22891:1;22934:5;22891:1;22948:270;22969:7;22959:8;22956:21;22948:270;;;23028:4;23024:1;23020:6;23016:17;23010:4;23007:27;23004:53;;;23037:18;;:::i;:::-;23087:7;23077:8;23073:22;23070:55;;;23107:16;;;;23070:55;23186:22;;;;23146:15;;;;22948:270;;;22952:3;22802:422;;;;;:::o;23229:140::-;23287:5;23316:47;23357:4;23347:8;23343:19;23337:4;23423:5;23453:8;23443:80;;-1:-1:-1;23494:1:1;23508:5;;23443:80;23542:4;23532:76;;-1:-1:-1;23579:1:1;23593:5;;23532:76;23624:4;23642:1;23637:59;;;;23710:1;23705:130;;;;23617:218;;23637:59;23667:1;23658:10;;23681:5;;;23705:130;23742:3;23732:8;23729:17;23726:43;;;23749:18;;:::i;:::-;-1:-1:-1;;23805:1:1;23791:16;;23820:5;;23617:218;;23919:2;23909:8;23906:16;23900:3;23894:4;23891:13;23887:36;23881:2;23871:8;23868:16;23863:2;23857:4;23854:12;23850:35;23847:77;23844:159;;;-1:-1:-1;23956:19:1;;;23988:5;;23844:159;24035:34;24060:8;24054:4;24035:34;:::i;:::-;24105:6;24101:1;24097:6;24093:19;24084:7;24081:32;24078:58;;;24116:18;;:::i;:::-;24154:20;;23374:806;-1:-1:-1;;;23374:806:1:o;24185:168::-;24225:7;24291:1;24287;24283:6;24279:14;24276:1;24273:21;24268:1;24261:9;24254:17;24250:45;24247:71;;;24298:18;;:::i;:::-;-1:-1:-1;24338:9:1;;24185:168::o;24358:125::-;24398:4;24426:1;24423;24420:8;24417:34;;;24431:18;;:::i;:::-;-1:-1:-1;24468:9:1;;24358:125::o;24488:135::-;24527:3;-1:-1:-1;;24548:17:1;;24545:43;;;24568:18;;:::i;:::-;-1:-1:-1;24615:1:1;24604:13;;24488:135::o;24628:127::-;24689:10;24684:3;24680:20;24677:1;24670:31;24720:4;24717:1;24710:15;24744:4;24741:1;24734:15;24760:127;24821:10;24816:3;24812:20;24809:1;24802:31;24852:4;24849:1;24842:15;24876:4;24873:1;24866:15;24892:127;24953:10;24948:3;24944:20;24941:1;24934:31;24984:4;24981:1;24974:15;25008:4;25005:1;24998:15;25024:127;25085:10;25080:3;25076:20;25073:1;25066:31;25116:4;25113:1;25106:15;25140:4;25137:1;25130:15;25156:131;-1:-1:-1;;;;;25231:31:1;;25221:42;;25211:70;;25277:1;25274;25267:12;25292:118;25378:5;25371:13;25364:21;25357:5;25354:32;25344:60;;25400:1;25397;25390:12

Swarm Source

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