ETH Price: $3,137.55 (-5.20%)
Gas: 9 Gwei

Token

Ordinals Inscription Index (ORDINALS)
 

Overview

Max Total Supply

1,000,000,000 ORDINALS

Holders

90

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,206,784.992817935111300208 ORDINALS

Value
$0.00
0x1d5f62336dd0b737e13a7edc85932bf98f27e3b2
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ORDINALS

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
  /$$$$$$  /$$$$$$$  /$$$$$$$  /$$$$$$ /$$   /$$  /$$$$$$  /$$        /$$$$$$ 
 /$$__  $$| $$__  $$| $$__  $$|_  $$_/| $$$ | $$ /$$__  $$| $$       /$$__  $$
| $$  \ $$| $$  \ $$| $$  \ $$  | $$  | $$$$| $$| $$  \ $$| $$      | $$  \__/
| $$  | $$| $$$$$$$/| $$  | $$  | $$  | $$ $$ $$| $$$$$$$$| $$      |  $$$$$$ 
| $$  | $$| $$__  $$| $$  | $$  | $$  | $$  $$$$| $$__  $$| $$       \____  $$
| $$  | $$| $$  \ $$| $$  | $$  | $$  | $$\  $$$| $$  | $$| $$       /$$  \ $$
|  $$$$$$/| $$  | $$| $$$$$$$/ /$$$$$$| $$ \  $$| $$  | $$| $$$$$$$$|  $$$$$$/
 \______/ |__/  |__/|_______/ |______/|__/  \__/|__/  |__/|________/ \______/ 
                                                                              
                                                                              
$Ordinals, your handbook to the ordinal theory.
                                                                          
Introduction: https://docs.ordinals.com/

Website: https://ordinals.com/

Github: https://github.com/ordinals/ord/

*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.12;

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

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

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

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

