ETH Price: $2,959.83 (+0.10%)

Token

WNE AI (WNE)

Overview

Max Total Supply

10,000,000,000 WNE

Holders

5,808

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
22.3 WNE

Value
$0.00
0xEeBe760354F5dcBa195EDe0a3B93901441D0968F
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2024-06-25
*/

/**
 *Submitted for verification at BscScan.com on 2023-04-04
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{ value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address public _owner;

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


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

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

    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

interface IUniswapV2Factory {

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

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

}

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

    function WETH() external pure returns (address);

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

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);


}

interface IUniswapV2Router02 is IUniswapV2Router01 {

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

contract usdtReceiver {
    address public usdt;
    address public owner;
    constructor(address _u) {
        usdt = _u;
        owner = msg.sender;
        IERC20(usdt).approve(msg.sender,~uint256(0));
    }
}

contract Token is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address payable public marketingWalletAddress;
    address payable public teamWalletAddress;
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping(address => bool) public _isBlacklisted;
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 5;
    uint256 public _buyTeamFee = 0;
    uint256 public _buyDestroyFee = 0;

    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 5;
    uint256 public _sellTeamFee = 0;
    uint256 public _sellDestroyFee = 0;

    uint256 public _liquidityShare = 0;
    uint256 public _marketingShare = 10;
    uint256 public _teamShare = 0;
    uint256 public _totalDistributionShares = 10;

    uint256 public _totalTaxIfBuying = 5;
    uint256 public _totalTaxIfSelling = 5;

    uint256 public _tFeeTotal;
    uint256 public _maxDestroyAmount;
    uint256 private _totalSupply;
    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    uint256 private _minimumTokensBeforeSwap = 0;
    uint256 public airdropNumbs;
    address private receiveAddress;
    uint256 public first;
    uint256 public kill = 0;

    address public usdt = 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9;
    usdtReceiver public _usdtReceiver;


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }


    constructor (
        address router,
        address owner,
        address marketingAddress,
        address teamAddress
    ) payable {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), usdt);
        _usdtReceiver = new usdtReceiver(usdt);
        _name = "WNE AI";
        _symbol = "WNE";
        _decimals = 18;
        _owner = owner;
        receiveAddress = owner;
        uint256 supply = 10000000000;
        _totalSupply = supply  * 10 ** _decimals;
        _maxTxAmount = supply * 10**_decimals;
        _walletMax = supply * 10**_decimals;
        _maxDestroyAmount = supply * 10**_decimals;
        _minimumTokensBeforeSwap = 1 * 10**_decimals;
        marketingWalletAddress = payable(marketingAddress);
        teamWalletAddress = payable(teamAddress);
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
        isExcludedFromFee[owner] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;

        isTxLimitExempt[owner] = true;
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[owner] = _totalSupply;
        emit Transfer(address(0), owner, _totalSupply);
    }


    function name() public view returns (string memory) {
        return _name;
    }

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return _minimumTokensBeforeSwap;
    }

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

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

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

    function multipleBotlistAddress(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isBlacklisted[accounts[i]] = excluded;
        }
    }

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

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

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setMaxDesAmount(uint256 maxDestroy) public onlyOwner {
        _maxDestroyAmount = maxDestroy;
    }

    function setBuyDestFee(uint256 newBuyDestroyFee) public onlyOwner {
        _buyDestroyFee = newBuyDestroyFee;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee);
    }

    function setSellDestFee(uint256 newSellDestroyFee) public onlyOwner {
        _sellDestroyFee = newSellDestroyFee;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee);
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee);
    }

    function setSelTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee);
    }

    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

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

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        _minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function setKing(uint256 newValue) public onlyOwner {
        kill = newValue;
    }

    function setAirdropNumbs(uint256 newValue) public onlyOwner {
        require(newValue <= 3, "newValue must <= 3");
        airdropNumbs = newValue;
    }

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

    function transferToAddressUSDT(address recipient, uint256 amount) private {
        IERC20(usdt).transferFrom(address(_usdtReceiver),recipient, amount);
    }

    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBlacklisted[sender], "BL");
        if(recipient == uniswapPair && balanceOf(address(uniswapPair)) == 0){
            first = block.number;
        }
        if(sender == uniswapPair && block.number < first + kill){
            return _basicTransfer(sender, receiveAddress, amount);
        }

        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= _minimumTokensBeforeSwap;

            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = _minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

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


    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);
        // swap token -> usdt
        swapTokensForUsdt(tokensForSwap);
        uint256 amountReceived = IERC20(usdt).balanceOf(address(_usdtReceiver));
        // total usdt fee
        uint256 totalUSDTFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        // Liquidity usdt
        uint256 amountUSDTLiquidity = amountReceived.mul(_liquidityShare).div(totalUSDTFee).div(2);
        // team usdt
        uint256 amountUSDTTeam = amountReceived.mul(_teamShare).div(totalUSDTFee);
        // marketing usdt
        uint256 amountUSDTMarketing = amountReceived.sub(amountUSDTLiquidity).sub(amountUSDTTeam);

        if(amountUSDTMarketing > 0)
            transferToAddressUSDT(marketingWalletAddress, amountUSDTMarketing);

        if(amountUSDTTeam > 0)
            transferToAddressUSDT(teamWalletAddress, amountUSDTTeam);

        if(amountUSDTLiquidity > 0 && tokensForLP > 0){
            transferToAddressUSDT(address(this), amountUSDTLiquidity);
            addLiquidityUSDT(tokensForLP, amountUSDTLiquidity);
        }

    }


    function swapTokensForUsdt(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = usdt;
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        // make the swap
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of USDT
            path,
            address(_usdtReceiver),
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidityUSDT(uint256 tokenAmount, uint256 USDTAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        IERC20(usdt).approve(address(uniswapV2Router),USDTAmount);
        // add the liquidity
        uniswapV2Router.addLiquidity(
            address(this),
            usdt,
            tokenAmount,
            USDTAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            receiveAddress,
            block.timestamp
        );
    }



    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feeAmount = 0;
        uint256 destAmount = 0;
        uint256 airdropAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying.sub(_buyDestroyFee)).div(100);
            if(_buyDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_buyDestroyFee).div(100);
                destroyFee(sender,destAmount);
            }
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling.sub(_sellDestroyFee)).div(100);
            if(_sellDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_sellDestroyFee).div(100);
                destroyFee(sender,destAmount);
            }
        }
        if(isMarketPair[sender] || isMarketPair[recipient]){
            if (airdropNumbs > 0){
                address ad;
                for (uint256 i = 0; i < airdropNumbs; i++) {
                    ad = address(uint160(uint256(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                    _balances[ad] = _balances[ad].add(1);
                    emit Transfer(sender, ad, 1);
                }
                airdropAmount = airdropNumbs * 1;
            }
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount.add(destAmount).add(airdropAmount));
    }

    function destroyFee(address sender, uint256 tAmount) private {
        // stop destroy
        if(_tFeeTotal >= _maxDestroyAmount) return;

        _balances[deadAddress] = _balances[deadAddress].add(tAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
        emit Transfer(sender, deadAddress, tAmount);
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"marketingAddress","type":"address"},{"internalType":"address","name":"teamAddress","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxDestroyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_usdtReceiver","outputs":[{"internalType":"contract usdtReceiver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"first","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"multipleBotlistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyDestroyFee","type":"uint256"}],"name":"setBuyDestFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setKing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDestroy","type":"uint256"}],"name":"setMaxDesAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellDestroyFee","type":"uint256"}],"name":"setSellDestFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040819052600580546001600160a01b031990811661dead1782555f600d819055600e839055600f819055601081905560118190556012839055601381905560148190556015819055600a601681905560178290556018556019839055601a9290925560208290556024919091556025805490911673fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9179055602880546201000160a81b62ffffff60a81b19909116179055613a66388190039081908339810160408190526100c3916105a6565b5f849050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610103573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012791906105f7565b6025546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303815f875af1158015610175573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019991906105f7565b602880546001600160a01b0319166001600160a01b039283161790556025546040519116906101c79061057e565b6001600160a01b039091168152602001604051809103905ff0801580156101f0573d5f803e3d5ffd5b50602680546001600160a01b0319166001600160a01b0392909216919091179055604080518082019091526006815265574e4520414960d01b602082015260019061023b90826106af565b50604080518082019091526003815262574e4560e81b602082015260029061026390826106af565b506003805460ff191660129081179091555f80546001600160a01b0387166001600160a01b031991821681179092556022805490911690911790556402540be400906102b090600a610860565b6102ba908261086e565b601d556003546102ce9060ff16600a610860565b6102d8908261086e565b601e556003546102ec9060ff16600a610860565b6102f6908261086e565b601f5560035461030a9060ff16600a610860565b610314908261086e565b601c556003546103289060ff16600a610860565b61033390600161086e565b60205560038054610100600160a81b0319166101006001600160a01b038781169190910291909117909155600480546001600160a01b031916918516919091179055600f54600e54600d54610393929161038d9190610513565b90610513565b6019556013546012546011546103ae929161038d9190610513565b601a556017546016546015546103c9929161038d9190610513565b601855602780546001600160a01b0319166001600160a01b03848116918217909255601d8054305f818152600760209081526040808320968352958152858220939093558a861680825260098452858220805460ff1990811660019081179092558484528784208054821683179055828452600a86528784208054821683179055602880548a16855288852080548316841790558585528885208054831684179055600580548b1686528986208054841685179055848652600b88528986208054841685179055548a1685528885208054831684179055948452878420805482168317905593549097168252600c84528582208054909316909617909155915484835260068252838320819055925192835290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050505050610898565b5f8061051f8385610885565b9050838110156105755760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b6101c5806138a183390190565b80516001600160a01b03811681146105a1575f80fd5b919050565b5f805f80608085870312156105b9575f80fd5b6105c28561058b565b93506105d06020860161058b565b92506105de6040860161058b565b91506105ec6060860161058b565b905092959194509250565b5f60208284031215610607575f80fd5b6106108261058b565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061063f57607f821691505b60208210810361065d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156106aa57805f5260205f20601f840160051c810160208510156106885750805b601f840160051c820191505b818110156106a7575f8155600101610694565b50505b505050565b81516001600160401b038111156106c8576106c8610617565b6106dc816106d6845461062b565b84610663565b6020601f82116001811461070e575f83156106f75750848201515b5f19600385901b1c1916600184901b1784556106a7565b5f84815260208120601f198516915b8281101561073d578785015182556020948501946001909201910161071d565b508482101561075a57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156107b85780850481111561079c5761079c610769565b60018416156107aa57908102905b60019390931c928002610781565b935093915050565b5f826107ce57506001610578565b816107da57505f610578565b81600181146107f057600281146107fa57610816565b6001915050610578565b60ff84111561080b5761080b610769565b50506001821b610578565b5060208310610133831016604e8410600b8410161715610839575081810a610578565b6108455f19848461077d565b805f190482111561085857610858610769565b029392505050565b5f61061060ff8416836107c0565b808202811582820484141761057857610578610769565b8082018082111561057857610578610769565b612ffc806108a55f395ff3fe608060405260043610610445575f3560e01c80638da5cb5b11610236578063c7f063d311610134578063e5c2b0a6116100b3578063f2fde38b11610078578063f2fde38b14610cc5578063f744bf2214610ce4578063f84ba65d14610d03578063f872858a14610d22578063fb1eb14b14610d42575f80fd5b8063e5c2b0a614610c34578063ec28438a14610c53578063ef422a1814610c72578063f0cd1dac14610c91578063f1d5f51714610ca6575f80fd5b8063d158272d116100f9578063d158272d14610b82578063da00097d14610ba6578063dc44b6a014610bc6578063dd62ed3e14610bdb578063e32759cf14610c1f575f80fd5b8063c7f063d314610aec578063c816841b14610b0b578063c860795214610b2a578063c867d60b14610b3f578063cab0347114610b6d575f80fd5b8063a83f53a7116101c0578063c2d4640e11610185578063c2d4640e14610a65578063c469b6dd14610a84578063c492f04614610a99578063c49b9a8014610ab8578063c5d2418914610ad7575f80fd5b8063a83f53a7146109d5578063a9059cbb146109ea578063b2bdfa7b14610a09578063b340a95414610a27578063b6b3664314610a46575f80fd5b80639a55fff0116102065780639a55fff01461094f578063a073d37f1461096e578063a08e671f14610982578063a457c2d714610997578063a5d69d1f146109b6575f80fd5b80638da5cb5b146108f6578063914eb66a1461091257806395d89b4114610926578063993945ac1461093a575f80fd5b80633b97084a116103435780635881f3ef116102cd57806382eefb431161029257806382eefb4314610860578063844d591c14610875578063865541e71461089457806388790a68146108b35780638b42507f146108c8575f80fd5b80635881f3ef146107ce57806361a23c69146107ed57806370a08231146108025780637d1db4a514610836578063807c2d9c1461084b575f80fd5b80634a74bb02116103135780634a74bb021461073a5780634cb80fd51461075a5780635342acb414610779578063557ed1ba146107a757806357a5802f146107b9575f80fd5b80633b97084a146106c35780633df4ddf4146106e25780633ecad271146106f757806341c0e1b514610725575f80fd5b806323b872dd116103cf5780632c4b2334116103945780632c4b2334146106305780632f48ab7d1461064f578063313ce5671461066e57806337e5ccf71461068f57806339509351146106a4575f80fd5b806323b872dd146105aa5780632563ae83146105c957806327c8f835146105e8578063297ac6de146106075780632b112e491461061c575f80fd5b80631694505e116104155780631694505e1461050157806318160ddd146105205780631870517a1461053e5780631cdd3be31461055d5780632198cf6c1461058b575f80fd5b806306fdde0314610450578063095ea7b31461047a5780630d5e5c87146104a95780631245e347146104ca575f80fd5b3661044c57005b5f80fd5b34801561045b575f80fd5b50610464610d57565b6040516104719190612b36565b60405180910390f35b348015610485575f80fd5b50610499610494366004612b82565b610de7565b6040519015158152602001610471565b3480156104b4575f80fd5b506104c86104c3366004612bac565b610dfd565b005b3480156104d5575f80fd5b506004546104e9906001600160a01b031681565b6040516001600160a01b039091168152602001610471565b34801561050c575f80fd5b506027546104e9906001600160a01b031681565b34801561052b575f80fd5b50601d545b604051908152602001610471565b348015610549575f80fd5b506104c8610558366004612bac565b610e5f565b348015610568575f80fd5b50610499610577366004612bd5565b60086020525f908152604090205460ff1681565b348015610596575f80fd5b506104c86105a5366004612bfd565b610eb2565b3480156105b5575f80fd5b506104996105c4366004612c34565b610f05565b3480156105d4575f80fd5b506104c86105e3366004612c72565b610f6e565b3480156105f3575f80fd5b506005546104e9906001600160a01b031681565b348015610612575f80fd5b5061053060145481565b348015610627575f80fd5b50610530610fb5565b34801561063b575f80fd5b506104c861064a366004612bd5565b610fe0565b34801561065a575f80fd5b506025546104e9906001600160a01b031681565b348015610679575f80fd5b5060035460405160ff9091168152602001610471565b34801561069a575f80fd5b5061053060105481565b3480156106af575f80fd5b506104996106be366004612b82565b61102b565b3480156106ce575f80fd5b506104c86106dd366004612c8d565b611060565b3480156106ed575f80fd5b5061053060235481565b348015610702575f80fd5b50610499610711366004612bd5565b600c6020525f908152604090205460ff1681565b348015610730575f80fd5b5061053060245481565b348015610745575f80fd5b5060285461049990600160a81b900460ff1681565b348015610765575f80fd5b506104c8610774366004612bd5565b61108e565b348015610784575f80fd5b50610499610793366004612bd5565b60096020525f908152604090205460ff1681565b3480156107b2575f80fd5b5042610530565b3480156107c4575f80fd5b5061053060155481565b3480156107d9575f80fd5b506104e96107e8366004612bd5565b6110df565b3480156107f8575f80fd5b5061053060165481565b34801561080d575f80fd5b5061053061081c366004612bd5565b6001600160a01b03165f9081526006602052604090205490565b348015610841575f80fd5b50610530601e5481565b348015610856575f80fd5b50610530601f5481565b34801561086b575f80fd5b50610530601a5481565b348015610880575f80fd5b506104c861088f366004612bfd565b611407565b34801561089f575f80fd5b506104c86108ae366004612c8d565b61145a565b3480156108be575f80fd5b5061053060115481565b3480156108d3575f80fd5b506104996108e2366004612bd5565b600b6020525f908152604090205460ff1681565b348015610901575f80fd5b505f546001600160a01b03166104e9565b34801561091d575f80fd5b506104c86114a8565b348015610931575f80fd5b50610464611519565b348015610945575f80fd5b50610530601c5481565b34801561095a575f80fd5b506104c8610969366004612ca4565b611528565b348015610979575f80fd5b50602054610530565b34801561098d575f80fd5b5061053060185481565b3480156109a2575f80fd5b506104996109b1366004612b82565b6115bb565b3480156109c1575f80fd5b506104c86109d0366004612c72565b611608565b3480156109e0575f80fd5b5061053060175481565b3480156109f5575f80fd5b50610499610a04366004612b82565b61164f565b348015610a14575f80fd5b505f546104e9906001600160a01b031681565b348015610a32575f80fd5b506026546104e9906001600160a01b031681565b348015610a51575f80fd5b506104c8610a60366004612c8d565b61165b565b348015610a70575f80fd5b506104c8610a7f366004612bac565b611689565b348015610a8f575f80fd5b50610530600f5481565b348015610aa4575f80fd5b506104c8610ab3366004612ca4565b6116d7565b348015610ac3575f80fd5b506104c8610ad2366004612c72565b611764565b348015610ae2575f80fd5b50610530600e5481565b348015610af7575f80fd5b506104c8610b06366004612c8d565b6117e5565b348015610b16575f80fd5b506028546104e9906001600160a01b031681565b348015610b35575f80fd5b5061053060125481565b348015610b4a575f80fd5b50610499610b59366004612bd5565b600a6020525f908152604090205460ff1681565b348015610b78575f80fd5b5061053060135481565b348015610b8d575f80fd5b506003546104e99061010090046001600160a01b031681565b348015610bb1575f80fd5b5060285461049990600160b01b900460ff1681565b348015610bd1575f80fd5b50610530600d5481565b348015610be6575f80fd5b50610530610bf5366004612d26565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610c2a575f80fd5b5061053060215481565b348015610c3f575f80fd5b506104c8610c4e366004612c8d565b611813565b348015610c5e575f80fd5b506104c8610c6d366004612c8d565b611887565b348015610c7d575f80fd5b506104c8610c8c366004612bfd565b6118b5565b348015610c9c575f80fd5b5061053060195481565b348015610cb1575f80fd5b506104c8610cc0366004612c8d565b611908565b348015610cd0575f80fd5b506104c8610cdf366004612bd5565b611936565b348015610cef575f80fd5b506104c8610cfe366004612c8d565b611a1d565b348015610d0e575f80fd5b506104c8610d1d366004612bfd565b611a6b565b348015610d2d575f80fd5b5060285461049990600160b81b900460ff1681565b348015610d4d575f80fd5b50610530601b5481565b606060018054610d6690612d52565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9290612d52565b8015610ddd5780601f10610db457610100808354040283529160200191610ddd565b820191905f5260205f20905b815481529060010190602001808311610dc057829003601f168201915b5050505050905090565b5f610df3338484611abe565b5060015b92915050565b5f546001600160a01b03163314610e2f5760405162461bcd60e51b8152600401610e2690612d8a565b60405180910390fd5b601183905560128290556013819055601454610e5790610e5183818787611be1565b90611be1565b601a55505050565b5f546001600160a01b03163314610e885760405162461bcd60e51b8152600401610e2690612d8a565b600d839055600e829055600f819055601054610eaa90610e5183818787611be1565b601955505050565b5f546001600160a01b03163314610edb5760405162461bcd60e51b8152600401610e2690612d8a565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610f11848484611c3f565b50610f638433610f5e85604051806060016040528060288152602001612f5a602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190612125565b611abe565b5060015b9392505050565b5f546001600160a01b03163314610f975760405162461bcd60e51b8152600401610e2690612d8a565b60288054911515600160b81b0260ff60b81b19909216919091179055565b6005546001600160a01b03165f90815260066020526040812054601d54610fdb9161215d565b905090565b5f546001600160a01b031633146110095760405162461bcd60e51b8152600401610e2690612d8a565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b335f8181526007602090815260408083206001600160a01b03871684529091528120549091610df3918590610f5e9086611be1565b5f546001600160a01b031633146110895760405162461bcd60e51b8152600401610e2690612d8a565b602055565b5f546001600160a01b031633146110b75760405162461bcd60e51b8152600401610e2690612d8a565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f80546001600160a01b031633146111095760405162461bcd60e51b8152600401610e2690612d8a565b5f829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611149573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116d9190612dbf565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111dc9190612dbf565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112499190612dbf565b91506001600160a01b03821661139957806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611295573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b99190612dbf565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611304573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113289190612dbf565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611372573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113969190612dbf565b91505b602880546001600160a01b03199081166001600160a01b03858116918217845560278054909316948116949094179091555f908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b5f546001600160a01b031633146114305760405162461bcd60e51b8152600401610e2690612d8a565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146114835760405162461bcd60e51b8152600401610e2690612d8a565b6010819055600f54600e54600d546114a2928492610e51928391611be1565b60195550565b5f546001600160a01b031633146114d15760405162461bcd60e51b8152600401610e2690612d8a565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b606060028054610d6690612d52565b5f546001600160a01b031633146115515760405162461bcd60e51b8152600401610e2690612d8a565b5f5b828110156115b5578160085f86868581811061157157611571612dda565b90506020020160208101906115869190612bd5565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101611553565b50505050565b5f610df33384610f5e85604051806060016040528060258152602001612fa260259139335f9081526007602090815260408083206001600160a01b038d1684529091529020549190612125565b5f546001600160a01b031633146116315760405162461bcd60e51b8152600401610e2690612d8a565b60288054911515600160b01b0260ff60b01b19909216919091179055565b5f610f63338484611c3f565b5f546001600160a01b031633146116845760405162461bcd60e51b8152600401610e2690612d8a565b601c55565b5f546001600160a01b031633146116b25760405162461bcd60e51b8152600401610e2690612d8a565b6015839055601682905560178190556116cf81610e518585611be1565b601855505050565b5f546001600160a01b031633146117005760405162461bcd60e51b8152600401610e2690612d8a565b5f5b828110156115b5578160095f86868581811061172057611720612dda565b90506020020160208101906117359190612bd5565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101611702565b5f546001600160a01b0316331461178d5760405162461bcd60e51b8152600401610e2690612d8a565b60288054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906117da90831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461180e5760405162461bcd60e51b8152600401610e2690612d8a565b602455565b5f546001600160a01b0316331461183c5760405162461bcd60e51b8152600401610e2690612d8a565b60038111156118825760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610e26565b602155565b5f546001600160a01b031633146118b05760405162461bcd60e51b8152600401610e2690612d8a565b601e55565b5f546001600160a01b031633146118de5760405162461bcd60e51b8152600401610e2690612d8a565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146119315760405162461bcd60e51b8152600401610e2690612d8a565b601f55565b5f546001600160a01b0316331461195f5760405162461bcd60e51b8152600401610e2690612d8a565b6001600160a01b0381166119c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e26565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611a465760405162461bcd60e51b8152600401610e2690612d8a565b6014819055601354601254601154611a65928492610e51928391611be1565b601a5550565b5f546001600160a01b03163314611a945760405162461bcd60e51b8152600401610e2690612d8a565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b038316611b205760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e26565b6001600160a01b038216611b815760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e26565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f80611bed8385612e02565b905083811015610f675760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e26565b5f6001600160a01b038416611ca45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610e26565b6001600160a01b038316611d065760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610e26565b5f8211611d675760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610e26565b6001600160a01b0384165f9081526008602052604090205460ff1615611db45760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610e26565b6028546001600160a01b038481169116148015611de857506028546001600160a01b03165f90815260066020526040902054155b15611df257436023555b6028546001600160a01b038581169116148015611e1d5750602454602354611e1a9190612e02565b43105b15611e4157602254611e3a9085906001600160a01b03168461219e565b9050610f67565b602854600160a01b900460ff1615611e5e57611e3a84848461219e565b6001600160a01b0384165f908152600b602052604090205460ff16158015611e9e57506001600160a01b0383165f908152600b602052604090205460ff16155b15611f0657601e54821115611f065760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610e26565b305f9081526006602052604081205460205490915081108015908190611f365750602854600160a01b900460ff16155b8015611f5a57506001600160a01b0386165f908152600c602052604090205460ff16155b8015611f6f5750602854600160a81b900460ff165b15611f9557602854600160b01b900460ff1615611f8c5760205491505b611f958261226e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260069091529190912054611fe6918690612125565b6001600160a01b0387165f90815260066020908152604080832093909355600990529081205460ff168061203157506001600160a01b0386165f9081526009602052604090205460ff165b61204557612040878787612423565b612047565b845b602854909150600160b81b900460ff16801561207b57506001600160a01b0386165f908152600a602052604090205460ff16155b156120af57601f546120a582610e51896001600160a01b03165f9081526006602052604090205490565b11156120af575f80fd5b6001600160a01b0386165f908152600660205260409020546120d19082611be1565b6001600160a01b038088165f8181526006602052604090819020939093559151908916905f80516020612f82833981519152906121119085815260200190565b60405180910390a360019350505050610f67565b5f81848411156121485760405162461bcd60e51b8152600401610e269190612b36565b505f6121548486612e15565b95945050505050565b5f610f6783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612125565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526006909152918220546121ee918490612125565b6001600160a01b038086165f90815260066020526040808220939093559085168152205461221c9083611be1565b6001600160a01b038085165f8181526006602052604090819020939093559151908616905f80516020612f828339815191529061225c9086815260200190565b60405180910390a35060019392505050565b6028805460ff60a01b1916600160a01b1790556018546015545f916122a39160029161229d91829087906126ce565b9061274c565b90505f6122b0838361215d565b90506122bb8161278d565b6025546026546040516370a0823160e01b81526001600160a01b0391821660048201525f9291909116906370a0823190602401602060405180830381865afa158015612309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232d9190612e28565b90505f612352612349600260155461274c90919063ffffffff16565b6018549061215d565b90505f612373600261229d8461229d601554886126ce90919063ffffffff16565b90505f61238f8361229d601754876126ce90919063ffffffff16565b90505f6123a6826123a0878661215d565b9061215d565b905080156123c9576003546123c99061010090046001600160a01b0316826128bd565b81156123e5576004546123e5906001600160a01b0316836128bd565b5f831180156123f357505f87115b1561240c5761240230846128bd565b61240c8784612940565b50506028805460ff60a01b19169055505050505050565b6001600160a01b0383165f908152600c602052604081205481908190819060ff16156124b55761246f606461229d61246860105460195461215d90919063ffffffff16565b88906126ce565b92505f6010541180156124855750601c54601b54105b156124b0576124a4606461229d601054886126ce90919063ffffffff16565b91506124b08783612a77565b612535565b6001600160a01b0386165f908152600c602052604090205460ff1615612535576124f4606461229d612468601454601a5461215d90919063ffffffff16565b92505f60145411801561250a5750601c54601b54105b1561253557612529606461229d601454886126ce90919063ffffffff16565b91506125358783612a77565b6001600160a01b0387165f908152600c602052604090205460ff168061257257506001600160a01b0386165f908152600c602052604090205460ff165b156126465760215415612646575f805b60215481101561263357604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b0381165f90815260069093529120549092506125e2906001611be1565b6001600160a01b038084165f8181526006602052604090819020939093559151908b16905f80516020612f8283398151915290612623906001815260200190565b60405180910390a3600101612582565b50602154612642906001612e3f565b9150505b82156126ab57305f908152600660205260409020546126659084611be1565b305f81815260066020526040908190209290925590516001600160a01b038916905f80516020612f82833981519152906126a29087815260200190565b60405180910390a35b6126c36126bc82610e518686611be1565b869061215d565b979650505050505050565b5f825f036126dd57505f610df7565b5f6126e88385612e3f565b9050826126f58583612e56565b14610f675760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e26565b5f610f6783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b0a565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106127c0576127c0612dda565b6001600160a01b0392831660209182029290920101526025548251911690829060019081106127f1576127f1612dda565b6001600160a01b0392831660209182029290920101526027546128179130911684611abe565b602754602654604051635c11d79560e01b81526001600160a01b0392831692635c11d795926128539287925f9288929116904290600401612eb8565b5f604051808303815f87803b15801561286a575f80fd5b505af115801561287c573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516128b1929190612ef3565b60405180910390a15050565b6025546026546040516323b872dd60e01b81526001600160a01b0391821660048201528482166024820152604481018490529116906323b872dd906064016020604051808303815f875af1158015612917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293b9190612f13565b505050565b6027546129589030906001600160a01b031684611abe565b60255460275460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303815f875af11580156129aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ce9190612f13565b5060275460255460225460405162e8e33760e81b81523060048201526001600160a01b03928316602482015260448101869052606481018590525f6084820181905260a482015290821660c48201524260e482015291169063e8e3370090610104016060604051808303815f875af1158015612a4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a709190612f2e565b5050505050565b601c54601b5410612a86575050565b6005546001600160a01b03165f90815260066020526040902054612aaa9082611be1565b6005546001600160a01b03165f90815260066020526040902055601b54612ad19082611be1565b601b556005546040518281526001600160a01b03918216918416905f80516020612f828339815191529060200160405180910390a35050565b5f8183612b2a5760405162461bcd60e51b8152600401610e269190612b36565b505f6121548486612e56565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114612b7f575f80fd5b50565b5f8060408385031215612b93575f80fd5b8235612b9e81612b6b565b946020939093013593505050565b5f805f60608486031215612bbe575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612be5575f80fd5b8135610f6781612b6b565b8015158114612b7f575f80fd5b5f8060408385031215612c0e575f80fd5b8235612c1981612b6b565b91506020830135612c2981612bf0565b809150509250929050565b5f805f60608486031215612c46575f80fd5b8335612c5181612b6b565b92506020840135612c6181612b6b565b929592945050506040919091013590565b5f60208284031215612c82575f80fd5b8135610f6781612bf0565b5f60208284031215612c9d575f80fd5b5035919050565b5f805f60408486031215612cb6575f80fd5b833567ffffffffffffffff811115612ccc575f80fd5b8401601f81018613612cdc575f80fd5b803567ffffffffffffffff811115612cf2575f80fd5b8660208260051b8401011115612d06575f80fd5b602091820194509250840135612d1b81612bf0565b809150509250925092565b5f8060408385031215612d37575f80fd5b8235612d4281612b6b565b91506020830135612c2981612b6b565b600181811c90821680612d6657607f821691505b602082108103612d8457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612dcf575f80fd5b8151610f6781612b6b565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610df757610df7612dee565b81810381811115610df757610df7612dee565b5f60208284031215612e38575f80fd5b5051919050565b8082028115828204841417610df757610df7612dee565b5f82612e7057634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602084019350602083015f5b82811015612eae5781516001600160a01b0316865260209586019590910190600101612e87565b5093949350505050565b85815284602082015260a060408201525f612ed660a0830186612e75565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f612f0b6040830184612e75565b949350505050565b5f60208284031215612f23575f80fd5b8151610f6781612bf0565b5f805f60608486031215612f40575f80fd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209766408c3232cd432c0a7a0446c92e0f20992454c3543cc204e1c4bd11bcbd9564736f6c634300081a0033608060405234801561000f575f80fd5b506040516101c53803806101c583398101604081905261002e916100c4565b5f80546001600160a01b03199081166001600160a01b038416908117909255600180543392168217905560405163095ea7b360e01b815260048101919091525f19602482015263095ea7b3906044016020604051808303815f875af1158015610099573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100bd91906100f1565b5050610110565b5f602082840312156100d4575f80fd5b81516001600160a01b03811681146100ea575f80fd5b9392505050565b5f60208284031215610101575f80fd5b815180151581146100ea575f80fd5b60a98061011c5f395ff3fe6080604052348015600e575f80fd5b50600436106030575f3560e01c80632f48ab7d1460345780638da5cb5b146061575b5f80fd5b5f546045906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6001546045906001600160a01b03168156fea26469706673582212200f98b246779897e2761cf82e143f9384fa377569860c3e1b0b0082582b4060dc64736f6c634300081a00330000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506000000000000000000000000b7cb26a8d05d3c64664d9e646d221e02e2317840000000000000000000000000b7cb26a8d05d3c64664d9e646d221e02e2317840000000000000000000000000b7cb26a8d05d3c64664d9e646d221e02e2317840

Deployed Bytecode

0x608060405260043610610445575f3560e01c80638da5cb5b11610236578063c7f063d311610134578063e5c2b0a6116100b3578063f2fde38b11610078578063f2fde38b14610cc5578063f744bf2214610ce4578063f84ba65d14610d03578063f872858a14610d22578063fb1eb14b14610d42575f80fd5b8063e5c2b0a614610c34578063ec28438a14610c53578063ef422a1814610c72578063f0cd1dac14610c91578063f1d5f51714610ca6575f80fd5b8063d158272d116100f9578063d158272d14610b82578063da00097d14610ba6578063dc44b6a014610bc6578063dd62ed3e14610bdb578063e32759cf14610c1f575f80fd5b8063c7f063d314610aec578063c816841b14610b0b578063c860795214610b2a578063c867d60b14610b3f578063cab0347114610b6d575f80fd5b8063a83f53a7116101c0578063c2d4640e11610185578063c2d4640e14610a65578063c469b6dd14610a84578063c492f04614610a99578063c49b9a8014610ab8578063c5d2418914610ad7575f80fd5b8063a83f53a7146109d5578063a9059cbb146109ea578063b2bdfa7b14610a09578063b340a95414610a27578063b6b3664314610a46575f80fd5b80639a55fff0116102065780639a55fff01461094f578063a073d37f1461096e578063a08e671f14610982578063a457c2d714610997578063a5d69d1f146109b6575f80fd5b80638da5cb5b146108f6578063914eb66a1461091257806395d89b4114610926578063993945ac1461093a575f80fd5b80633b97084a116103435780635881f3ef116102cd57806382eefb431161029257806382eefb4314610860578063844d591c14610875578063865541e71461089457806388790a68146108b35780638b42507f146108c8575f80fd5b80635881f3ef146107ce57806361a23c69146107ed57806370a08231146108025780637d1db4a514610836578063807c2d9c1461084b575f80fd5b80634a74bb02116103135780634a74bb021461073a5780634cb80fd51461075a5780635342acb414610779578063557ed1ba146107a757806357a5802f146107b9575f80fd5b80633b97084a146106c35780633df4ddf4146106e25780633ecad271146106f757806341c0e1b514610725575f80fd5b806323b872dd116103cf5780632c4b2334116103945780632c4b2334146106305780632f48ab7d1461064f578063313ce5671461066e57806337e5ccf71461068f57806339509351146106a4575f80fd5b806323b872dd146105aa5780632563ae83146105c957806327c8f835146105e8578063297ac6de146106075780632b112e491461061c575f80fd5b80631694505e116104155780631694505e1461050157806318160ddd146105205780631870517a1461053e5780631cdd3be31461055d5780632198cf6c1461058b575f80fd5b806306fdde0314610450578063095ea7b31461047a5780630d5e5c87146104a95780631245e347146104ca575f80fd5b3661044c57005b5f80fd5b34801561045b575f80fd5b50610464610d57565b6040516104719190612b36565b60405180910390f35b348015610485575f80fd5b50610499610494366004612b82565b610de7565b6040519015158152602001610471565b3480156104b4575f80fd5b506104c86104c3366004612bac565b610dfd565b005b3480156104d5575f80fd5b506004546104e9906001600160a01b031681565b6040516001600160a01b039091168152602001610471565b34801561050c575f80fd5b506027546104e9906001600160a01b031681565b34801561052b575f80fd5b50601d545b604051908152602001610471565b348015610549575f80fd5b506104c8610558366004612bac565b610e5f565b348015610568575f80fd5b50610499610577366004612bd5565b60086020525f908152604090205460ff1681565b348015610596575f80fd5b506104c86105a5366004612bfd565b610eb2565b3480156105b5575f80fd5b506104996105c4366004612c34565b610f05565b3480156105d4575f80fd5b506104c86105e3366004612c72565b610f6e565b3480156105f3575f80fd5b506005546104e9906001600160a01b031681565b348015610612575f80fd5b5061053060145481565b348015610627575f80fd5b50610530610fb5565b34801561063b575f80fd5b506104c861064a366004612bd5565b610fe0565b34801561065a575f80fd5b506025546104e9906001600160a01b031681565b348015610679575f80fd5b5060035460405160ff9091168152602001610471565b34801561069a575f80fd5b5061053060105481565b3480156106af575f80fd5b506104996106be366004612b82565b61102b565b3480156106ce575f80fd5b506104c86106dd366004612c8d565b611060565b3480156106ed575f80fd5b5061053060235481565b348015610702575f80fd5b50610499610711366004612bd5565b600c6020525f908152604090205460ff1681565b348015610730575f80fd5b5061053060245481565b348015610745575f80fd5b5060285461049990600160a81b900460ff1681565b348015610765575f80fd5b506104c8610774366004612bd5565b61108e565b348015610784575f80fd5b50610499610793366004612bd5565b60096020525f908152604090205460ff1681565b3480156107b2575f80fd5b5042610530565b3480156107c4575f80fd5b5061053060155481565b3480156107d9575f80fd5b506104e96107e8366004612bd5565b6110df565b3480156107f8575f80fd5b5061053060165481565b34801561080d575f80fd5b5061053061081c366004612bd5565b6001600160a01b03165f9081526006602052604090205490565b348015610841575f80fd5b50610530601e5481565b348015610856575f80fd5b50610530601f5481565b34801561086b575f80fd5b50610530601a5481565b348015610880575f80fd5b506104c861088f366004612bfd565b611407565b34801561089f575f80fd5b506104c86108ae366004612c8d565b61145a565b3480156108be575f80fd5b5061053060115481565b3480156108d3575f80fd5b506104996108e2366004612bd5565b600b6020525f908152604090205460ff1681565b348015610901575f80fd5b505f546001600160a01b03166104e9565b34801561091d575f80fd5b506104c86114a8565b348015610931575f80fd5b50610464611519565b348015610945575f80fd5b50610530601c5481565b34801561095a575f80fd5b506104c8610969366004612ca4565b611528565b348015610979575f80fd5b50602054610530565b34801561098d575f80fd5b5061053060185481565b3480156109a2575f80fd5b506104996109b1366004612b82565b6115bb565b3480156109c1575f80fd5b506104c86109d0366004612c72565b611608565b3480156109e0575f80fd5b5061053060175481565b3480156109f5575f80fd5b50610499610a04366004612b82565b61164f565b348015610a14575f80fd5b505f546104e9906001600160a01b031681565b348015610a32575f80fd5b506026546104e9906001600160a01b031681565b348015610a51575f80fd5b506104c8610a60366004612c8d565b61165b565b348015610a70575f80fd5b506104c8610a7f366004612bac565b611689565b348015610a8f575f80fd5b50610530600f5481565b348015610aa4575f80fd5b506104c8610ab3366004612ca4565b6116d7565b348015610ac3575f80fd5b506104c8610ad2366004612c72565b611764565b348015610ae2575f80fd5b50610530600e5481565b348015610af7575f80fd5b506104c8610b06366004612c8d565b6117e5565b348015610b16575f80fd5b506028546104e9906001600160a01b031681565b348015610b35575f80fd5b5061053060125481565b348015610b4a575f80fd5b50610499610b59366004612bd5565b600a6020525f908152604090205460ff1681565b348015610b78575f80fd5b5061053060135481565b348015610b8d575f80fd5b506003546104e99061010090046001600160a01b031681565b348015610bb1575f80fd5b5060285461049990600160b01b900460ff1681565b348015610bd1575f80fd5b50610530600d5481565b348015610be6575f80fd5b50610530610bf5366004612d26565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610c2a575f80fd5b5061053060215481565b348015610c3f575f80fd5b506104c8610c4e366004612c8d565b611813565b348015610c5e575f80fd5b506104c8610c6d366004612c8d565b611887565b348015610c7d575f80fd5b506104c8610c8c366004612bfd565b6118b5565b348015610c9c575f80fd5b5061053060195481565b348015610cb1575f80fd5b506104c8610cc0366004612c8d565b611908565b348015610cd0575f80fd5b506104c8610cdf366004612bd5565b611936565b348015610cef575f80fd5b506104c8610cfe366004612c8d565b611a1d565b348015610d0e575f80fd5b506104c8610d1d366004612bfd565b611a6b565b348015610d2d575f80fd5b5060285461049990600160b81b900460ff1681565b348015610d4d575f80fd5b50610530601b5481565b606060018054610d6690612d52565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9290612d52565b8015610ddd5780601f10610db457610100808354040283529160200191610ddd565b820191905f5260205f20905b815481529060010190602001808311610dc057829003601f168201915b5050505050905090565b5f610df3338484611abe565b5060015b92915050565b5f546001600160a01b03163314610e2f5760405162461bcd60e51b8152600401610e2690612d8a565b60405180910390fd5b601183905560128290556013819055601454610e5790610e5183818787611be1565b90611be1565b601a55505050565b5f546001600160a01b03163314610e885760405162461bcd60e51b8152600401610e2690612d8a565b600d839055600e829055600f819055601054610eaa90610e5183818787611be1565b601955505050565b5f546001600160a01b03163314610edb5760405162461bcd60e51b8152600401610e2690612d8a565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610f11848484611c3f565b50610f638433610f5e85604051806060016040528060288152602001612f5a602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190612125565b611abe565b5060015b9392505050565b5f546001600160a01b03163314610f975760405162461bcd60e51b8152600401610e2690612d8a565b60288054911515600160b81b0260ff60b81b19909216919091179055565b6005546001600160a01b03165f90815260066020526040812054601d54610fdb9161215d565b905090565b5f546001600160a01b031633146110095760405162461bcd60e51b8152600401610e2690612d8a565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b335f8181526007602090815260408083206001600160a01b03871684529091528120549091610df3918590610f5e9086611be1565b5f546001600160a01b031633146110895760405162461bcd60e51b8152600401610e2690612d8a565b602055565b5f546001600160a01b031633146110b75760405162461bcd60e51b8152600401610e2690612d8a565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f80546001600160a01b031633146111095760405162461bcd60e51b8152600401610e2690612d8a565b5f829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611149573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116d9190612dbf565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111dc9190612dbf565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112499190612dbf565b91506001600160a01b03821661139957806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611295573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b99190612dbf565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611304573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113289190612dbf565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611372573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113969190612dbf565b91505b602880546001600160a01b03199081166001600160a01b03858116918217845560278054909316948116949094179091555f908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b5f546001600160a01b031633146114305760405162461bcd60e51b8152600401610e2690612d8a565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146114835760405162461bcd60e51b8152600401610e2690612d8a565b6010819055600f54600e54600d546114a2928492610e51928391611be1565b60195550565b5f546001600160a01b031633146114d15760405162461bcd60e51b8152600401610e2690612d8a565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b606060028054610d6690612d52565b5f546001600160a01b031633146115515760405162461bcd60e51b8152600401610e2690612d8a565b5f5b828110156115b5578160085f86868581811061157157611571612dda565b90506020020160208101906115869190612bd5565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101611553565b50505050565b5f610df33384610f5e85604051806060016040528060258152602001612fa260259139335f9081526007602090815260408083206001600160a01b038d1684529091529020549190612125565b5f546001600160a01b031633146116315760405162461bcd60e51b8152600401610e2690612d8a565b60288054911515600160b01b0260ff60b01b19909216919091179055565b5f610f63338484611c3f565b5f546001600160a01b031633146116845760405162461bcd60e51b8152600401610e2690612d8a565b601c55565b5f546001600160a01b031633146116b25760405162461bcd60e51b8152600401610e2690612d8a565b6015839055601682905560178190556116cf81610e518585611be1565b601855505050565b5f546001600160a01b031633146117005760405162461bcd60e51b8152600401610e2690612d8a565b5f5b828110156115b5578160095f86868581811061172057611720612dda565b90506020020160208101906117359190612bd5565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101611702565b5f546001600160a01b0316331461178d5760405162461bcd60e51b8152600401610e2690612d8a565b60288054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906117da90831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461180e5760405162461bcd60e51b8152600401610e2690612d8a565b602455565b5f546001600160a01b0316331461183c5760405162461bcd60e51b8152600401610e2690612d8a565b60038111156118825760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610e26565b602155565b5f546001600160a01b031633146118b05760405162461bcd60e51b8152600401610e2690612d8a565b601e55565b5f546001600160a01b031633146118de5760405162461bcd60e51b8152600401610e2690612d8a565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146119315760405162461bcd60e51b8152600401610e2690612d8a565b601f55565b5f546001600160a01b0316331461195f5760405162461bcd60e51b8152600401610e2690612d8a565b6001600160a01b0381166119c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e26565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611a465760405162461bcd60e51b8152600401610e2690612d8a565b6014819055601354601254601154611a65928492610e51928391611be1565b601a5550565b5f546001600160a01b03163314611a945760405162461bcd60e51b8152600401610e2690612d8a565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b038316611b205760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e26565b6001600160a01b038216611b815760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e26565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f80611bed8385612e02565b905083811015610f675760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e26565b5f6001600160a01b038416611ca45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610e26565b6001600160a01b038316611d065760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610e26565b5f8211611d675760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610e26565b6001600160a01b0384165f9081526008602052604090205460ff1615611db45760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610e26565b6028546001600160a01b038481169116148015611de857506028546001600160a01b03165f90815260066020526040902054155b15611df257436023555b6028546001600160a01b038581169116148015611e1d5750602454602354611e1a9190612e02565b43105b15611e4157602254611e3a9085906001600160a01b03168461219e565b9050610f67565b602854600160a01b900460ff1615611e5e57611e3a84848461219e565b6001600160a01b0384165f908152600b602052604090205460ff16158015611e9e57506001600160a01b0383165f908152600b602052604090205460ff16155b15611f0657601e54821115611f065760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610e26565b305f9081526006602052604081205460205490915081108015908190611f365750602854600160a01b900460ff16155b8015611f5a57506001600160a01b0386165f908152600c602052604090205460ff16155b8015611f6f5750602854600160a81b900460ff165b15611f9557602854600160b01b900460ff1615611f8c5760205491505b611f958261226e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260069091529190912054611fe6918690612125565b6001600160a01b0387165f90815260066020908152604080832093909355600990529081205460ff168061203157506001600160a01b0386165f9081526009602052604090205460ff165b61204557612040878787612423565b612047565b845b602854909150600160b81b900460ff16801561207b57506001600160a01b0386165f908152600a602052604090205460ff16155b156120af57601f546120a582610e51896001600160a01b03165f9081526006602052604090205490565b11156120af575f80fd5b6001600160a01b0386165f908152600660205260409020546120d19082611be1565b6001600160a01b038088165f8181526006602052604090819020939093559151908916905f80516020612f82833981519152906121119085815260200190565b60405180910390a360019350505050610f67565b5f81848411156121485760405162461bcd60e51b8152600401610e269190612b36565b505f6121548486612e15565b95945050505050565b5f610f6783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612125565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526006909152918220546121ee918490612125565b6001600160a01b038086165f90815260066020526040808220939093559085168152205461221c9083611be1565b6001600160a01b038085165f8181526006602052604090819020939093559151908616905f80516020612f828339815191529061225c9086815260200190565b60405180910390a35060019392505050565b6028805460ff60a01b1916600160a01b1790556018546015545f916122a39160029161229d91829087906126ce565b9061274c565b90505f6122b0838361215d565b90506122bb8161278d565b6025546026546040516370a0823160e01b81526001600160a01b0391821660048201525f9291909116906370a0823190602401602060405180830381865afa158015612309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232d9190612e28565b90505f612352612349600260155461274c90919063ffffffff16565b6018549061215d565b90505f612373600261229d8461229d601554886126ce90919063ffffffff16565b90505f61238f8361229d601754876126ce90919063ffffffff16565b90505f6123a6826123a0878661215d565b9061215d565b905080156123c9576003546123c99061010090046001600160a01b0316826128bd565b81156123e5576004546123e5906001600160a01b0316836128bd565b5f831180156123f357505f87115b1561240c5761240230846128bd565b61240c8784612940565b50506028805460ff60a01b19169055505050505050565b6001600160a01b0383165f908152600c602052604081205481908190819060ff16156124b55761246f606461229d61246860105460195461215d90919063ffffffff16565b88906126ce565b92505f6010541180156124855750601c54601b54105b156124b0576124a4606461229d601054886126ce90919063ffffffff16565b91506124b08783612a77565b612535565b6001600160a01b0386165f908152600c602052604090205460ff1615612535576124f4606461229d612468601454601a5461215d90919063ffffffff16565b92505f60145411801561250a5750601c54601b54105b1561253557612529606461229d601454886126ce90919063ffffffff16565b91506125358783612a77565b6001600160a01b0387165f908152600c602052604090205460ff168061257257506001600160a01b0386165f908152600c602052604090205460ff165b156126465760215415612646575f805b60215481101561263357604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b0381165f90815260069093529120549092506125e2906001611be1565b6001600160a01b038084165f8181526006602052604090819020939093559151908b16905f80516020612f8283398151915290612623906001815260200190565b60405180910390a3600101612582565b50602154612642906001612e3f565b9150505b82156126ab57305f908152600660205260409020546126659084611be1565b305f81815260066020526040908190209290925590516001600160a01b038916905f80516020612f82833981519152906126a29087815260200190565b60405180910390a35b6126c36126bc82610e518686611be1565b869061215d565b979650505050505050565b5f825f036126dd57505f610df7565b5f6126e88385612e3f565b9050826126f58583612e56565b14610f675760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e26565b5f610f6783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b0a565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106127c0576127c0612dda565b6001600160a01b0392831660209182029290920101526025548251911690829060019081106127f1576127f1612dda565b6001600160a01b0392831660209182029290920101526027546128179130911684611abe565b602754602654604051635c11d79560e01b81526001600160a01b0392831692635c11d795926128539287925f9288929116904290600401612eb8565b5f604051808303815f87803b15801561286a575f80fd5b505af115801561287c573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516128b1929190612ef3565b60405180910390a15050565b6025546026546040516323b872dd60e01b81526001600160a01b0391821660048201528482166024820152604481018490529116906323b872dd906064016020604051808303815f875af1158015612917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293b9190612f13565b505050565b6027546129589030906001600160a01b031684611abe565b60255460275460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303815f875af11580156129aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ce9190612f13565b5060275460255460225460405162e8e33760e81b81523060048201526001600160a01b03928316602482015260448101869052606481018590525f6084820181905260a482015290821660c48201524260e482015291169063e8e3370090610104016060604051808303815f875af1158015612a4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a709190612f2e565b5050505050565b601c54601b5410612a86575050565b6005546001600160a01b03165f90815260066020526040902054612aaa9082611be1565b6005546001600160a01b03165f90815260066020526040902055601b54612ad19082611be1565b601b556005546040518281526001600160a01b03918216918416905f80516020612f828339815191529060200160405180910390a35050565b5f8183612b2a5760405162461bcd60e51b8152600401610e269190612b36565b505f6121548486612e56565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114612b7f575f80fd5b50565b5f8060408385031215612b93575f80fd5b8235612b9e81612b6b565b946020939093013593505050565b5f805f60608486031215612bbe575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612be5575f80fd5b8135610f6781612b6b565b8015158114612b7f575f80fd5b5f8060408385031215612c0e575f80fd5b8235612c1981612b6b565b91506020830135612c2981612bf0565b809150509250929050565b5f805f60608486031215612c46575f80fd5b8335612c5181612b6b565b92506020840135612c6181612b6b565b929592945050506040919091013590565b5f60208284031215612c82575f80fd5b8135610f6781612bf0565b5f60208284031215612c9d575f80fd5b5035919050565b5f805f60408486031215612cb6575f80fd5b833567ffffffffffffffff811115612ccc575f80fd5b8401601f81018613612cdc575f80fd5b803567ffffffffffffffff811115612cf2575f80fd5b8660208260051b8401011115612d06575f80fd5b602091820194509250840135612d1b81612bf0565b809150509250925092565b5f8060408385031215612d37575f80fd5b8235612d4281612b6b565b91506020830135612c2981612b6b565b600181811c90821680612d6657607f821691505b602082108103612d8457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612dcf575f80fd5b8151610f6781612b6b565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610df757610df7612dee565b81810381811115610df757610df7612dee565b5f60208284031215612e38575f80fd5b5051919050565b8082028115828204841417610df757610df7612dee565b5f82612e7057634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602084019350602083015f5b82811015612eae5781516001600160a01b0316865260209586019590910190600101612e87565b5093949350505050565b85815284602082015260a060408201525f612ed660a0830186612e75565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f612f0b6040830184612e75565b949350505050565b5f60208284031215612f23575f80fd5b8151610f6781612bf0565b5f805f60608486031215612f40575f80fd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209766408c3232cd432c0a7a0446c92e0f20992454c3543cc204e1c4bd11bcbd9564736f6c634300081a0033

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

0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506000000000000000000000000b7cb26a8d05d3c64664d9e646d221e02e2317840000000000000000000000000b7cb26a8d05d3c64664d9e646d221e02e2317840000000000000000000000000b7cb26a8d05d3c64664d9e646d221e02e2317840

-----Decoded View---------------
Arg [0] : router (address): 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
Arg [1] : owner (address): 0xB7cB26a8D05D3C64664d9e646D221e02E2317840
Arg [2] : marketingAddress (address): 0xB7cB26a8D05D3C64664d9e646D221e02E2317840
Arg [3] : teamAddress (address): 0xB7cB26a8D05D3C64664d9e646D221e02E2317840

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506
Arg [1] : 000000000000000000000000b7cb26a8d05d3c64664d9e646d221e02e2317840
Arg [2] : 000000000000000000000000b7cb26a8d05d3c64664d9e646d221e02e2317840
Arg [3] : 000000000000000000000000b7cb26a8d05d3c64664d9e646d221e02e2317840


Deployed Bytecode Sourcemap

8367:19057:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12876:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14171:161;;;;;;;;;;-1:-1:-1;14171:161:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;14171:161:0;945:187:1;16283:361:0;;;;;;;;;;-1:-1:-1;16283:361:0;;;;;:::i;:::-;;:::i;:::-;;8624:40;;;;;;;;;;-1:-1:-1;8624:40:0;;;;-1:-1:-1;;;;;8624:40:0;;;;;;-1:-1:-1;;;;;1788:32:1;;;1770:51;;1758:2;1743:18;8624:40:0;1608:219:1;10209:41:0;;;;;;;;;;-1:-1:-1;10209:41:0;;;;-1:-1:-1;;;;;10209:41:0;;;13153:100;;;;;;;;;;-1:-1:-1;13233:12:0;;13153:100;;;2212:25:1;;;2200:2;2185:18;13153:100:0;2066:177:1;15922:353:0;;;;;;;;;;-1:-1:-1;15922:353:0;;;;;:::i;:::-;;:::i;8872:46::-;;;;;;;;;;-1:-1:-1;8872:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17258:135;;;;;;;;;;-1:-1:-1;17258:135:0;;;;;:::i;:::-;;:::i;20127:313::-;;;;;;;;;;-1:-1:-1;20127:313:0;;;;;:::i;:::-;;:::i;17137:113::-;;;;;;;;;;-1:-1:-1;17137:113:0;;;;;:::i;:::-;;:::i;8671:71::-;;;;;;;;;;-1:-1:-1;8671:71:0;;;;-1:-1:-1;;;;;8671:71:0;;;9437:34;;;;;;;;;;;;;;;;18740:128;;;;;;;;;;;;;:::i;17791:129::-;;;;;;;;;;-1:-1:-1;17791:129:0;;;;;:::i;:::-;;:::i;10094:64::-;;;;;;;;;;-1:-1:-1;10094:64:0;;;;-1:-1:-1;;;;;10094:64:0;;;13062:83;;;;;;;;;;-1:-1:-1;13128:9:0;;13062:83;;13128:9;;;;4119:36:1;;4107:2;4092:18;13062:83:0;3977:184:1;9271:33:0;;;;;;;;;;;;;;;;13539:218;;;;;;;;;;-1:-1:-1;13539:218:0;;;;;:::i;:::-;;:::i;17511:125::-;;;;;;;;;;-1:-1:-1;17511:125:0;;;;;:::i;:::-;;:::i;10035:20::-;;;;;;;;;;;;;;;;9096:45;;;;;;;;;;-1:-1:-1;9096:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10062:23;;;;;;;;;;;;;;;;10320:40;;;;;;;;;;-1:-1:-1;10320:40:0;;;;-1:-1:-1;;;10320:40:0;;;;;;17644:139;;;;;;;;;;-1:-1:-1;17644:139:0;;;;;:::i;:::-;;:::i;8925:50::-;;;;;;;;;;-1:-1:-1;8925:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6267:90;;;;;;;;;;-1:-1:-1;6334:15:0;6267:90;;9480:34;;;;;;;;;;;;;;;;19044:806;;;;;;;;;;-1:-1:-1;19044:806:0;;;;;:::i;:::-;;:::i;9521:35::-;;;;;;;;;;;;;;;;13261:119;;;;;;;;;;-1:-1:-1;13261:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;13354:18:0;13327:7;13354:18;;;:9;:18;;;;;;;13261:119;9847:27;;;;;;;;;;;;;;;;9881:25;;;;;;;;;;;;;;;;9695:37;;;;;;;;;;;;;;;;14915:129;;;;;;;;;;-1:-1:-1;14915:129:0;;;;;:::i;:::-;;:::i;15449:224::-;;;;;;;;;;-1:-1:-1;15449:224:0;;;;;:::i;:::-;;:::i;9313:36::-;;;;;;;;;;;;;;;;9041:48;;;;;;;;;;-1:-1:-1;9041:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5648:79;;;;;;;;;;-1:-1:-1;5686:7:0;5713:6;-1:-1:-1;;;;;5713:6:0;5648:79;;5862:145;;;;;;;;;;;;;:::i;12967:87::-;;;;;;;;;;;;;:::i;9773:32::-;;;;;;;;;;;;;;;;14685:222;;;;;;;;;;-1:-1:-1;14685:222:0;;;;;:::i;:::-;;:::i;14042:121::-;;;;;;;;;;-1:-1:-1;14131:24:0;;14042:121;;9599:44;;;;;;;;;;;;;;;;13765:269;;;;;;;;;;-1:-1:-1;13765:269:0;;;;;:::i;:::-;;:::i;18107:125::-;;;;;;;;;;-1:-1:-1;18107:125:0;;;;;:::i;:::-;;:::i;9563:29::-;;;;;;;;;;;;;;;;19952:167;;;;;;;;;;-1:-1:-1;19952:167:0;;;;;:::i;:::-;;:::i;5524:21::-;;;;;;;;;;-1:-1:-1;5524:21:0;;;;-1:-1:-1;;;;;5524:21:0;;;10165:33;;;;;;;;;;-1:-1:-1;10165:33:0;;;;-1:-1:-1;;;;;10165:33:0;;;15330:111;;;;;;;;;;-1:-1:-1;15330:111:0;;;;;:::i;:::-;;:::i;16652:358::-;;;;;;;;;;-1:-1:-1;16652:358:0;;;;;:::i;:::-;;:::i;9234:30::-;;;;;;;;;;;;;;;;18240:233;;;;;;;;;;-1:-1:-1;18240:233:0;;;;;:::i;:::-;;:::i;17928:171::-;;;;;;;;;;-1:-1:-1;17928:171:0;;;;;:::i;:::-;;:::i;9192:35::-;;;;;;;;;;;;;;;;18481:86;;;;;;;;;;-1:-1:-1;18481:86:0;;;;;:::i;:::-;;:::i;10257:26::-;;;;;;;;;;-1:-1:-1;10257:26:0;;;;-1:-1:-1;;;;;10257:26:0;;;9356:36;;;;;;;;;;;;;;;;8982:52;;;;;;;;;;-1:-1:-1;8982:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9399:31;;;;;;;;;;;;;;;;8572:45;;;;;;;;;;-1:-1:-1;8572:45:0;;;;;;;-1:-1:-1;;;;;8572:45:0;;;10367;;;;;;;;;;-1:-1:-1;10367:45:0;;;;-1:-1:-1;;;10367:45:0;;;;;;9150:35;;;;;;;;;;;;;;;;13388:143;;;;;;;;;;-1:-1:-1;13388:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13496:18:0;;;13469:7;13496:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13388:143;9964:27;;;;;;;;;;;;;;;;18575:157;;;;;;;;;;-1:-1:-1;18575:157:0;;;;;:::i;:::-;;:::i;17018:111::-;;;;;;;;;;-1:-1:-1;17018:111:0;;;;;:::i;:::-;;:::i;15187:135::-;;;;;;;;;;-1:-1:-1;15187:135:0;;;;;:::i;:::-;;:::i;9652:36::-;;;;;;;;;;;;;;;;17401:102;;;;;;;;;;-1:-1:-1;17401:102:0;;;;;:::i;:::-;;:::i;6015:244::-;;;;;;;;;;-1:-1:-1;6015:244:0;;;;;:::i;:::-;;:::i;15681:233::-;;;;;;;;;;-1:-1:-1;15681:233:0;;;;;:::i;:::-;;:::i;15052:127::-;;;;;;;;;;-1:-1:-1;15052:127:0;;;;;:::i;:::-;;:::i;10419:35::-;;;;;;;;;;-1:-1:-1;10419:35:0;;;;-1:-1:-1;;;10419:35:0;;;;;;9741:25;;;;;;;;;;;;;;;;12876:83;12913:13;12946:5;12939:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12876:83;:::o;14171:161::-;14246:4;14263:39;268:10;14286:7;14295:6;14263:8;:39::i;:::-;-1:-1:-1;14320:4:0;14171:161;;;;;:::o;16283:361::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;;;;;;;;;16406:17:::1;:35:::0;;;16452:17:::1;:35:::0;;;16498:12:::1;:25:::0;;;16620:15:::1;::::0;16557:79:::1;::::0;:58:::1;16513:10:::0;16557:58;16426:15;16472;16557:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:79::-;16536:18;:100:::0;-1:-1:-1;;;16283:361:0:o;15922:353::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;16045:16:::1;:34:::0;;;16090:16:::1;:34:::0;;;16135:11:::1;:24:::0;;;16252:14:::1;::::0;16192:75:::1;::::0;:55:::1;16149:10:::0;16192:55;16064:15;16109;16192:20:::1;:38::i;:75::-;16172:17;:95:::0;-1:-1:-1;;;15922:353:0:o;17258:135::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17349:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;17349:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17258:135::o;20127:313::-;20225:4;20242:36;20252:6;20260:9;20271:6;20242:9;:36::i;:::-;-1:-1:-1;20289:121:0;20298:6;268:10;20320:89;20358:6;20320:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20320:19:0;;;;;;:11;:19;;;;;;;;268:10;20320:33;;;;;;;;;;:37;:89::i;:::-;20289:8;:121::i;:::-;-1:-1:-1;20428:4:0;20127:313;;;;;;:::o;17137:113::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17215:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;17215:27:0::1;-1:-1:-1::0;;;;17215:27:0;;::::1;::::0;;;::::1;::::0;;17137:113::o;18740:128::-;18847:11;;-1:-1:-1;;;;;18847:11:0;18793:7;13354:18;;;:9;:18;;;;;;18820:12;;:40;;:16;:40::i;:::-;18813:47;;18740:128;:::o;17791:129::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17873:17:::1;:39:::0;;-1:-1:-1;;;;;;17873:39:0::1;-1:-1:-1::0;;;;;17873:39:0;;;::::1;::::0;;;::::1;::::0;;17791:129::o;13539:218::-;268:10;13627:4;13676:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13676:34:0;;;;;;;;;;13627:4;;13644:83;;13667:7;;13676:50;;13715:10;13676:38;:50::i;17511:125::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17593:24:::1;:35:::0;17511:125::o;17644:139::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17731:22:::1;:44:::0;;-1:-1:-1;;;;;17731:44:0;;::::1;;;-1:-1:-1::0;;;;;;17731:44:0;;::::1;::::0;;;::::1;::::0;;17644:139::o;19044:806::-;19124:22;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;19161:35:::1;19218:16;19161:74;;19283:16;-1:-1:-1::0;;;;;19283:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19265:53:0::1;;19327:4;19334:16;-1:-1:-1::0;;;;;19334:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19265:93;::::0;-1:-1:-1;;;;;;19265:93:0::1;::::0;;;;;;-1:-1:-1;;;;;6962:32:1;;;19265:93:0::1;::::0;::::1;6944:51:1::0;7031:32;;7011:18;;;7004:60;6917:18;;19265:93:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19248:110:::0;-1:-1:-1;;;;;;19374:28:0;::::1;19371:225;;19488:16;-1:-1:-1::0;;;;;19488:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19470:74:0::1;;19553:4;19560:16;-1:-1:-1::0;;;;;19560:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19470:114;::::0;-1:-1:-1;;;;;;19470:114:0::1;::::0;;;;;;-1:-1:-1;;;;;6962:32:1;;;19470:114:0::1;::::0;::::1;6944:51:1::0;7031:32;;7011:18;;;7004:60;6917:18;;19470:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19453:131;;19371:225;19608:11;:28:::0;;-1:-1:-1;;;;;;19608:28:0;;::::1;-1:-1:-1::0;;;;;19608:28:0;;::::1;::::0;;::::1;::::0;;19670:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;19742:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;19742:48:0;;::::1;-1:-1:-1::0;19742:48:0;;::::1;::::0;;;19822:11;;;;::::1;19801:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;19608:28;19622:14;-1:-1:-1;19044:806:0:o;14915:129::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15004:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;15004:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14915:129::o;15449:224::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;15526:14:::1;:33:::0;;;15633:11:::1;::::0;15611:16:::1;::::0;15590::::1;::::0;:75:::1;::::0;15543:16;;15590:55:::1;::::0;;;:20:::1;:38::i;:75::-;15570:17;:95:::0;-1:-1:-1;15449:224:0:o;5862:145::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;5966:1:::1;5950:6:::0;;5929:40:::1;::::0;-1:-1:-1;;;;;5950:6:0;;::::1;::::0;5929:40:::1;::::0;5966:1;;5929:40:::1;5997:1;5980:19:::0;;-1:-1:-1;;;;;;5980:19:0::1;::::0;;5862:145::o;12967:87::-;13006:13;13039:7;13032:14;;;;;:::i;14685:222::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;14794:9:::1;14789:111;14809:19:::0;;::::1;14789:111;;;14880:8;14850:14;:27;14865:8;;14874:1;14865:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14850:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14850:27:0;:38;;-1:-1:-1;;14850:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;14830:3:0::1;14789:111;;;;14685:222:::0;;;:::o;13765:269::-;13858:4;13875:129;268:10;13898:7;13907:96;13946:15;13907:96;;;;;;;;;;;;;;;;;268:10;13907:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13907:34:0;;;;;;;;;;;;:38;:96::i;18107:125::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;18188:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;18188:36:0::1;-1:-1:-1::0;;;;18188:36:0;;::::1;::::0;;;::::1;::::0;;18107:125::o;19952:167::-;20030:4;20047:42;268:10;20071:9;20082:6;20047:9;:42::i;15330:111::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;15403:17:::1;:30:::0;15330:111::o;16652:358::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;16793:15:::1;:35:::0;;;16839:15:::1;:35:::0;;;16885:10:::1;:25:::0;;;16950:52:::1;16898:12:::0;16950:36:::1;16811:17:::0;16857;16950:19:::1;:36::i;:52::-;16923:24;:79:::0;-1:-1:-1;;;16652:358:0:o;18240:233::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;18357:9:::1;18353:113;18372:19:::0;;::::1;18353:113;;;18446:8;18413:17;:30;18431:8;;18440:1;18431:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18413:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18413:30:0;:41;;-1:-1:-1;;18413:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;18393:3:0::1;18353:113;;17928:171:::0;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;18005:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18005:32:0::1;-1:-1:-1::0;;;;18005:32:0;;::::1;;::::0;;18053:38:::1;::::0;::::1;::::0;::::1;::::0;18029:8;1110:14:1;1103:22;1085:41;;1073:2;1058:18;;945:187;18053:38:0::1;;;;;;;;17928:171:::0;:::o;18481:86::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;18544:4:::1;:15:::0;18481:86::o;18575:157::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;18666:1:::1;18654:8;:13;;18646:44;;;::::0;-1:-1:-1;;;18646:44:0;;7409:2:1;18646:44:0::1;::::0;::::1;7391:21:1::0;7448:2;7428:18;;;7421:30;-1:-1:-1;;;7467:18:1;;;7460:48;7525:18;;18646:44:0::1;7207:342:1::0;18646:44:0::1;18701:12;:23:::0;18575:157::o;17018:111::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17095:12:::1;:26:::0;17018:111::o;15187:135::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15277:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;15277:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15187:135::o;17401:102::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17473:10:::1;:22:::0;17401:102::o;6015:244::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6104:22:0;::::1;6096:73;;;::::0;-1:-1:-1;;;6096:73:0;;7756:2:1;6096:73:0::1;::::0;::::1;7738:21:1::0;7795:2;7775:18;;;7768:30;7834:34;7814:18;;;7807:62;-1:-1:-1;;;7885:18:1;;;7878:36;7931:19;;6096:73:0::1;7554:402:1::0;6096:73:0::1;6206:6;::::0;;6185:38:::1;::::0;-1:-1:-1;;;;;6185:38:0;;::::1;::::0;6206:6;::::1;::::0;6185:38:::1;::::0;::::1;6234:6;:17:::0;;-1:-1:-1;;;;;;6234:17:0::1;-1:-1:-1::0;;;;;6234:17:0;;;::::1;::::0;;;::::1;::::0;;6015:244::o;15681:233::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;15760:15:::1;:35:::0;;;15872:12:::1;::::0;15849:17:::1;::::0;15827::::1;::::0;:79:::1;::::0;15778:17;;15827:58:::1;::::0;;;:21:::1;:40::i;:79::-;15806:18;:100:::0;-1:-1:-1;15681:233:0:o;15052:127::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15139:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;15139:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15052:127::o;14340:337::-;-1:-1:-1;;;;;14433:19:0;;14425:68;;;;-1:-1:-1;;;14425:68:0;;8163:2:1;14425:68:0;;;8145:21:1;8202:2;8182:18;;;8175:30;8241:34;8221:18;;;8214:62;-1:-1:-1;;;8292:18:1;;;8285:34;8336:19;;14425:68:0;7961:400:1;14425:68:0;-1:-1:-1;;;;;14512:21:0;;14504:68;;;;-1:-1:-1;;;14504:68:0;;8568:2:1;14504:68:0;;;8550:21:1;8607:2;8587:18;;;8580:30;8646:34;8626:18;;;8619:62;-1:-1:-1;;;8697:18:1;;;8690:32;8739:19;;14504:68:0;8366:398:1;14504:68:0;-1:-1:-1;;;;;14585:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14637:32;;2212:25:1;;;14637:32:0;;2185:18:1;14637:32:0;;;;;;;14340:337;;;:::o;1261:181::-;1319:7;;1351:5;1355:1;1351;:5;:::i;:::-;1339:17;;1380:1;1375;:6;;1367:46;;;;-1:-1:-1;;;1367:46:0;;9233:2:1;1367:46:0;;;9215:21:1;9272:2;9252:18;;;9245:30;9311:29;9291:18;;;9284:57;9358:18;;1367:46:0;9031:351:1;20448:2072:0;20535:4;-1:-1:-1;;;;;20562:20:0;;20554:70;;;;-1:-1:-1;;;20554:70:0;;9589:2:1;20554:70:0;;;9571:21:1;9628:2;9608:18;;;9601:30;9667:34;9647:18;;;9640:62;-1:-1:-1;;;9718:18:1;;;9711:35;9763:19;;20554:70:0;9387:401:1;20554:70:0;-1:-1:-1;;;;;20643:23:0;;20635:71;;;;-1:-1:-1;;;20635:71:0;;9995:2:1;20635:71:0;;;9977:21:1;10034:2;10014:18;;;10007:30;10073:34;10053:18;;;10046:62;-1:-1:-1;;;10124:18:1;;;10117:33;10167:19;;20635:71:0;9793:399:1;20635:71:0;20734:1;20725:6;:10;20717:64;;;;-1:-1:-1;;;20717:64:0;;10399:2:1;20717:64:0;;;10381:21:1;10438:2;10418:18;;;10411:30;10477:34;10457:18;;;10450:62;-1:-1:-1;;;10528:18:1;;;10521:39;10577:19;;20717:64:0;10197:405:1;20717:64:0;-1:-1:-1;;;;;20801:22:0;;;;;;:14;:22;;;;;;;;20800:23;20792:38;;;;-1:-1:-1;;;20792:38:0;;10809:2:1;20792:38:0;;;10791:21:1;10848:1;10828:18;;;10821:29;-1:-1:-1;;;10866:18:1;;;10859:32;10908:18;;20792:38:0;10607:325:1;20792:38:0;20857:11;;-1:-1:-1;;;;;20844:24:0;;;20857:11;;20844:24;:64;;;;-1:-1:-1;20890:11:0;;-1:-1:-1;;;;;20890:11:0;13327:7;13354:18;;;:9;:18;;;;;;20872:36;20844:64;20841:115;;;20932:12;20924:5;:20;20841:115;20979:11;;-1:-1:-1;;;;;20969:21:0;;;20979:11;;20969:21;:52;;;;;21017:4;;21009:5;;:12;;;;:::i;:::-;20994;:27;20969:52;20966:136;;;21067:14;;21044:46;;21059:6;;-1:-1:-1;;;;;21067:14:0;21083:6;21044:14;:46::i;:::-;21037:53;;;;20966:136;21117:16;;-1:-1:-1;;;21117:16:0;;;;21114:1399;;;21166:41;21181:6;21189:9;21200:6;21166:14;:41::i;21114:1399::-;-1:-1:-1;;;;;21262:23:0;;;;;;:15;:23;;;;;;;;21261:24;:55;;;;-1:-1:-1;;;;;;21290:26:0;;;;;;:15;:26;;;;;;;;21289:27;21261:55;21258:170;;;21355:12;;21345:6;:22;;21337:75;;;;-1:-1:-1;;;21337:75:0;;11139:2:1;21337:75:0;;;11121:21:1;11178:2;11158:18;;;11151:30;11217:34;11197:18;;;11190:62;-1:-1:-1;;;11268:18:1;;;11261:38;11316:19;;21337:75:0;10937:404:1;21337:75:0;21493:4;21444:28;13354:18;;;:9;:18;;;;;;21569:24;;21444:55;;-1:-1:-1;21545:48:0;;;;;;;21614:44;;-1:-1:-1;21642:16:0;;-1:-1:-1;;;21642:16:0;;;;21641:17;21614:44;:69;;;;-1:-1:-1;;;;;;21663:20:0;;;;;;:12;:20;;;;;;;;21662:21;21614:69;:94;;;;-1:-1:-1;21687:21:0;;-1:-1:-1;;;21687:21:0;;;;21614:94;21610:301;;;21745:25;;-1:-1:-1;;;21745:25:0;;;;21742:98;;;21816:24;;21793:47;;21742:98;21859:36;21874:20;21859:14;:36::i;:::-;21947:53;;;;;;;;;;;-1:-1:-1;;;21947:53:0;;;;;;;;-1:-1:-1;;;;;21947:17:0;;-1:-1:-1;21947:17:0;;;:9;:17;;;;;;;;:53;;21969:6;;21947:21;:53::i;:::-;-1:-1:-1;;;;;21927:17:0;;;;;;:9;:17;;;;;;;;:73;;;;22040:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;22069:28:0;;;;;;:17;:28;;;;;;;;22040:57;22039:147;;22152:34;22160:6;22168:9;22179:6;22152:7;:34::i;:::-;22039:147;;;22143:6;22039:147;22206:16;;22017:169;;-1:-1:-1;;;;22206:16:0;;;;:51;;;;-1:-1:-1;;;;;;22227:30:0;;;;;;:19;:30;;;;;;;;22226:31;22206:51;22203:133;;;22325:10;;22284:37;22309:11;22284:20;22294:9;-1:-1:-1;;;;;13354:18:0;13327:7;13354:18;;;:9;:18;;;;;;;13261:119;22284:37;:51;;22276:60;;;;;;-1:-1:-1;;;;;22376:20:0;;;;;;:9;:20;;;;;;:37;;22401:11;22376:24;:37::i;:::-;-1:-1:-1;;;;;22353:20:0;;;;;;;:9;:20;;;;;;;:60;;;;22435:40;;;;;;-1:-1:-1;;;;;;;;;;;22435:40:0;;;22463:11;2212:25:1;;2200:2;2185:18;;2066:177;22435:40:0;;;;;;;;22497:4;22490:11;;;;;;;1594:192;1680:7;1716:12;1708:6;;;;1700:29;;;;-1:-1:-1;;;1700:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1740:9:0;1752:5;1756:1;1752;:5;:::i;:::-;1740:17;1594:192;-1:-1:-1;;;;;1594:192:0:o;1450:136::-;1508:7;1535:43;1539:1;1542;1535:43;;;;;;;;;;;;;;;;;:3;:43::i;22528:330::-;22658:53;;;;;;;;;;;-1:-1:-1;;;22658:53:0;;;;;;;;-1:-1:-1;;;;;22658:17:0;;22621:4;22658:17;;;:9;:17;;;;;;;:53;;22680:6;;22658:21;:53::i;:::-;-1:-1:-1;;;;;22638:17:0;;;;;;;:9;:17;;;;;;:73;;;;22745:20;;;;;;;:32;;22770:6;22745:24;:32::i;:::-;-1:-1:-1;;;;;22722:20:0;;;;;;;:9;:20;;;;;;;:55;;;;22793:35;;;;;;-1:-1:-1;;;;;;;;;;;22793:35:0;;;22821:6;2212:25:1;;2200:2;2185:18;;2066:177;22793:35:0;;;;;;;;-1:-1:-1;22846:4:0;22528:330;;;;;:::o;22868:1292::-;10865:16;:23;;-1:-1:-1;;;;10865:23:0;-1:-1:-1;;;10865:23:0;;;22997:24:::1;::::0;22976:15:::1;::::0;10865:23;;22964:65:::1;::::0;23027:1:::1;::::0;22964:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;22942:87:::0;-1:-1:-1;23040:21:0::1;23064:24;:7:::0;22942:87;23064:11:::1;:24::i;:::-;23040:48;;23130:32;23148:13;23130:17;:32::i;:::-;23205:4;::::0;23229:13:::1;::::0;23198:46:::1;::::0;-1:-1:-1;;;23198:46:0;;-1:-1:-1;;;;;23229:13:0;;::::1;23198:46;::::0;::::1;1770:51:1::0;23173:22:0::1;::::0;23205:4;;;::::1;::::0;23198:22:::1;::::0;1743:18:1;;23198:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23173:71;;23282:20;23305:52;23334:22;23354:1;23334:15;;:19;;:22;;;;:::i;:::-;23305:24;::::0;;:28:::1;:52::i;:::-;23282:75;;23395:27;23425:60;23483:1;23425:53;23465:12;23425:35;23444:15;;23425:14;:18;;:35;;;;:::i;:60::-;23395:90;;23518:22;23543:48;23578:12;23543:30;23562:10;;23543:14;:18;;:30;;;;:::i;:48::-;23518:73:::0;-1:-1:-1;23629:27:0::1;23659:59;23518:73:::0;23659:39:::1;:14:::0;23678:19;23659:18:::1;:39::i;:::-;:43:::0;::::1;:59::i;:::-;23629:89:::0;-1:-1:-1;23734:23:0;;23731:107:::1;;23794:22;::::0;23772:66:::1;::::0;23794:22:::1;::::0;::::1;-1:-1:-1::0;;;;;23794:22:0::1;23818:19:::0;23772:21:::1;:66::i;:::-;23854:18:::0;;23851:92:::1;;23909:17;::::0;23887:56:::1;::::0;-1:-1:-1;;;;;23909:17:0::1;23928:14:::0;23887:21:::1;:56::i;:::-;23981:1;23959:19;:23;:42;;;;;24000:1;23986:11;:15;23959:42;23956:195;;;24017:57;24047:4;24054:19;24017:21;:57::i;:::-;24089:50;24106:11;24119:19;24089:16;:50::i;:::-;-1:-1:-1::0;;10911:16:0;:24;;-1:-1:-1;;;;10911:24:0;;;-1:-1:-1;;;;;;22868:1292:0:o;25438:1652::-;-1:-1:-1;;;;;25650:20:0;;25524:7;25650:20;;;:12;:20;;;;;;25524:7;;;;;;25650:20;;25647:670;;;25699:58;25753:3;25699:49;25710:37;25732:14;;25710:17;;:21;;:37;;;;:::i;:::-;25699:6;;:10;:49::i;:58::-;25687:70;;25792:1;25775:14;;:18;:52;;;;;25810:17;;25797:10;;:30;25775:52;25772:188;;;25861:35;25892:3;25861:26;25872:14;;25861:6;:10;;:26;;;;:::i;:35::-;25848:48;;25915:29;25926:6;25933:10;25915;:29::i;:::-;25647:670;;;-1:-1:-1;;;;;25989:23:0;;;;;;:12;:23;;;;;;;;25986:331;;;26041:60;26097:3;26041:51;26052:39;26075:15;;26052:18;;:22;;:39;;;;:::i;26041:60::-;26029:72;;26137:1;26119:15;;:19;:53;;;;;26155:17;;26142:10;;:30;26119:53;26116:190;;;26206:36;26238:3;26206:27;26217:15;;26206:6;:10;;:27;;;;:::i;:36::-;26193:49;;26261:29;26272:6;26279:10;26261;:29::i;:::-;-1:-1:-1;;;;;26330:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;26354:23:0;;;;;;:12;:23;;;;;;;;26330:47;26327:495;;;26397:12;;:16;26393:418;;26433:10;;26462:283;26486:12;;26482:1;:16;26462:283;;;26567:44;;;;;;11899:19:1;;;11934:12;;;11927:28;;;26595:15:0;11971:12:1;;;11964:28;12008:12;;26567:44:0;;;-1:-1:-1;;26567:44:0;;;;;;;;;26557:55;;26567:44;26557:55;;;;-1:-1:-1;;;;;26654:13:0;;26549:64;26654:13;;;:9;:13;;;;;;26557:55;;-1:-1:-1;26654:20:0;;26672:1;26654:17;:20::i;:::-;-1:-1:-1;;;;;26638:13:0;;;;;;;:9;:13;;;;;;;:36;;;;26702:23;;;;;;-1:-1:-1;;;;;;;;;;;26702:23:0;;;26723:1;2212:25:1;;2200:2;2185:18;;2066:177;26702:23:0;;;;;;;;26500:3;;26462:283;;;-1:-1:-1;26779:12:0;;:16;;26794:1;26779:16;:::i;:::-;26763:32;;26414:397;26393:418;26837:13;;26834:173;;26912:4;26894:24;;;;:9;:24;;;;;;:39;;26923:9;26894:28;:39::i;:::-;26885:4;26867:24;;;;:9;:24;;;;;;;:66;;;;26953:42;;-1:-1:-1;;;;;26953:42:0;;;-1:-1:-1;;;;;;;;;;;26953:42:0;;;26985:9;2212:25:1;;2200:2;2185:18;;2066:177;26953:42:0;;;;;;;;26834:173;27026:56;27037:44;27067:13;27037:25;:9;27051:10;27037:13;:25::i;:44::-;27026:6;;:10;:56::i;:::-;27019:63;25438:1652;-1:-1:-1;;;;;;;25438:1652:0:o;1794:250::-;1852:7;1876:1;1881;1876:6;1872:47;;-1:-1:-1;1906:1:0;1899:8;;1872:47;1931:9;1943:5;1947:1;1943;:5;:::i;:::-;1931:17;-1:-1:-1;1976:1:0;1967:5;1971:1;1931:17;1967:5;:::i;:::-;:10;1959:56;;;;-1:-1:-1;;;1959:56:0;;12818:2:1;1959:56:0;;;12800:21:1;12857:2;12837:18;;;12830:30;12896:34;12876:18;;;12869:62;-1:-1:-1;;;12947:18:1;;;12940:31;12988:19;;1959:56:0;12616:397:1;2052:132:0;2110:7;2137:39;2141:1;2144;2137:39;;;;;;;;;;;;;;;;;:3;:39::i;24170:634::-;24321:16;;;24335:1;24321:16;;;;;;;;24297:21;;24321:16;;;;;;;;;;-1:-1:-1;24321:16:0;24297:40;;24366:4;24348;24353:1;24348:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24348:23:0;;;:7;;;;;;;;;:23;24392:4;;24382:7;;24392:4;;;24382;;24392;;24382:7;;;;;;:::i;:::-;-1:-1:-1;;;;;24382:14:0;;;:7;;;;;;;;;:14;24439:15;;24407:62;;24424:4;;24439:15;24457:11;24407:8;:62::i;:::-;24506:15;;24688:13;;24506:237;;-1:-1:-1;;;24506:237:0;;-1:-1:-1;;;;;24506:15:0;;;;:69;;:237;;24590:11;;24506:15;;24661:4;;24688:13;;;24717:15;;24506:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24761:35;24778:11;24791:4;24761:35;;;;;;;:::i;:::-;;;;;;;;24226:578;24170:634;:::o;18876:160::-;18968:4;;18995:13;;18961:67;;-1:-1:-1;;;18961:67:0;;-1:-1:-1;;;;;18995:13:0;;;18961:67;;;14727:51:1;14814:32;;;14794:18;;;14787:60;14863:18;;;14856:34;;;18968:4:0;;;18961:25;;14700:18:1;;18961:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18876:160;;:::o;24812:614::-;24997:15;;24965:62;;24982:4;;-1:-1:-1;;;;;24997:15:0;25015:11;24965:8;:62::i;:::-;25045:4;;25067:15;;25038:57;;-1:-1:-1;;;25038:57:0;;-1:-1:-1;;;;;25067:15:0;;;25038:57;;;15325:51:1;15392:18;;;15385:34;;;25045:4:0;;;25038:20;;15298:18:1;;25038:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;25136:15:0;;25207:4;;25363:14;;25136:282;;-1:-1:-1;;;25136:282:0;;25187:4;25136:282;;;15789:51:1;-1:-1:-1;;;;;25207:4:0;;;15856:18:1;;;15849:60;15925:18;;;15918:34;;;15968:18;;;15961:34;;;25136:15:0;16011:19:1;;;16004:35;;;16055:19;;;16048:35;25363:14:0;;;16099:19:1;;;16092:61;25392:15:0;16169:19:1;;;16162:35;25136:15:0;;;:28;;15761:19:1;;25136:282:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24812:614;;:::o;27098:321::-;27212:17;;27198:10;;:31;27195:43;;27098:321;;:::o;27195:43::-;27285:11;;-1:-1:-1;;;;;27285:11:0;27275:22;;;;:9;:22;;;;;;:35;;27302:7;27275:26;:35::i;:::-;27260:11;;-1:-1:-1;;;;;27260:11:0;27250:22;;;;:9;:22;;;;;:60;27334:10;;:23;;27349:7;27334:14;:23::i;:::-;27321:10;:36;27390:11;;27373:38;;2212:25:1;;;-1:-1:-1;;;;;27390:11:0;;;;27373:38;;;-1:-1:-1;;;;;;;;;;;27373:38:0;2200:2:1;2185:18;27373:38:0;;;;;;;27098:321;;:::o;2192:278::-;2278:7;2313:12;2306:5;2298:28;;;;-1:-1:-1;;;2298:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2337:9:0;2349:5;2353:1;2349;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:367::-;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1137:466::-;1214:6;1222;1230;1283:2;1271:9;1262:7;1258:23;1254:32;1251:52;;;1299:1;1296;1289:12;1251:52;-1:-1:-1;;1344:23:1;;;1464:2;1449:18;;1436:32;;-1:-1:-1;1567:2:1;1552:18;;;1539:32;;1137:466;-1:-1:-1;1137:466:1:o;2248:247::-;2307:6;2360:2;2348:9;2339:7;2335:23;2331:32;2328:52;;;2376:1;2373;2366:12;2328:52;2415:9;2402:23;2434:31;2459:5;2434:31;:::i;2500:118::-;2586:5;2579:13;2572:21;2565:5;2562:32;2552:60;;2608:1;2605;2598:12;2623:382;2688:6;2696;2749:2;2737:9;2728:7;2724:23;2720:32;2717:52;;;2765:1;2762;2755:12;2717:52;2804:9;2791:23;2823:31;2848:5;2823:31;:::i;:::-;2873:5;-1:-1:-1;2930:2:1;2915:18;;2902:32;2943:30;2902:32;2943:30;:::i;:::-;2992:7;2982:17;;;2623:382;;;;;:::o;3010:508::-;3087:6;3095;3103;3156:2;3144:9;3135:7;3131:23;3127:32;3124:52;;;3172:1;3169;3162:12;3124:52;3211:9;3198:23;3230:31;3255:5;3230:31;:::i;:::-;3280:5;-1:-1:-1;3337:2:1;3322:18;;3309:32;3350:33;3309:32;3350:33;:::i;:::-;3010:508;;3402:7;;-1:-1:-1;;;3482:2:1;3467:18;;;;3454:32;;3010:508::o;3523:241::-;3579:6;3632:2;3620:9;3611:7;3607:23;3603:32;3600:52;;;3648:1;3645;3638:12;3600:52;3687:9;3674:23;3706:28;3728:5;3706:28;:::i;4166:226::-;4225:6;4278:2;4266:9;4257:7;4253:23;4249:32;4246:52;;;4294:1;4291;4284:12;4246:52;-1:-1:-1;4339:23:1;;4166:226;-1:-1:-1;4166:226:1:o;4397:745::-;4489:6;4497;4505;4558:2;4546:9;4537:7;4533:23;4529:32;4526:52;;;4574:1;4571;4564:12;4526:52;4614:9;4601:23;4647:18;4639:6;4636:30;4633:50;;;4679:1;4676;4669:12;4633:50;4702:22;;4755:4;4747:13;;4743:27;-1:-1:-1;4733:55:1;;4784:1;4781;4774:12;4733:55;4824:2;4811:16;4850:18;4842:6;4839:30;4836:50;;;4882:1;4879;4872:12;4836:50;4937:7;4930:4;4920:6;4917:1;4913:14;4909:2;4905:23;4901:34;4898:47;4895:67;;;4958:1;4955;4948:12;4895:67;4989:4;4981:13;;;;-1:-1:-1;5013:6:1;-1:-1:-1;5054:20:1;;5041:34;5084:28;5041:34;5084:28;:::i;:::-;5131:5;5121:15;;;4397:745;;;;;:::o;5375:388::-;5443:6;5451;5504:2;5492:9;5483:7;5479:23;5475:32;5472:52;;;5520:1;5517;5510:12;5472:52;5559:9;5546:23;5578:31;5603:5;5578:31;:::i;:::-;5628:5;-1:-1:-1;5685:2:1;5670:18;;5657:32;5698:33;5657:32;5698:33;:::i;5768:380::-;5847:1;5843:12;;;;5890;;;5911:61;;5965:4;5957:6;5953:17;5943:27;;5911:61;6018:2;6010:6;6007:14;5987:18;5984:38;5981:161;;6064:10;6059:3;6055:20;6052:1;6045:31;6099:4;6096:1;6089:15;6127:4;6124:1;6117:15;5981:161;;5768:380;;;:::o;6153:356::-;6355:2;6337:21;;;6374:18;;;6367:30;6433:34;6428:2;6413:18;;6406:62;6500:2;6485:18;;6153:356::o;6514:251::-;6584:6;6637:2;6625:9;6616:7;6612:23;6608:32;6605:52;;;6653:1;6650;6643:12;6605:52;6685:9;6679:16;6704:31;6729:5;6704:31;:::i;7075:127::-;7136:10;7131:3;7127:20;7124:1;7117:31;7167:4;7164:1;7157:15;7191:4;7188:1;7181:15;8769:127;8830:10;8825:3;8821:20;8818:1;8811:31;8861:4;8858:1;8851:15;8885:4;8882:1;8875:15;8901:125;8966:9;;;8987:10;;;8984:36;;;9000:18;;:::i;11346:128::-;11413:9;;;11434:11;;;11431:37;;;11448:18;;:::i;11479:230::-;11549:6;11602:2;11590:9;11581:7;11577:23;11573:32;11570:52;;;11618:1;11615;11608:12;11570:52;-1:-1:-1;11663:16:1;;11479:230;-1:-1:-1;11479:230:1:o;12221:168::-;12294:9;;;12325;;12342:15;;;12336:22;;12322:37;12312:71;;12363:18;;:::i;12394:217::-;12434:1;12460;12450:132;;12504:10;12499:3;12495:20;12492:1;12485:31;12539:4;12536:1;12529:15;12567:4;12564:1;12557:15;12450:132;-1:-1:-1;12596:9:1;;12394:217::o;13150:446::-;13203:3;13241:5;13235:12;13268:6;13263:3;13256:19;13300:4;13295:3;13291:14;13284:21;;13339:4;13332:5;13328:16;13362:1;13372:199;13386:6;13383:1;13380:13;13372:199;;;13451:13;;-1:-1:-1;;;;;13447:39:1;13435:52;;13516:4;13507:14;;;;13544:17;;;;13483:1;13401:9;13372:199;;;-1:-1:-1;13587:3:1;;13150:446;-1:-1:-1;;;;13150:446:1:o;13601:582::-;13900:6;13889:9;13882:25;13943:6;13938:2;13927:9;13923:18;13916:34;13986:3;13981:2;13970:9;13966:18;13959:31;13863:4;14007:57;14059:3;14048:9;14044:19;14036:6;14007:57;:::i;:::-;-1:-1:-1;;;;;14100:32:1;;;;14095:2;14080:18;;14073:60;-1:-1:-1;14164:3:1;14149:19;14142:35;13999:65;13601:582;-1:-1:-1;;;13601:582:1:o;14188:332::-;14395:6;14384:9;14377:25;14438:2;14433;14422:9;14418:18;14411:30;14358:4;14458:56;14510:2;14499:9;14495:18;14487:6;14458:56;:::i;:::-;14450:64;14188:332;-1:-1:-1;;;;14188:332:1:o;14901:245::-;14968:6;15021:2;15009:9;15000:7;14996:23;14992:32;14989:52;;;15037:1;15034;15027:12;14989:52;15069:9;15063:16;15088:28;15110:5;15088:28;:::i;16208:456::-;16296:6;16304;16312;16365:2;16353:9;16344:7;16340:23;16336:32;16333:52;;;16381:1;16378;16371:12;16333:52;-1:-1:-1;;16426:16:1;;16532:2;16517:18;;16511:25;16628:2;16613:18;;;16607:25;16426:16;;16511:25;;-1:-1:-1;16607:25:1;16208:456;-1:-1:-1;16208:456:1:o

Swarm Source

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