contract ORDINALS is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public TreasuryAddress;
    address public EcosystemAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
    uint256 public buyRewardsFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
    uint256 public sellRewardsFee;

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;
    uint256 public tokensForRewards;


    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading(bool tradingActive);
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event UpdatedEcosystemAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);


    constructor() ERC20("Ordinals Inscription Index", "ORDINALS") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1000000000 * 1e18;

        maxBuyAmount = totalSupply *  10 / 1000;
        maxSellAmount = totalSupply *  10 / 1000;
        maxWalletAmount = totalSupply * 10 / 1000;
        swapTokensAtAmount = totalSupply * 50 / 100000; 

        buyTreasuryFee = 25;
        buyLiquidityFee = 5;
        buyRewardsFee = 0;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;

        sellTreasuryFee = 25;
        sellLiquidityFee = 5;
        sellRewardsFee = 0;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        TreasuryAddress = address(0x4136A346ECdE85aF0653A1D7ecB30a59CD0F122c);
        EcosystemAddress = address(0x4136A346ECdE85aF0653A1D7ecB30a59CD0F122c);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(EcosystemAddress, true);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }


    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    function updateSwapThreshold(uint256 newAmount) public  {
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        swapTokensAtAmount = newAmount* (10**18);
    }


    function transferForeignToken(address _token, address _to) public returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() public {
        bool success;
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }


    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");


        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                    require(from == owner(), "Trading is not enabled");
                }
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] && block.number>tradingActiveBlock) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 penaltyAmount = 0;

        // only take fees on Trades, not on wallet transfers
        if(takeFee){       
            if(tradingActiveBlock>0 && (tradingActiveBlock + 1) > block.number){
                penaltyAmount = amount * 10 / 100;
                super._transfer(from, EcosystemAddress, penaltyAmount);
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
                tokensForRewards += fees * sellRewardsFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
                tokensForRewards += fees * buyRewardsFee / buyTotalFees;
            }  
            if(fees > 0){
                super._transfer(from, address(this), fees);
            }
            amount -= fees + penaltyAmount;
        }

        super._transfer(from, to, amount);
    }

    function updateBuyFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyLiquidityFee = _liquidityFee;
        buyRewardsFee = _rewardsFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;
        require(buyTotalFees <= 30, "Fees must be 30%  or less");
    }

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellRewardsFee = _rewardsFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;
        require(sellTotalFees <= 99, "Fees must be 30%  or less");
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury + tokensForRewards;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 5){
            contractBalance = swapTokensAtAmount * 5;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForTreasury = ethBalance * tokensForTreasury / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForRewards = ethBalance * tokensForRewards / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForTreasury + ethForRewards;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;
        tokensForRewards = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(EcosystemAddress).call{value: ethForRewards}("");

        (success,) = address(TreasuryAddress).call{value: address(this).balance}("");
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

     // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading(tradingActive);

        if (tradingActive && tradingActiveBlock == 0) {
            tradingActiveBlock = block.number;
        }
    }

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

    function setEcosystemAddress(address _EcosystemAddress) external onlyOwner {
        require(_EcosystemAddress != address(0), "_EcosystemAddress address cannot be 0");
        EcosystemAddress = payable(_EcosystemAddress);
        emit UpdatedEcosystemAddress(_EcosystemAddress);
    }
   
   
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedEcosystemAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"EcosystemAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_EcosystemAddress","type":"address"}],"name":"setEcosystemAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040525f600d55600e805462ffffff1916600117905534801562000023575f80fd5b506040518060400160405280601a81526020017f4f7264696e616c7320496e736372697074696f6e20496e646578000000000000815250604051806040016040528060088152602001674f5244494e414c5360c01b81525081600390816200008c91906200081d565b5060046200009b82826200081d565b5050505f620000af6200042560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f8051602062003705833981519152908290a35033737a250d5630b4cf539739df2c5dacb4c659f2488d6200010d81600162000429565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000156573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200017c9190620008e5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ee9190620008e5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000239573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025f9190620008e5565b6001600160a01b031660a08190526200027a9060016200048b565b6b033b2e3c9fd0803ce80000006103e86200029782600a62000928565b620002a3919062000948565b6006556103e8620002b682600a62000928565b620002c2919062000948565b6007556103e8620002d582600a62000928565b620002e1919062000948565b600855620186a0620002f582603262000928565b62000301919062000948565b600a5560196010819055600560118190555f60128190559162000325919062000968565b62000331919062000968565b600f5560196014819055600560158190555f60168190559162000355919062000968565b62000361919062000968565b6013556200037183600162000429565b6200037e30600162000429565b6200038d61dead600162000429565b600b8054734136a346ecde85af0653a1d7ecb30a59cd0f122c6001600160a01b03199182168117909255600c80549091169091179055620003d0836001620004f5565b620003dd306001620004f5565b620003ec61dead6001620004f5565b600c5462000405906001600160a01b03166001620004f5565b620004118382620005a1565b6200041c8362000683565b5050506200097e565b3390565b6001600160a01b0382165f818152601b6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601c60205260409020805460ff1916821515179055620004ba828262000429565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b03163314620005435760405162461bcd60e51b815260206004820181905260248201525f80516020620036e583398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005f95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200053a565b8060025f8282546200060c919062000968565b90915550506001600160a01b0382165f90815260208190526040812080548392906200063a90849062000968565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006cd5760405162461bcd60e51b815260206004820181905260248201525f80516020620036e583398151915260448201526064016200053a565b6001600160a01b038116620007345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200053a565b6005546040516001600160a01b038084169216905f8051602062003705833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620007a657607f821691505b602082108103620007c557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000818575f81815260208120601f850160051c81016020861015620007f35750805b601f850160051c820191505b818110156200081457828155600101620007ff565b5050505b505050565b81516001600160401b038111156200083957620008396200077d565b62000851816200084a845462000791565b84620007cb565b602080601f83116001811462000887575f84156200086f5750858301515b5f19600386901b1c1916600185901b17855562000814565b5f85815260208120601f198616915b82811015620008b75788860151825594840194600190910190840162000896565b5085821015620008d557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620008f6575f80fd5b81516001600160a01b03811681146200090d575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141762000942576200094262000914565b92915050565b5f826200096357634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000942576200094262000914565b60805160a051612d14620009d15f395f81816104c501528181610e01015261123901525f81816103cd0152818161263d015281816126f401528181612730015281816127a401526127cb0152612d145ff3fe60806040526004361061032a575f3560e01c806388e765ff116101a3578063c17b5b8c116100f2578063e2f4560511610092578063f2fde38b1161006d578063f2fde38b14610932578063f54afa7814610951578063f5648a4f14610966578063f63743421461097a575f80fd5b8063e2f45605146108f3578063ee40166e14610908578063f11a24d31461091d575f80fd5b8063cc2ffe7c116100cd578063cc2ffe7c14610866578063d85ba0631461087b578063dc3f0d0f14610890578063dd62ed3e146108af575f80fd5b8063c17b5b8c14610809578063c18bc19514610828578063cc274b2914610847575f80fd5b8063a8e01b281161015d578063b62496f511610138578063b62496f514610789578063bb8d5131146107b7578063bbc0c742146107cc578063c0246668146107ea575f80fd5b8063a8e01b2814610736578063a9059cbb14610755578063aa4bde2814610774575f80fd5b806388e765ff1461069e5780638a8c523c146106b35780638da5cb5b146106c757806395d89b41146106e45780639a7a23d6146106f8578063a457c2d714610717575f80fd5b80635c068a8c11610279578063715018a61161021957806377a3b609116101f457806377a3b6091461062c5780638013f73a146106415780638095d564146106605780638366e79a1461067f575f80fd5b8063715018a6146105e5578063751039fc146105f95780637571336a1461060d575f80fd5b80636a486a8e116102545780636a486a8e146105685780636b2fb1241461057d5780636ddd17131461059257806370a08231146105b1575f80fd5b80635c068a8c1461051f5780636605bfda1461053457806366d602ae14610553575f80fd5b806323b872dd116102e457806339509351116102bf578063395093511461049557806349bd5a5e146104b45780634a62bb65146104e75780635b5c251f14610500575f80fd5b806323b872dd1461043a5780632be32b6114610459578063313ce5671461047a575f80fd5b806306fdde0314610335578063095ea7b31461035f57806310d5de531461038e5780631694505e146103bc57806318160ddd146104075780631a8145bb14610425575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b5061034961098f565b60405161035691906128a1565b60405180910390f35b34801561036a575f80fd5b5061037e610379366004612903565b610a1f565b6040519015158152602001610356565b348015610399575f80fd5b5061037e6103a836600461292d565b601b6020525f908152604090205460ff1681565b3480156103c7575f80fd5b506103ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610356565b348015610412575f80fd5b506002545b604051908152602001610356565b348015610430575f80fd5b5061041760185481565b348015610445575f80fd5b5061037e61045436600461294f565b610a35565b348015610464575f80fd5b5061047861047336600461298d565b610ae2565b005b348015610485575f80fd5b5060405160128152602001610356565b3480156104a0575f80fd5b5061037e6104af366004612903565b610bef565b3480156104bf575f80fd5b506103ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f2575f80fd5b50600e5461037e9060ff1681565b34801561050b575f80fd5b50600b546103ef906001600160a01b031681565b34801561052a575f80fd5b5061041760105481565b34801561053f575f80fd5b5061047861054e36600461292d565b610c2a565b34801561055e575f80fd5b5061041760075481565b348015610573575f80fd5b5061041760135481565b348015610588575f80fd5b5061041760145481565b34801561059d575f80fd5b50600e5461037e9062010000900460ff1681565b3480156105bc575f80fd5b506104176105cb36600461292d565b6001600160a01b03165f9081526020819052604090205490565b3480156105f0575f80fd5b50610478610cff565b348015610604575f80fd5b50610478610d72565b348015610618575f80fd5b506104786106273660046129b1565b610dd0565b348015610637575f80fd5b5061041760125481565b34801561064c575f80fd5b50600c546103ef906001600160a01b031681565b34801561066b575f80fd5b5061047861067a3660046129e8565b610eba565b34801561068a575f80fd5b5061037e610699366004612a11565b610f5e565b3480156106a9575f80fd5b5061041760065481565b3480156106be575f80fd5b50610478611107565b3480156106d2575f80fd5b506005546001600160a01b03166103ef565b3480156106ef575f80fd5b506103496111fe565b348015610703575f80fd5b506104786107123660046129b1565b61120d565b348015610722575f80fd5b5061037e610731366004612903565b6112ec565b348015610741575f80fd5b5061047861075036600461292d565b611384565b348015610760575f80fd5b5061037e61076f366004612903565b61145b565b34801561077f575f80fd5b5061041760085481565b348015610794575f80fd5b5061037e6107a336600461292d565b601c6020525f908152604090205460ff1681565b3480156107c2575f80fd5b5061041760165481565b3480156107d7575f80fd5b50600e5461037e90610100900460ff1681565b3480156107f5575f80fd5b506104786108043660046129b1565b611467565b348015610814575f80fd5b506104786108233660046129e8565b6114ef565b348015610833575f80fd5b5061047861084236600461298d565b61158e565b348015610852575f80fd5b5061047861086136600461298d565b611697565b348015610871575f80fd5b5061041760175481565b348015610886575f80fd5b50610417600f5481565b34801561089b575f80fd5b506104786108aa36600461298d565b6116d9565b3480156108ba575f80fd5b506104176108c9366004612a11565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156108fe575f80fd5b50610417600a5481565b348015610913575f80fd5b50610417600d5481565b348015610928575f80fd5b5061041760115481565b34801561093d575f80fd5b5061047861094c36600461292d565b6117e0565b34801561095c575f80fd5b5061041760195481565b348015610971575f80fd5b506104786118ca565b348015610985575f80fd5b5061041760155481565b60606003805461099e90612a3d565b80601f01602080910402602001604051908101604052809291908181526020018280546109ca90612a3d565b8015610a155780601f106109ec57610100808354040283529160200191610a15565b820191905f5260205f20905b8154815290600101906020018083116109f857829003601f168201915b5050505050905090565b5f610a2b33848461193e565b5060015b92915050565b5f610a41848484611a61565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610aca5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610ad7853385840361193e565b506001949350505050565b6005546001600160a01b03163314610b0c5760405162461bcd60e51b8152600401610ac190612a75565b670de0b6b3a76400006103e8610b2160025490565b610b2c906001612abe565b610b369190612ad5565b610b409190612ad5565b811015610ba15760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610ac1565b610bb381670de0b6b3a7640000612abe565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a2b918590610c25908690612af4565b61193e565b6005546001600160a01b03163314610c545760405162461bcd60e51b8152600401610ac190612a75565b6001600160a01b038116610cb65760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610ac1565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f905f90a250565b6005546001600160a01b03163314610d295760405162461bcd60e51b8152600401610ac190612a75565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d9c5760405162461bcd60e51b8152600401610ac190612a75565b600e805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610dfa5760405162461bcd60e51b8152600401610ac190612a75565b80610e90577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e905760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610ac1565b6001600160a01b03919091165f908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ee45760405162461bcd60e51b8152600401610ac190612a75565b60108390556011829055601281905580610efe8385612af4565b610f089190612af4565b600f819055601e1015610f595760405162461bcd60e51b815260206004820152601960248201527846656573206d7573742062652033302520206f72206c65737360381b6044820152606401610ac1565b505050565b5f6001600160a01b038316610fb55760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610ac1565b600b546001600160a01b03163314610fdf5760405162461bcd60e51b8152600401610ac190612b07565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015611023573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110479190612b48565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015611097573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110bb9190612b5f565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146111315760405162461bcd60e51b8152600401610ac190612a75565b600e54610100900460ff16156111895760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726520656e61626c652074726164696e6700000000000000006044820152606401610ac1565b600e80546201010062ffff0019909116179081905560405161010090910460ff16151581527fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe520899060200160405180910390a1600e54610100900460ff1680156111f25750600d54155b156111fc5743600d555b565b60606004805461099e90612a3d565b6005546001600160a01b031633146112375760405162461bcd60e51b8152600401610ac190612a75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036112de5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ac1565b6112e882826121cb565b5050565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561136d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac1565b61137a338585840361193e565b5060019392505050565b6005546001600160a01b031633146113ae5760405162461bcd60e51b8152600401610ac190612a75565b6001600160a01b0381166114125760405162461bcd60e51b815260206004820152602560248201527f5f45636f73797374656d4164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610ac1565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f3a687f29cd2e7ea2126d7cf7ad8c5facb38ce4a43cc356eb40f9fb6e628172e5905f90a250565b5f610a2b338484611a61565b6005546001600160a01b031633146114915760405162461bcd60e51b8152600401610ac190612a75565b6001600160a01b0382165f818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146115195760405162461bcd60e51b8152600401610ac190612a75565b601483905560158290556016819055806115338385612af4565b61153d9190612af4565b601381905560631015610f595760405162461bcd60e51b815260206004820152601960248201527846656573206d7573742062652033302520206f72206c65737360381b6044820152606401610ac1565b6005546001600160a01b031633146115b85760405162461bcd60e51b8152600401610ac190612a75565b670de0b6b3a76400006103e86115cd60025490565b6115d8906003612abe565b6115e29190612ad5565b6115ec9190612ad5565b8110156116505760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610ac1565b61166281670de0b6b3a7640000612abe565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610be4565b600b546001600160a01b031633146116c15760405162461bcd60e51b8152600401610ac190612b07565b6116d381670de0b6b3a7640000612abe565b600a5550565b6005546001600160a01b031633146117035760405162461bcd60e51b8152600401610ac190612a75565b670de0b6b3a76400006103e861171860025490565b611723906001612abe565b61172d9190612ad5565b6117379190612ad5565b8110156117995760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610ac1565b6117ab81670de0b6b3a7640000612abe565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610be4565b6005546001600160a01b0316331461180a5760405162461bcd60e51b8152600401610ac190612a75565b6001600160a01b03811661186f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac1565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f906001600160a01b031633146118f65760405162461bcd60e51b8152600401610ac190612b07565b604051339047905f81818185875af1925050503d805f8114611933576040519150601f19603f3d011682016040523d82523d5f602084013e611938565b606091505b50505050565b6001600160a01b0383166119a05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac1565b6001600160a01b038216611a015760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac1565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a875760405162461bcd60e51b8152600401610ac190612b7a565b6001600160a01b038216611aad5760405162461bcd60e51b8152600401610ac190612bbf565b5f8111611afc5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610ac1565b600e5460ff1615611e64576005546001600160a01b03848116911614801590611b3357506005546001600160a01b03838116911614155b8015611b4757506001600160a01b03821615155b8015611b5e57506001600160a01b03821661dead14155b15611e6457600e54610100900460ff16611c4a576001600160a01b0383165f908152601b602052604090205460ff1680611baf57506001600160a01b0382165f908152601b602052604090205460ff165b611bf45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ac1565b6005546001600160a01b03848116911614611c4a5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610ac1565b6001600160a01b0383165f908152601c602052604090205460ff168015611c8957506001600160a01b0382165f908152601b602052604090205460ff16155b8015611c965750600d5443115b15611d0357600654811115611cfe5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610ac1565b611dac565b6001600160a01b0382165f908152601c602052604090205460ff168015611d4257506001600160a01b0383165f908152601b602052604090205460ff16155b15611dac57600754811115611dac5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610ac1565b6001600160a01b0382165f908152601b602052604090205460ff16158015611dec57506001600160a01b0383165f908152601b602052604090205460ff16155b15611e64576008546001600160a01b0383165f90815260208190526040902054611e169083612af4565b1115611e645760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610ac1565b305f90815260208190526040902054600a5481108015908190611e8f5750600e5462010000900460ff165b8015611e9e575060095460ff16155b8015611ec257506001600160a01b0385165f908152601c602052604090205460ff16155b8015611ee657506001600160a01b0385165f908152601a602052604090205460ff16155b8015611f0a57506001600160a01b0384165f908152601a602052604090205460ff16155b15611f2f576009805460ff19166001179055611f24612233565b6009805460ff191690555b6001600160a01b0385165f908152601a602052604090205460019060ff1680611f6f57506001600160a01b0385165f908152601a602052604090205460ff165b15611f7757505f5b5f8082156121b6575f600d54118015611f9d575043600d546001611f9b9190612af4565b115b15611fd9576064611faf87600a612abe565b611fb99190612ad5565b600c54909150611fd49089906001600160a01b031683612433565b61218e565b6001600160a01b0387165f908152601c602052604090205460ff16801561200157505f601354115b156120b6576064601354876120169190612abe565b6120209190612ad5565b9150601354601554836120339190612abe565b61203d9190612ad5565b60185f82825461204d9190612af4565b90915550506013546014546120629084612abe565b61206c9190612ad5565b60175f82825461207c9190612af4565b90915550506013546016546120919084612abe565b61209b9190612ad5565b60195f8282546120ab9190612af4565b9091555061218e9050565b6001600160a01b0388165f908152601c602052604090205460ff1680156120de57505f600f54115b1561218e576064600f54876120f39190612abe565b6120fd9190612ad5565b9150600f54601154836121109190612abe565b61211a9190612ad5565b60185f82825461212a9190612af4565b9091555050600f5460105461213f9084612abe565b6121499190612ad5565b60175f8282546121599190612af4565b9091555050600f5460125461216e9084612abe565b6121789190612ad5565b60195f8282546121889190612af4565b90915550505b811561219f5761219f883084612433565b6121a98183612af4565b6121b39087612c02565b95505b6121c1888888612433565b5050505050505050565b6001600160a01b0382165f908152601c60205260409020805460ff19168215151790556121f88282612586565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b305f9081526020819052604081205490505f6019546017546018546122589190612af4565b6122629190612af4565b905081158061226f575080155b15612278575050565b600a54612286906005612abe565b82111561229e57600a5461229b906005612abe565b91505b5f80600283601854866122b19190612abe565b6122bb9190612ad5565b6122c59190612ad5565b90506122d96122d48286612c02565b6125e8565b601854479081905f906122ee90600290612ad5565b6122f89087612c02565b6017546123059085612abe565b61230f9190612ad5565b90505f60026018546123219190612ad5565b61232b9088612c02565b6019546123389086612abe565b6123429190612ad5565b905061234e8183612af4565b6123589084612c02565b5f601881905560178190556019559250841580159061237657505f83115b1561238557612385858461279e565b600c546040516001600160a01b039091169082905f81818185875af1925050503d805f81146123cf576040519150601f19603f3d011682016040523d82523d5f602084013e6123d4565b606091505b5050600b546040519197506001600160a01b03169047905f81818185875af1925050503d805f8114612421576040519150601f19603f3d011682016040523d82523d5f602084013e612426565b606091505b5050505050505050505050565b6001600160a01b0383166124595760405162461bcd60e51b8152600401610ac190612b7a565b6001600160a01b03821661247f5760405162461bcd60e51b8152600401610ac190612bbf565b6001600160a01b0383165f90815260208190526040902054818110156124f65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ac1565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061252c908490612af4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161257891815260200190565b60405180910390a350505050565b6001600160a01b0382165f818152601b6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061261b5761261b612c15565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612697573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126bb9190612c29565b816001815181106126ce576126ce612c15565b60200260200101906001600160a01b031690816001600160a01b031681525050612719307f00000000000000000000000000000000000000000000000000000000000000008461193e565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061276d9085905f90869030904290600401612c44565b5f604051808303815f87803b158015612784575f80fd5b505af1158015612796573d5f803e3d5ffd5b505050505050565b6127c9307f00000000000000000000000000000000000000000000000000000000000000008461193e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230855f8061280f6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612875573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061289a9190612cb3565b5050505050565b5f6020808352835180828501525f5b818110156128cc578581018301518582016040015282016128b0565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612900575f80fd5b50565b5f8060408385031215612914575f80fd5b823561291f816128ec565b946020939093013593505050565b5f6020828403121561293d575f80fd5b8135612948816128ec565b9392505050565b5f805f60608486031215612961575f80fd5b833561296c816128ec565b9250602084013561297c816128ec565b929592945050506040919091013590565b5f6020828403121561299d575f80fd5b5035919050565b8015158114612900575f80fd5b5f80604083850312156129c2575f80fd5b82356129cd816128ec565b915060208301356129dd816129a4565b809150509250929050565b5f805f606084860312156129fa575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215612a22575f80fd5b8235612a2d816128ec565b915060208301356129dd816128ec565b600181811c90821680612a5157607f821691505b602082108103612a6f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a2f57610a2f612aaa565b5f82612aef57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a2f57610a2f612aaa565b60208082526021908201527f6f6e6c79205472656173757279416464726573732063616e20776974686472616040820152607760f81b606082015260800190565b5f60208284031215612b58575f80fd5b5051919050565b5f60208284031215612b6f575f80fd5b8151612948816129a4565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a2f57610a2f612aaa565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612c39575f80fd5b8151612948816128ec565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612c925784516001600160a01b031683529383019391830191600101612c6d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612cc5575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212202d4b95ed7dcb54219d8b864babcb12bdadf3b5afdd8628aa58cf5fbddfb471b164736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061032a575f3560e01c806388e765ff116101a3578063c17b5b8c116100f2578063e2f4560511610092578063f2fde38b1161006d578063f2fde38b14610932578063f54afa7814610951578063f5648a4f14610966578063f63743421461097a575f80fd5b8063e2f45605146108f3578063ee40166e14610908578063f11a24d31461091d575f80fd5b8063cc2ffe7c116100cd578063cc2ffe7c14610866578063d85ba0631461087b578063dc3f0d0f14610890578063dd62ed3e146108af575f80fd5b8063c17b5b8c14610809578063c18bc19514610828578063cc274b2914610847575f80fd5b8063a8e01b281161015d578063b62496f511610138578063b62496f514610789578063bb8d5131146107b7578063bbc0c742146107cc578063c0246668146107ea575f80fd5b8063a8e01b2814610736578063a9059cbb14610755578063aa4bde2814610774575f80fd5b806388e765ff1461069e5780638a8c523c146106b35780638da5cb5b146106c757806395d89b41146106e45780639a7a23d6146106f8578063a457c2d714610717575f80fd5b80635c068a8c11610279578063715018a61161021957806377a3b609116101f457806377a3b6091461062c5780638013f73a146106415780638095d564146106605780638366e79a1461067f575f80fd5b8063715018a6146105e5578063751039fc146105f95780637571336a1461060d575f80fd5b80636a486a8e116102545780636a486a8e146105685780636b2fb1241461057d5780636ddd17131461059257806370a08231146105b1575f80fd5b80635c068a8c1461051f5780636605bfda1461053457806366d602ae14610553575f80fd5b806323b872dd116102e457806339509351116102bf578063395093511461049557806349bd5a5e146104b45780634a62bb65146104e75780635b5c251f14610500575f80fd5b806323b872dd1461043a5780632be32b6114610459578063313ce5671461047a575f80fd5b806306fdde0314610335578063095ea7b31461035f57806310d5de531461038e5780631694505e146103bc57806318160ddd146104075780631a8145bb14610425575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b5061034961098f565b60405161035691906128a1565b60405180910390f35b34801561036a575f80fd5b5061037e610379366004612903565b610a1f565b6040519015158152602001610356565b348015610399575f80fd5b5061037e6103a836600461292d565b601b6020525f908152604090205460ff1681565b3480156103c7575f80fd5b506103ef7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610356565b348015610412575f80fd5b506002545b604051908152602001610356565b348015610430575f80fd5b5061041760185481565b348015610445575f80fd5b5061037e61045436600461294f565b610a35565b348015610464575f80fd5b5061047861047336600461298d565b610ae2565b005b348015610485575f80fd5b5060405160128152602001610356565b3480156104a0575f80fd5b5061037e6104af366004612903565b610bef565b3480156104bf575f80fd5b506103ef7f0000000000000000000000005e65645f76df22f72d962514b865fbf87fa294f781565b3480156104f2575f80fd5b50600e5461037e9060ff1681565b34801561050b575f80fd5b50600b546103ef906001600160a01b031681565b34801561052a575f80fd5b5061041760105481565b34801561053f575f80fd5b5061047861054e36600461292d565b610c2a565b34801561055e575f80fd5b5061041760075481565b348015610573575f80fd5b5061041760135481565b348015610588575f80fd5b5061041760145481565b34801561059d575f80fd5b50600e5461037e9062010000900460ff1681565b3480156105bc575f80fd5b506104176105cb36600461292d565b6001600160a01b03165f9081526020819052604090205490565b3480156105f0575f80fd5b50610478610cff565b348015610604575f80fd5b50610478610d72565b348015610618575f80fd5b506104786106273660046129b1565b610dd0565b348015610637575f80fd5b5061041760125481565b34801561064c575f80fd5b50600c546103ef906001600160a01b031681565b34801561066b575f80fd5b5061047861067a3660046129e8565b610eba565b34801561068a575f80fd5b5061037e610699366004612a11565b610f5e565b3480156106a9575f80fd5b5061041760065481565b3480156106be575f80fd5b50610478611107565b3480156106d2575f80fd5b506005546001600160a01b03166103ef565b3480156106ef575f80fd5b506103496111fe565b348015610703575f80fd5b506104786107123660046129b1565b61120d565b348015610722575f80fd5b5061037e610731366004612903565b6112ec565b348015610741575f80fd5b5061047861075036600461292d565b611384565b348015610760575f80fd5b5061037e61076f366004612903565b61145b565b34801561077f575f80fd5b5061041760085481565b348015610794575f80fd5b5061037e6107a336600461292d565b601c6020525f908152604090205460ff1681565b3480156107c2575f80fd5b5061041760165481565b3480156107d7575f80fd5b50600e5461037e90610100900460ff1681565b3480156107f5575f80fd5b506104786108043660046129b1565b611467565b348015610814575f80fd5b506104786108233660046129e8565b6114ef565b348015610833575f80fd5b5061047861084236600461298d565b61158e565b348015610852575f80fd5b5061047861086136600461298d565b611697565b348015610871575f80fd5b5061041760175481565b348015610886575f80fd5b50610417600f5481565b34801561089b575f80fd5b506104786108aa36600461298d565b6116d9565b3480156108ba575f80fd5b506104176108c9366004612a11565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156108fe575f80fd5b50610417600a5481565b348015610913575f80fd5b50610417600d5481565b348015610928575f80fd5b5061041760115481565b34801561093d575f80fd5b5061047861094c36600461292d565b6117e0565b34801561095c575f80fd5b5061041760195481565b348015610971575f80fd5b506104786118ca565b348015610985575f80fd5b5061041760155481565b60606003805461099e90612a3d565b80601f01602080910402602001604051908101604052809291908181526020018280546109ca90612a3d565b8015610a155780601f106109ec57610100808354040283529160200191610a15565b820191905f5260205f20905b8154815290600101906020018083116109f857829003601f168201915b5050505050905090565b5f610a2b33848461193e565b5060015b92915050565b5f610a41848484611a61565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610aca5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610ad7853385840361193e565b506001949350505050565b6005546001600160a01b03163314610b0c5760405162461bcd60e51b8152600401610ac190612a75565b670de0b6b3a76400006103e8610b2160025490565b610b2c906001612abe565b610b369190612ad5565b610b409190612ad5565b811015610ba15760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610ac1565b610bb381670de0b6b3a7640000612abe565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a2b918590610c25908690612af4565b61193e565b6005546001600160a01b03163314610c545760405162461bcd60e51b8152600401610ac190612a75565b6001600160a01b038116610cb65760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610ac1565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f905f90a250565b6005546001600160a01b03163314610d295760405162461bcd60e51b8152600401610ac190612a75565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d9c5760405162461bcd60e51b8152600401610ac190612a75565b600e805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610dfa5760405162461bcd60e51b8152600401610ac190612a75565b80610e90577f0000000000000000000000005e65645f76df22f72d962514b865fbf87fa294f76001600160a01b0316826001600160a01b031603610e905760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610ac1565b6001600160a01b03919091165f908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ee45760405162461bcd60e51b8152600401610ac190612a75565b60108390556011829055601281905580610efe8385612af4565b610f089190612af4565b600f819055601e1015610f595760405162461bcd60e51b815260206004820152601960248201527846656573206d7573742062652033302520206f72206c65737360381b6044820152606401610ac1565b505050565b5f6001600160a01b038316610fb55760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610ac1565b600b546001600160a01b03163314610fdf5760405162461bcd60e51b8152600401610ac190612b07565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015611023573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110479190612b48565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015611097573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110bb9190612b5f565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146111315760405162461bcd60e51b8152600401610ac190612a75565b600e54610100900460ff16156111895760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726520656e61626c652074726164696e6700000000000000006044820152606401610ac1565b600e80546201010062ffff0019909116179081905560405161010090910460ff16151581527fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe520899060200160405180910390a1600e54610100900460ff1680156111f25750600d54155b156111fc5743600d555b565b60606004805461099e90612a3d565b6005546001600160a01b031633146112375760405162461bcd60e51b8152600401610ac190612a75565b7f0000000000000000000000005e65645f76df22f72d962514b865fbf87fa294f76001600160a01b0316826001600160a01b0316036112de5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ac1565b6112e882826121cb565b5050565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561136d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac1565b61137a338585840361193e565b5060019392505050565b6005546001600160a01b031633146113ae5760405162461bcd60e51b8152600401610ac190612a75565b6001600160a01b0381166114125760405162461bcd60e51b815260206004820152602560248201527f5f45636f73797374656d4164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610ac1565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f3a687f29cd2e7ea2126d7cf7ad8c5facb38ce4a43cc356eb40f9fb6e628172e5905f90a250565b5f610a2b338484611a61565b6005546001600160a01b031633146114915760405162461bcd60e51b8152600401610ac190612a75565b6001600160a01b0382165f818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146115195760405162461bcd60e51b8152600401610ac190612a75565b601483905560158290556016819055806115338385612af4565b61153d9190612af4565b601381905560631015610f595760405162461bcd60e51b815260206004820152601960248201527846656573206d7573742062652033302520206f72206c65737360381b6044820152606401610ac1565b6005546001600160a01b031633146115b85760405162461bcd60e51b8152600401610ac190612a75565b670de0b6b3a76400006103e86115cd60025490565b6115d8906003612abe565b6115e29190612ad5565b6115ec9190612ad5565b8110156116505760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610ac1565b61166281670de0b6b3a7640000612abe565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610be4565b600b546001600160a01b031633146116c15760405162461bcd60e51b8152600401610ac190612b07565b6116d381670de0b6b3a7640000612abe565b600a5550565b6005546001600160a01b031633146117035760405162461bcd60e51b8152600401610ac190612a75565b670de0b6b3a76400006103e861171860025490565b611723906001612abe565b61172d9190612ad5565b6117379190612ad5565b8110156117995760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610ac1565b6117ab81670de0b6b3a7640000612abe565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610be4565b6005546001600160a01b0316331461180a5760405162461bcd60e51b8152600401610ac190612a75565b6001600160a01b03811661186f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac1565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f906001600160a01b031633146118f65760405162461bcd60e51b8152600401610ac190612b07565b604051339047905f81818185875af1925050503d805f8114611933576040519150601f19603f3d011682016040523d82523d5f602084013e611938565b606091505b50505050565b6001600160a01b0383166119a05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac1565b6001600160a01b038216611a015760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac1565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a875760405162461bcd60e51b8152600401610ac190612b7a565b6001600160a01b038216611aad5760405162461bcd60e51b8152600401610ac190612bbf565b5f8111611afc5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610ac1565b600e5460ff1615611e64576005546001600160a01b03848116911614801590611b3357506005546001600160a01b03838116911614155b8015611b4757506001600160a01b03821615155b8015611b5e57506001600160a01b03821661dead14155b15611e6457600e54610100900460ff16611c4a576001600160a01b0383165f908152601b602052604090205460ff1680611baf57506001600160a01b0382165f908152601b602052604090205460ff165b611bf45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ac1565b6005546001600160a01b03848116911614611c4a5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610ac1565b6001600160a01b0383165f908152601c602052604090205460ff168015611c8957506001600160a01b0382165f908152601b602052604090205460ff16155b8015611c965750600d5443115b15611d0357600654811115611cfe5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610ac1565b611dac565b6001600160a01b0382165f908152601c602052604090205460ff168015611d4257506001600160a01b0383165f908152601b602052604090205460ff16155b15611dac57600754811115611dac5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610ac1565b6001600160a01b0382165f908152601b602052604090205460ff16158015611dec57506001600160a01b0383165f908152601b602052604090205460ff16155b15611e64576008546001600160a01b0383165f90815260208190526040902054611e169083612af4565b1115611e645760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610ac1565b305f90815260208190526040902054600a5481108015908190611e8f5750600e5462010000900460ff165b8015611e9e575060095460ff16155b8015611ec257506001600160a01b0385165f908152601c602052604090205460ff16155b8015611ee657506001600160a01b0385165f908152601a602052604090205460ff16155b8015611f0a57506001600160a01b0384165f908152601a602052604090205460ff16155b15611f2f576009805460ff19166001179055611f24612233565b6009805460ff191690555b6001600160a01b0385165f908152601a602052604090205460019060ff1680611f6f57506001600160a01b0385165f908152601a602052604090205460ff165b15611f7757505f5b5f8082156121b6575f600d54118015611f9d575043600d546001611f9b9190612af4565b115b15611fd9576064611faf87600a612abe565b611fb99190612ad5565b600c54909150611fd49089906001600160a01b031683612433565b61218e565b6001600160a01b0387165f908152601c602052604090205460ff16801561200157505f601354115b156120b6576064601354876120169190612abe565b6120209190612ad5565b9150601354601554836120339190612abe565b61203d9190612ad5565b60185f82825461204d9190612af4565b90915550506013546014546120629084612abe565b61206c9190612ad5565b60175f82825461207c9190612af4565b90915550506013546016546120919084612abe565b61209b9190612ad5565b60195f8282546120ab9190612af4565b9091555061218e9050565b6001600160a01b0388165f908152601c602052604090205460ff1680156120de57505f600f54115b1561218e576064600f54876120f39190612abe565b6120fd9190612ad5565b9150600f54601154836121109190612abe565b61211a9190612ad5565b60185f82825461212a9190612af4565b9091555050600f5460105461213f9084612abe565b6121499190612ad5565b60175f8282546121599190612af4565b9091555050600f5460125461216e9084612abe565b6121789190612ad5565b60195f8282546121889190612af4565b90915550505b811561219f5761219f883084612433565b6121a98183612af4565b6121b39087612c02565b95505b6121c1888888612433565b5050505050505050565b6001600160a01b0382165f908152601c60205260409020805460ff19168215151790556121f88282612586565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b305f9081526020819052604081205490505f6019546017546018546122589190612af4565b6122629190612af4565b905081158061226f575080155b15612278575050565b600a54612286906005612abe565b82111561229e57600a5461229b906005612abe565b91505b5f80600283601854866122b19190612abe565b6122bb9190612ad5565b6122c59190612ad5565b90506122d96122d48286612c02565b6125e8565b601854479081905f906122ee90600290612ad5565b6122f89087612c02565b6017546123059085612abe565b61230f9190612ad5565b90505f60026018546123219190612ad5565b61232b9088612c02565b6019546123389086612abe565b6123429190612ad5565b905061234e8183612af4565b6123589084612c02565b5f601881905560178190556019559250841580159061237657505f83115b1561238557612385858461279e565b600c546040516001600160a01b039091169082905f81818185875af1925050503d805f81146123cf576040519150601f19603f3d011682016040523d82523d5f602084013e6123d4565b606091505b5050600b546040519197506001600160a01b03169047905f81818185875af1925050503d805f8114612421576040519150601f19603f3d011682016040523d82523d5f602084013e612426565b606091505b5050505050505050505050565b6001600160a01b0383166124595760405162461bcd60e51b8152600401610ac190612b7a565b6001600160a01b03821661247f5760405162461bcd60e51b8152600401610ac190612bbf565b6001600160a01b0383165f90815260208190526040902054818110156124f65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ac1565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061252c908490612af4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161257891815260200190565b60405180910390a350505050565b6001600160a01b0382165f818152601b6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061261b5761261b612c15565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612697573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126bb9190612c29565b816001815181106126ce576126ce612c15565b60200260200101906001600160a01b031690816001600160a01b031681525050612719307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461193e565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061276d9085905f90869030904290600401612c44565b5f604051808303815f87803b158015612784575f80fd5b505af1158015612796573d5f803e3d5ffd5b505050505050565b6127c9307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461193e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230855f8061280f6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612875573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061289a9190612cb3565b5050505050565b5f6020808352835180828501525f5b818110156128cc578581018301518582016040015282016128b0565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612900575f80fd5b50565b5f8060408385031215612914575f80fd5b823561291f816128ec565b946020939093013593505050565b5f6020828403121561293d575f80fd5b8135612948816128ec565b9392505050565b5f805f60608486031215612961575f80fd5b833561296c816128ec565b9250602084013561297c816128ec565b929592945050506040919091013590565b5f6020828403121561299d575f80fd5b5035919050565b8015158114612900575f80fd5b5f80604083850312156129c2575f80fd5b82356129cd816128ec565b915060208301356129dd816129a4565b809150509250929050565b5f805f606084860312156129fa575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215612a22575f80fd5b8235612a2d816128ec565b915060208301356129dd816128ec565b600181811c90821680612a5157607f821691505b602082108103612a6f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a2f57610a2f612aaa565b5f82612aef57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a2f57610a2f612aaa565b60208082526021908201527f6f6e6c79205472656173757279416464726573732063616e20776974686472616040820152607760f81b606082015260800190565b5f60208284031215612b58575f80fd5b5051919050565b5f60208284031215612b6f575f80fd5b8151612948816129a4565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a2f57610a2f612aaa565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612c39575f80fd5b8151612948816128ec565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612c925784516001600160a01b031683529383019391830191600101612c6d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612cc5575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212202d4b95ed7dcb54219d8b864babcb12bdadf3b5afdd8628aa58cf5fbddfb471b164736f6c63430008140033

Deployed Bytecode Sourcemap

7998:14958:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3630:169;;;;;;;;;;-1:-1:-1;3630:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3630:169:0;1023:187:1;9120:64:0;;;;;;;;;;-1:-1:-1;9120:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8151:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1649:32:1;;;1631:51;;1619:2;1604:18;8151:43:0;1467:221:1;3037:108:0;;;;;;;;;;-1:-1:-1;3125:12:0;;3037:108;;;1839:25:1;;;1827:2;1812:18;3037:108:0;1693:177:1;8925:33:0;;;;;;;;;;;;;;;;3807:480;;;;;;;;;;-1:-1:-1;3807:480:0;;;;;:::i;:::-;;:::i;11989:269::-;;;;;;;;;;-1:-1:-1;11989:269:0;;;;;:::i;:::-;;:::i;:::-;;2936:93;;;;;;;;;;-1:-1:-1;2936:93:0;;3019:2;2663:36:1;;2651:2;2636:18;2936:93:0;2521:184:1;4295:215:0;;;;;;;;;;-1:-1:-1;4295:215:0;;;;;:::i;:::-;;:::i;8201:38::-;;;;;;;;;;;;;;;8474:33;;;;;;;;;;-1:-1:-1;8474:33:0;;;;;;;;8318:30;;;;;;;;;;-1:-1:-1;8318:30:0;;;;-1:-1:-1;;;;;8318:30:0;;;8628:29;;;;;;;;;;;;;;;;22365:281;;;;;;;;;;-1:-1:-1;22365:281:0;;;;;:::i;:::-;;:::i;8077:28::-;;;;;;;;;;;;;;;;8738;;;;;;;;;;;;;;;;8773:30;;;;;;;;;;;;;;;;8554:31;;;;;;;;;;-1:-1:-1;8554:31:0;;;;;;;;;;;3153:127;;;;;;;;;;-1:-1:-1;3153:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3254:18:0;3227:7;3254:18;;;;;;;;;;;;3153:127;6757:150;;;;;;;;;;;;;:::i;12596:115::-;;;;;;;;;;;;;:::i;12936:267::-;;;;;;;;;;-1:-1:-1;12936:267:0;;;;;:::i;:::-;;:::i;8701:28::-;;;;;;;;;;;;;;;;8355:31;;;;;;;;;;-1:-1:-1;8355:31:0;;;;-1:-1:-1;;;;;8355:31:0;;;18140:377;;;;;;;;;;-1:-1:-1;18140:377:0;;;;;:::i;:::-;;:::i;13711:452::-;;;;;;;;;;-1:-1:-1;13711:452:0;;;;;:::i;:::-;;:::i;8043:27::-;;;;;;;;;;;;;;;;22020:337;;;;;;;;;;;;;:::i;6543:79::-;;;;;;;;;;-1:-1:-1;6608:6:0;;-1:-1:-1;;;;;6608:6:0;6543:79;;2824:104;;;;;;;;;;;;;:::i;20941:246::-;;;;;;;;;;-1:-1:-1;20941:246:0;;;;;:::i;:::-;;:::i;4518:401::-;;;;;;;;;;-1:-1:-1;4518:401:0;;;;;:::i;:::-;;:::i;22654:289::-;;;;;;;;;;-1:-1:-1;22654:289:0;;;;;:::i;:::-;;:::i;3288:175::-;;;;;;;;;;-1:-1:-1;3288:175:0;;;;;:::i;:::-;;:::i;8112:30::-;;;;;;;;;;;;;;;;9342:58;;;;;;;;;;-1:-1:-1;9342:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8848:29;;;;;;;;;;;;;;;;8514:33;;;;;;;;;;-1:-1:-1;8514:33:0;;;;;;;;;;;14472:182;;;;;;;;;;-1:-1:-1;14472:182:0;;;;;:::i;:::-;;:::i;18525:386::-;;;;;;;;;;-1:-1:-1;18525:386:0;;;;;:::i;:::-;;:::i;13211:284::-;;;;;;;;;;-1:-1:-1;13211:284:0;;;;;:::i;:::-;;:::i;13503:198::-;;;;;;;;;;-1:-1:-1;13503:198:0;;;;;:::i;:::-;;:::i;8886:32::-;;;;;;;;;;;;;;;;8594:27;;;;;;;;;;;;;;;;12266:274;;;;;;;;;;-1:-1:-1;12266:274:0;;;;;:::i;:::-;;:::i;3471:151::-;;;;;;;;;;-1:-1:-1;3471:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3587:18:0;;;3560:7;3587:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3471:151;8276:33;;;;;;;;;;;;;;;;8395:37;;;;;;;;;;;;;;;;8664:30;;;;;;;;;;;;;;;;6915:244;;;;;;;;;;-1:-1:-1;6915:244:0;;;;;:::i;:::-;;:::i;8965:31::-;;;;;;;;;;;;;;;;14233:231;;;;;;;;;;;;;:::i;8810:31::-;;;;;;;;;;;;;;;;2716:100;2770:13;2803:5;2796:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:100;:::o;3630:169::-;3713:4;3730:39;1235:10;3753:7;3762:6;3730:8;:39::i;:::-;-1:-1:-1;3787:4:0;3630:169;;;;;:::o;3807:480::-;3947:4;3964:36;3974:6;3982:9;3993:6;3964:9;:36::i;:::-;-1:-1:-1;;;;;4040:19:0;;4013:24;4040:19;;;:11;:19;;;;;;;;1235:10;4040:33;;;;;;;;4092:26;;;;4084:79;;;;-1:-1:-1;;;4084:79:0;;4729:2:1;4084:79:0;;;4711:21:1;4768:2;4748:18;;;4741:30;4807:34;4787:18;;;4780:62;-1:-1:-1;;;4858:18:1;;;4851:38;4906:19;;4084:79:0;;;;;;;;;4191:57;4200:6;1235:10;4241:6;4222:16;:25;4191:8;:57::i;:::-;-1:-1:-1;4275:4:0;;3807:480;-1:-1:-1;;;;3807:480:0:o;11989:269::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;12108:4:::1;12102;12082:13;3125:12:::0;;;3037:108;12082:13:::1;:17;::::0;12098:1:::1;12082:17;:::i;:::-;:24;;;;:::i;:::-;12081:31;;;;:::i;:::-;12071:6;:41;;12063:95;;;::::0;-1:-1:-1;;;12063:95:0;;6026:2:1;12063:95:0::1;::::0;::::1;6008:21:1::0;6065:2;6045:18;;;6038:30;6104:34;6084:18;;;6077:62;-1:-1:-1;;;6155:18:1;;;6148:39;6204:19;;12063:95:0::1;5824:405:1::0;12063:95:0::1;12184:17;:6:::0;12194::::1;12184:17;:::i;:::-;12169:12;:32:::0;;;12217:33:::1;::::0;1839:25:1;;;12217:33:0::1;::::0;1827:2:1;1812:18;12217:33:0::1;;;;;;;;11989:269:::0;:::o;4295:215::-;1235:10;4383:4;4432:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4432:34:0;;;;;;;;;;4383:4;;4400:80;;4423:7;;4432:47;;4469:10;;4432:47;:::i;:::-;4400:8;:80::i;22365:281::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22457:30:0;::::1;22449:79;;;::::0;-1:-1:-1;;;22449:79:0;;6566:2:1;22449:79:0::1;::::0;::::1;6548:21:1::0;6605:2;6585:18;;;6578:30;6644:34;6624:18;;;6617:62;-1:-1:-1;;;6695:18:1;;;6688:34;6739:19;;22449:79:0::1;6364:400:1::0;22449:79:0::1;22539:15;:43:::0;;-1:-1:-1;;;;;;22539:43:0::1;-1:-1:-1::0;;;;;22539:43:0;::::1;::::0;;::::1;::::0;;;22598:40:::1;::::0;::::1;::::0;-1:-1:-1;;22598:40:0::1;22365:281:::0;:::o;6757:150::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;6850:6:::1;::::0;6829:40:::1;::::0;6866:1:::1;::::0;-1:-1:-1;;;;;6850:6:0::1;::::0;6829:40:::1;::::0;6866:1;;6829:40:::1;6880:6;:19:::0;;-1:-1:-1;;;;;;6880:19:0::1;::::0;;6757:150::o;12596:115::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;12650:14:::1;:22:::0;;-1:-1:-1;;12650:22:0::1;::::0;;12688:15:::1;::::0;::::1;::::0;12667:5:::1;::::0;12688:15:::1;12596:115::o:0;12936:267::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;13032:4:::1;13028:111;;13070:13;-1:-1:-1::0;;;;;13060:23:0::1;:6;-1:-1:-1::0;;;;;13060:23:0::1;::::0;13052:75:::1;;;::::0;-1:-1:-1;;;13052:75:0;;6971:2:1;13052:75:0::1;::::0;::::1;6953:21:1::0;7010:2;6990:18;;;6983:30;7049:34;7029:18;;;7022:62;-1:-1:-1;;;7100:18:1;;;7093:37;7147:19;;13052:75:0::1;6769:403:1::0;13052:75:0::1;-1:-1:-1::0;;;;;13149:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;13149:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12936:267::o;18140:377::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;18259:14:::1;:29:::0;;;18299:15:::1;:31:::0;;;18341:13:::1;:27:::0;;;18357:11;18394:32:::1;18317:13:::0;18276:12;18394:32:::1;:::i;:::-;:48;;;;:::i;:::-;18379:12;:63:::0;;;18477:2:::1;-1:-1:-1::0;18461:18:0::1;18453:56;;;::::0;-1:-1:-1;;;18453:56:0;;7379:2:1;18453:56:0::1;::::0;::::1;7361:21:1::0;7418:2;7398:18;;;7391:30;-1:-1:-1;;;7437:18:1;;;7430:55;7502:18;;18453:56:0::1;7177:349:1::0;18453:56:0::1;18140:377:::0;;;:::o;13711:452::-;13786:10;-1:-1:-1;;;;;13817:20:0;;13809:59;;;;-1:-1:-1;;;13809:59:0;;7733:2:1;13809:59:0;;;7715:21:1;7772:2;7752:18;;;7745:30;7811:28;7791:18;;;7784:56;7857:18;;13809:59:0;7531:350:1;13809:59:0;13899:15;;-1:-1:-1;;;;;13899:15:0;13887:10;:27;13879:72;;;;-1:-1:-1;;;13879:72:0;;;;;;;:::i;:::-;13989:39;;-1:-1:-1;;;13989:39:0;;14022:4;13989:39;;;1631:51:1;13962:24:0;;-1:-1:-1;;;;;13989:24:0;;;;;1604:18:1;;13989:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14047:46;;-1:-1:-1;;;14047:46:0;;-1:-1:-1;;;;;8669:32:1;;;14047:46:0;;;8651:51:1;8718:18;;;8711:34;;;13962:66:0;;-1:-1:-1;14047:23:0;;;;;;8624:18:1;;14047:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14109;;;-1:-1:-1;;;;;8669:32:1;;8651:51;;8733:2;8718:18;;8711:34;;;14039:54:0;;-1:-1:-1;14109:46:0;;8624:18:1;14109:46:0;;;;;;;13798:365;13711:452;;;;:::o;22020:337::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;22084:13:::1;::::0;::::1;::::0;::::1;;;22083:14;22075:51;;;::::0;-1:-1:-1;;;22075:51:0;;9208:2:1;22075:51:0::1;::::0;::::1;9190:21:1::0;9247:2;9227:18;;;9220:30;9286:26;9266:18;;;9259:54;9330:18;;22075:51:0::1;9006:348:1::0;22075:51:0::1;22137:13;:20:::0;;22168:18;-1:-1:-1;;22168:18:0;;;;;;;;22202:29:::1;::::0;22137:20:::1;22217:13:::0;;::::1;22137:20;22217:13;1188:14:1::0;1181:22;1163:41;;22202:29:0::1;::::0;1151:2:1;1136:18;22202:29:0::1;;;;;;;22248:13;::::0;::::1;::::0;::::1;;;:40:::0;::::1;;;-1:-1:-1::0;22265:18:0::1;::::0;:23;22248:40:::1;22244:106;;;22326:12;22305:18;:33:::0;22244:106:::1;22020:337::o:0;2824:104::-;2880:13;2913:7;2906:14;;;;;:::i;20941:246::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;21050:13:::1;-1:-1:-1::0;;;;;21042:21:0::1;:4;-1:-1:-1::0;;;;;21042:21:0::1;::::0;21034:91:::1;;;::::0;-1:-1:-1;;;21034:91:0;;9561:2:1;21034:91:0::1;::::0;::::1;9543:21:1::0;9600:2;9580:18;;;9573:30;9639:34;9619:18;;;9612:62;9710:27;9690:18;;;9683:55;9755:19;;21034:91:0::1;9359:421:1::0;21034:91:0::1;21138:41;21167:4;21173:5;21138:28;:41::i;:::-;20941:246:::0;;:::o;4518:401::-;1235:10;4611:4;4655:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4655:34:0;;;;;;;;;;4708:35;;;;4700:85;;;;-1:-1:-1;;;4700:85:0;;9987:2:1;4700:85:0;;;9969:21:1;10026:2;10006:18;;;9999:30;10065:34;10045:18;;;10038:62;-1:-1:-1;;;10116:18:1;;;10109:35;10161:19;;4700:85:0;9785:401:1;4700:85:0;4813:67;1235:10;4836:7;4864:15;4845:16;:34;4813:8;:67::i;:::-;-1:-1:-1;4907:4:0;;4518:401;-1:-1:-1;;;4518:401:0:o;22654:289::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22748:31:0;::::1;22740:81;;;::::0;-1:-1:-1;;;22740:81:0;;10393:2:1;22740:81:0::1;::::0;::::1;10375:21:1::0;10432:2;10412:18;;;10405:30;10471:34;10451:18;;;10444:62;-1:-1:-1;;;10522:18:1;;;10515:35;10567:19;;22740:81:0::1;10191:401:1::0;22740:81:0::1;22832:16;:45:::0;;-1:-1:-1;;;;;;22832:45:0::1;-1:-1:-1::0;;;;;22832:45:0;::::1;::::0;;::::1;::::0;;;22893:42:::1;::::0;::::1;::::0;-1:-1:-1;;22893:42:0::1;22654:289:::0;:::o;3288:175::-;3374:4;3391:42;1235:10;3415:9;3426:6;3391:9;:42::i;14472:182::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14557:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;14557:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14612:34;;1163:41:1;;;14612:34:0::1;::::0;1136:18:1;14612:34:0::1;;;;;;;14472:182:::0;;:::o;18525:386::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;18645:15:::1;:30:::0;;;18686:16:::1;:32:::0;;;18729:14:::1;:28:::0;;;18746:11;18784:34:::1;18705:13:::0;18663:12;18784:34:::1;:::i;:::-;:51;;;;:::i;:::-;18768:13;:67:::0;;;18871:2:::1;-1:-1:-1::0;18854:19:0::1;18846:57;;;::::0;-1:-1:-1;;;18846:57:0;;7379:2:1;18846:57:0::1;::::0;::::1;7361:21:1::0;7418:2;7398:18;;;7391:30;-1:-1:-1;;;7437:18:1;;;7430:55;7502:18;;18846:57:0::1;7177:349:1::0;13211:284:0;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;13333:4:::1;13327;13307:13;3125:12:::0;;;3037:108;13307:13:::1;:17;::::0;13323:1:::1;13307:17;:::i;:::-;:24;;;;:::i;:::-;13306:31;;;;:::i;:::-;13296:6;:41;;13288:98;;;::::0;-1:-1:-1;;;13288:98:0;;10799:2:1;13288:98:0::1;::::0;::::1;10781:21:1::0;10838:2;10818:18;;;10811:30;10877:34;10857:18;;;10850:62;-1:-1:-1;;;10928:18:1;;;10921:42;10980:19;;13288:98:0::1;10597:408:1::0;13288:98:0::1;13415:17;:6:::0;13425::::1;13415:17;:::i;:::-;13397:15;:35:::0;;;13448:39:::1;::::0;1839:25:1;;;13448:39:0::1;::::0;1827:2:1;1812:18;13448:39:0::1;1693:177:1::0;13503:198:0;13590:15;;-1:-1:-1;;;;;13590:15:0;13578:10;:27;13570:72;;;;-1:-1:-1;;;13570:72:0;;;;;;;:::i;:::-;13674:19;:9;13686:6;13674:19;:::i;:::-;13653:18;:40;-1:-1:-1;13503:198:0:o;12266:274::-;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;12386:4:::1;12380;12360:13;3125:12:::0;;;3037:108;12360:13:::1;:17;::::0;12376:1:::1;12360:17;:::i;:::-;:24;;;;:::i;:::-;12359:31;;;;:::i;:::-;12349:6;:41;;12341:96;;;::::0;-1:-1:-1;;;12341:96:0;;11212:2:1;12341:96:0::1;::::0;::::1;11194:21:1::0;11251:2;11231:18;;;11224:30;11290:34;11270:18;;;11263:62;-1:-1:-1;;;11341:18:1;;;11334:40;11391:19;;12341:96:0::1;11010:406:1::0;12341:96:0::1;12464:17;:6:::0;12474::::1;12464:17;:::i;:::-;12448:13;:33:::0;;;12497:35:::1;::::0;1839:25:1;;;12497:35:0::1;::::0;1827:2:1;1812:18;12497:35:0::1;1693:177:1::0;6915:244:0;6670:6;;-1:-1:-1;;;;;6670:6:0;1235:10;6670:22;6662:67;;;;-1:-1:-1;;;6662:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7004:22:0;::::1;6996:73;;;::::0;-1:-1:-1;;;6996:73:0;;11623:2:1;6996:73:0::1;::::0;::::1;11605:21:1::0;11662:2;11642:18;;;11635:30;11701:34;11681:18;;;11674:62;-1:-1:-1;;;11752:18:1;;;11745:36;11798:19;;6996:73:0::1;11421:402:1::0;6996:73:0::1;7106:6;::::0;7085:38:::1;::::0;-1:-1:-1;;;;;7085:38:0;;::::1;::::0;7106:6:::1;::::0;7085:38:::1;::::0;7106:6:::1;::::0;7085:38:::1;7134:6;:17:::0;;-1:-1:-1;;;;;;7134:17:0::1;-1:-1:-1::0;;;;;7134:17:0;;;::::1;::::0;;;::::1;::::0;;6915:244::o;14233:231::-;14322:15;;14279:12;;-1:-1:-1;;;;;14322:15:0;14310:10;:27;14302:72;;;;-1:-1:-1;;;14302:72:0;;;;;;;:::i;:::-;14398:58;;14406:10;;14430:21;;14398:58;;;;14430:21;14406:10;14398:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;14233:231:0:o;5836:380::-;-1:-1:-1;;;;;5972:19:0;;5964:68;;;;-1:-1:-1;;;5964:68:0;;12240:2:1;5964:68:0;;;12222:21:1;12279:2;12259:18;;;12252:30;12318:34;12298:18;;;12291:62;-1:-1:-1;;;12369:18:1;;;12362:34;12413:19;;5964:68:0;12038:400:1;5964:68:0;-1:-1:-1;;;;;6051:21:0;;6043:68;;;;-1:-1:-1;;;6043:68:0;;12645:2:1;6043:68:0;;;12627:21:1;12684:2;12664:18;;;12657:30;12723:34;12703:18;;;12696:62;-1:-1:-1;;;12774:18:1;;;12767:32;12816:19;;6043:68:0;12443:398:1;6043:68:0;-1:-1:-1;;;;;6124:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6176:32;;1839:25:1;;;6176:32:0;;1812:18:1;6176:32:0;;;;;;;5836:380;;;:::o;14664:3468::-;-1:-1:-1;;;;;14764:18:0;;14756:68;;;;-1:-1:-1;;;14756:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14843:16:0;;14835:64;;;;-1:-1:-1;;;14835:64:0;;;;;;;:::i;:::-;14927:1;14918:6;:10;14910:52;;;;-1:-1:-1;;;14910:52:0;;13858:2:1;14910:52:0;;;13840:21:1;13897:2;13877:18;;;13870:30;13936:31;13916:18;;;13909:59;13985:18;;14910:52:0;13656:353:1;14910:52:0;14980:14;;;;14977:1153;;;6608:6;;-1:-1:-1;;;;;15014:15:0;;;6608:6;;15014:15;;;;:32;;-1:-1:-1;6608:6:0;;-1:-1:-1;;;;;15033:13:0;;;6608:6;;15033:13;;15014:32;:52;;;;-1:-1:-1;;;;;;15050:16:0;;;;15014:52;:77;;;;-1:-1:-1;;;;;;15070:21:0;;15084:6;15070:21;;15014:77;15010:1109;;;15115:13;;;;;;;15111:245;;-1:-1:-1;;;;;15160:37:0;;;;;;:31;:37;;;;;;;;;:76;;-1:-1:-1;;;;;;15201:35:0;;;;;;:31;:35;;;;;;;;15160:76;15152:111;;;;-1:-1:-1;;;15152:111:0;;14216:2:1;15152:111:0;;;14198:21:1;14255:2;14235:18;;;14228:30;-1:-1:-1;;;14274:18:1;;;14267:52;14336:18;;15152:111:0;14014:346:1;15152:111:0;6608:6;;-1:-1:-1;;;;;15294:15:0;;;6608:6;;15294:15;15286:50;;;;-1:-1:-1;;;15286:50:0;;14567:2:1;15286:50:0;;;14549:21:1;14606:2;14586:18;;;14579:30;-1:-1:-1;;;14625:18:1;;;14618:52;14687:18;;15286:50:0;14365:346:1;15286:50:0;-1:-1:-1;;;;;15406:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;15442:35:0;;;;;;:31;:35;;;;;;;;15441:36;15406:71;:106;;;;;15494:18;;15481:12;:31;15406:106;15402:480;;;15555:12;;15545:6;:22;;15537:75;;;;-1:-1:-1;;;15537:75:0;;14918:2:1;15537:75:0;;;14900:21:1;14957:2;14937:18;;;14930:30;14996:34;14976:18;;;14969:62;-1:-1:-1;;;15047:18:1;;;15040:38;15095:19;;15537:75:0;14716:404:1;15537:75:0;15402:480;;;-1:-1:-1;;;;;15688:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;15722:37:0;;;;;;:31;:37;;;;;;;;15721:38;15688:71;15684:198;;;15802:13;;15792:6;:23;;15784:78;;;;-1:-1:-1;;;15784:78:0;;15327:2:1;15784:78:0;;;15309:21:1;15366:2;15346:18;;;15339:30;15405:34;15385:18;;;15378:62;-1:-1:-1;;;15456:18:1;;;15449:40;15506:19;;15784:78:0;15125:406:1;15784:78:0;-1:-1:-1;;;;;15905:35:0;;;;;;:31;:35;;;;;;;;15904:36;:78;;;;-1:-1:-1;;;;;;15945:37:0;;;;;;:31;:37;;;;;;;;15944:38;15904:78;15900:204;;;16040:15;;-1:-1:-1;;;;;3254:18:0;;3227:7;3254:18;;;;;;;;;;;16014:22;;:6;:22;:::i;:::-;:41;;16006:78;;;;-1:-1:-1;;;16006:78:0;;15738:2:1;16006:78:0;;;15720:21:1;15777:2;15757:18;;;15750:30;15816:26;15796:18;;;15789:54;15860:18;;16006:78:0;15536:348:1;16006:78:0;16191:4;16142:28;3254:18;;;;;;;;;;;16249;;16225:42;;;;;;;16283:22;;-1:-1:-1;16294:11:0;;;;;;;16283:22;:35;;;;-1:-1:-1;16310:8:0;;;;16309:9;16283:35;:71;;;;-1:-1:-1;;;;;;16323:31:0;;;;;;:25;:31;;;;;;;;16322:32;16283:71;:101;;;;-1:-1:-1;;;;;;16359:25:0;;;;;;:19;:25;;;;;;;;16358:26;16283:101;:129;;;;-1:-1:-1;;;;;;16389:23:0;;;;;;:19;:23;;;;;;;;16388:24;16283:129;16280:236;;;16429:8;:15;;-1:-1:-1;;16429:15:0;16440:4;16429:15;;;16461:10;:8;:10::i;:::-;16488:8;:16;;-1:-1:-1;;16488:16:0;;;16280:236;-1:-1:-1;;;;;16646:25:0;;16528:12;16646:25;;;:19;:25;;;;;;16543:4;;16646:25;;;:52;;-1:-1:-1;;;;;;16675:23:0;;;;;;:19;:23;;;;;;;;16646:52;16643:99;;;-1:-1:-1;16725:5:0;16643:99;16754:12;16781:21;16884:7;16881:1198;;;16936:1;16917:18;;:20;:63;;;;;16968:12;16942:18;;16963:1;16942:22;;;;:::i;:::-;16941:39;16917:63;16914:1004;;;17030:3;17016:11;:6;17025:2;17016:11;:::i;:::-;:17;;;;:::i;:::-;17074:16;;17000:33;;-1:-1:-1;17052:54:0;;17068:4;;-1:-1:-1;;;;;17074:16:0;17000:33;17052:15;:54::i;:::-;16914:1004;;;-1:-1:-1;;;;;17169:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;17218:1;17202:13;;:17;17169:50;17165:753;;;17270:3;17255:13;;17246:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;17239:34;;17340:13;;17321:16;;17314:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17292:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17418:13:0;;17400:15;;17393:22;;:4;:22;:::i;:::-;:38;;;;:::i;:::-;17372:17;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;17494:13:0;;17477:14;;17470:21;;:4;:21;:::i;:::-;:37;;;;:::i;:::-;17450:16;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;17165:753:0;;-1:-1:-1;17165:753:0;;-1:-1:-1;;;;;17568:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;17618:1;17603:12;;:16;17568:51;17565:353;;;17671:3;17656:12;;17647:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17640:34;;17740:12;;17722:15;;17715:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17693:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;17816:12:0;;17799:14;;17792:21;;:4;:21;:::i;:::-;:36;;;;:::i;:::-;17771:17;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;17890:12:0;;17874:13;;17867:20;;:4;:20;:::i;:::-;:35;;;;:::i;:::-;17847:16;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;17565:353:0;17937:8;;17934:89;;17965:42;17981:4;17995;18002;17965:15;:42::i;:::-;18047:20;18054:13;18047:4;:20;:::i;:::-;18037:30;;;;:::i;:::-;;;16881:1198;18091:33;18107:4;18113:2;18117:6;18091:15;:33::i;:::-;14743:3389;;;;;14664:3468;;;:::o;21195:240::-;-1:-1:-1;;;;;21278:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;21278:39:0;;;;;;;21330;21278:31;:39;21330:26;:39::i;:::-;21387:40;;;;;;-1:-1:-1;;;;;21387:40:0;;;;;;;;21195:240;;:::o;18919:1415::-;19002:4;18958:23;3254:18;;;;;;;;;;;18958:50;;19019:25;19088:16;;19068:17;;19047:18;;:38;;;;:::i;:::-;:57;;;;:::i;:::-;19019:85;-1:-1:-1;19120:20:0;;;:46;;-1:-1:-1;19144:22:0;;19120:46;19117:60;;;19169:7;;18919:1415::o;19117:60::-;19210:18;;:22;;19231:1;19210:22;:::i;:::-;19192:15;:40;19189:111;;;19266:18;;:22;;19287:1;19266:22;:::i;:::-;19248:40;;19189:111;19312:12;19386:23;19471:1;19451:17;19430:18;;19412:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;19386:86;-1:-1:-1;19485:51:0;19502:33;19386:86;19502:15;:33;:::i;:::-;19485:16;:51::i;:::-;19731:18;;19570:21;;;;19549:18;;19731:20;;19750:1;;19731:20;:::i;:::-;19710:42;;:17;:42;:::i;:::-;19689:17;;19676:30;;:10;:30;:::i;:::-;:77;;;;:::i;:::-;19651:102;;19764:21;19861:1;19842:18;;:20;;;;:::i;:::-;19821:42;;:17;:42;:::i;:::-;19801:16;;19788:29;;:10;:29;:::i;:::-;:76;;;;:::i;:::-;19764:100;-1:-1:-1;19896:30:0;19764:100;19896:14;:30;:::i;:::-;19877:49;;;;:::i;:::-;19960:1;19939:18;:22;;;19972:17;:21;;;20004:16;:20;19877:49;-1:-1:-1;20040:19:0;;;;;:42;;;20081:1;20063:15;:19;20040:42;20037:119;;;20098:46;20111:15;20128;20098:12;:46::i;:::-;20189:16;;20181:56;;-1:-1:-1;;;;;20189:16:0;;;;20219:13;;20181:56;;;;20219:13;20189:16;20181:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20271:15:0;;20263:63;;20168:69;;-1:-1:-1;;;;;;20271:15:0;;20300:21;;20263:63;;;;20300:21;20271:15;20263:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18919:1415:0:o;4927:602::-;-1:-1:-1;;;;;5067:20:0;;5059:70;;;;-1:-1:-1;;;5059:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5148:23:0;;5140:71;;;;-1:-1:-1;;;5140:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5248:17:0;;5224:21;5248:17;;;;;;;;;;;5284:23;;;;5276:74;;;;-1:-1:-1;;;5276:74:0;;16224:2:1;5276:74:0;;;16206:21:1;16263:2;16243:18;;;16236:30;16302:34;16282:18;;;16275:62;-1:-1:-1;;;16353:18:1;;;16346:36;16399:19;;5276:74:0;16022:402:1;5276:74:0;-1:-1:-1;;;;;5378:17:0;;;:9;:17;;;;;;;;;;;5398:22;;;5378:42;;5438:20;;;;;;;;:30;;5414:6;;5378:9;5438:30;;5414:6;;5438:30;:::i;:::-;;;;;;;;5503:9;-1:-1:-1;;;;;5486:35:0;5495:6;-1:-1:-1;;;;;5486:35:0;;5514:6;5486:35;;;;1839:25:1;;1827:2;1812:18;;1693:177;5486:35:0;;;;;;;;5048:481;4927:602;;;:::o;12721:207::-;-1:-1:-1;;;;;12809:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;12809:52:0;;;;;;;;;;12877:43;;16597:51:1;;;16664:18;;;16657:50;12877:43:0;;16570:18:1;12877:43:0;;;;;;;12721:207;;:::o;20342:591::-;20494:16;;;20508:1;20494:16;;;;;;;;20470:21;;20494:16;;;;;;;;;;-1:-1:-1;20494:16:0;20470:40;;20539:4;20521;20526:1;20521:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20521:23:0;;;-1:-1:-1;;;;;20521:23:0;;;;;20565:15;-1:-1:-1;;;;;20565:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20555:4;20560:1;20555:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;20555:32:0;;;-1:-1:-1;;;;;20555:32:0;;;;;20600:62;20617:4;20632:15;20650:11;20600:8;:62::i;:::-;20701:224;;-1:-1:-1;;;20701:224:0;;-1:-1:-1;;;;;20701:15:0;:66;;;;:224;;20782:11;;20808:1;;20852:4;;20879;;20899:15;;20701:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20397:536;20342:591;:::o;21443:522::-;21591:62;21608:4;21623:15;21641:11;21591:8;:62::i;:::-;21696:15;-1:-1:-1;;;;;21696:31:0;;21735:9;21768:4;21788:11;21814:1;21857;21908:7;6608:6;;-1:-1:-1;;;;;6608:6:0;;6543:79;21908:7;21696:261;;;;;;-1:-1:-1;;;;;;21696:261:0;;;-1:-1:-1;;;;;18582:15:1;;;21696:261:0;;;18564:34:1;18614:18;;;18607:34;;;;18657:18;;;18650:34;;;;18700:18;;;18693:34;18764:15;;;18743:19;;;18736:44;21931:15:0;18796:19:1;;;18789:35;18498:19;;21696:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21443:522;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;:::-;1451:5;1215:247;-1:-1:-1;;;1215:247:1:o;1875:456::-;1952:6;1960;1968;2021:2;2009:9;2000:7;1996:23;1992:32;1989:52;;;2037:1;2034;2027:12;1989:52;2076:9;2063:23;2095:31;2120:5;2095:31;:::i;:::-;2145:5;-1:-1:-1;2202:2:1;2187:18;;2174:32;2215:33;2174:32;2215:33;:::i;:::-;1875:456;;2267:7;;-1:-1:-1;;;2321:2:1;2306:18;;;;2293:32;;1875:456::o;2336:180::-;2395:6;2448:2;2436:9;2427:7;2423:23;2419:32;2416:52;;;2464:1;2461;2454:12;2416:52;-1:-1:-1;2487:23:1;;2336:180;-1:-1:-1;2336:180:1:o;2918:118::-;3004:5;2997:13;2990:21;2983:5;2980:32;2970:60;;3026:1;3023;3016:12;3041:382;3106:6;3114;3167:2;3155:9;3146:7;3142:23;3138:32;3135:52;;;3183:1;3180;3173:12;3135:52;3222:9;3209:23;3241:31;3266:5;3241:31;:::i;:::-;3291:5;-1:-1:-1;3348:2:1;3333:18;;3320:32;3361:30;3320:32;3361:30;:::i;:::-;3410:7;3400:17;;;3041:382;;;;;:::o;3428:316::-;3505:6;3513;3521;3574:2;3562:9;3553:7;3549:23;3545:32;3542:52;;;3590:1;3587;3580:12;3542:52;-1:-1:-1;;3613:23:1;;;3683:2;3668:18;;3655:32;;-1:-1:-1;3734:2:1;3719:18;;;3706:32;;3428:316;-1:-1:-1;3428:316:1:o;3749:388::-;3817:6;3825;3878:2;3866:9;3857:7;3853:23;3849:32;3846:52;;;3894:1;3891;3884:12;3846:52;3933:9;3920:23;3952:31;3977:5;3952:31;:::i;:::-;4002:5;-1:-1:-1;4059:2:1;4044:18;;4031:32;4072:33;4031:32;4072:33;:::i;4142:380::-;4221:1;4217:12;;;;4264;;;4285:61;;4339:4;4331:6;4327:17;4317:27;;4285:61;4392:2;4384:6;4381:14;4361:18;4358:38;4355:161;;4438:10;4433:3;4429:20;4426:1;4419:31;4473:4;4470:1;4463:15;4501:4;4498:1;4491:15;4355:161;;4142:380;;;:::o;4936:356::-;5138:2;5120:21;;;5157:18;;;5150:30;5216:34;5211:2;5196:18;;5189:62;5283:2;5268:18;;4936:356::o;5297:127::-;5358:10;5353:3;5349:20;5346:1;5339:31;5389:4;5386:1;5379:15;5413:4;5410:1;5403:15;5429:168;5502:9;;;5533;;5550:15;;;5544:22;;5530:37;5520:71;;5571:18;;:::i;5602:217::-;5642:1;5668;5658:132;;5712:10;5707:3;5703:20;5700:1;5693:31;5747:4;5744:1;5737:15;5775:4;5772:1;5765:15;5658:132;-1:-1:-1;5804:9:1;;5602:217::o;6234:125::-;6299:9;;;6320:10;;;6317:36;;;6333:18;;:::i;7886:397::-;8088:2;8070:21;;;8127:2;8107:18;;;8100:30;8166:34;8161:2;8146:18;;8139:62;-1:-1:-1;;;8232:2:1;8217:18;;8210:31;8273:3;8258:19;;7886:397::o;8288:184::-;8358:6;8411:2;8399:9;8390:7;8386:23;8382:32;8379:52;;;8427:1;8424;8417:12;8379:52;-1:-1:-1;8450:16:1;;8288:184;-1:-1:-1;8288:184:1:o;8756:245::-;8823:6;8876:2;8864:9;8855:7;8851:23;8847:32;8844:52;;;8892:1;8889;8882:12;8844:52;8924:9;8918:16;8943:28;8965:5;8943:28;:::i;12846:401::-;13048:2;13030:21;;;13087:2;13067:18;;;13060:30;13126:34;13121:2;13106:18;;13099:62;-1:-1:-1;;;13192:2:1;13177:18;;13170:35;13237:3;13222:19;;12846:401::o;13252:399::-;13454:2;13436:21;;;13493:2;13473:18;;;13466:30;13532:34;13527:2;13512:18;;13505:62;-1:-1:-1;;;13598:2:1;13583:18;;13576:33;13641:3;13626:19;;13252:399::o;15889:128::-;15956:9;;;15977:11;;;15974:37;;;15991:18;;:::i;16850:127::-;16911:10;16906:3;16902:20;16899:1;16892:31;16942:4;16939:1;16932:15;16966:4;16963:1;16956:15;16982:251;17052:6;17105:2;17093:9;17084:7;17080:23;17076:32;17073:52;;;17121:1;17118;17111:12;17073:52;17153:9;17147:16;17172:31;17197:5;17172:31;:::i;17238:980::-;17500:4;17548:3;17537:9;17533:19;17579:6;17568:9;17561:25;17605:2;17643:6;17638:2;17627:9;17623:18;17616:34;17686:3;17681:2;17670:9;17666:18;17659:31;17710:6;17745;17739:13;17776:6;17768;17761:22;17814:3;17803:9;17799:19;17792:26;;17853:2;17845:6;17841:15;17827:29;;17874:1;17884:195;17898:6;17895:1;17892:13;17884:195;;;17963:13;;-1:-1:-1;;;;;17959:39:1;17947:52;;18054:15;;;;18019:12;;;;17995:1;17913:9;17884:195;;;-1:-1:-1;;;;;;;18135:32:1;;;;18130:2;18115:18;;18108:60;-1:-1:-1;;;18199:3:1;18184:19;18177:35;18096:3;17238:980;-1:-1:-1;;;17238:980:1:o;18835:306::-;18923:6;18931;18939;18992:2;18980:9;18971:7;18967:23;18963:32;18960:52;;;19008:1;19005;18998:12;18960:52;19037:9;19031:16;19021:26;;19087:2;19076:9;19072:18;19066:25;19056:35;;19131:2;19120:9;19116:18;19110:25;19100:35;;18835:306;;;;;:::o

Swarm Source

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