ETH Price: $3,386.39 (-1.49%)
Gas: 2 Gwei

Token

BlockJack (JACK)
 

Overview

Max Total Supply

100,000,000 JACK

Holders

423

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
83,222.486343792096979129 JACK

Value
$0.00
0x9ecad9d9d3ed0938cc3b84732d3ffa8ece3a87c8
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:
JACK

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-25
*/

// SPDX-License-Identifier: MIT

/*
The premier BlackJack experience, built right into Telegram
https://t.me/BlockJackETH
https://t.me/BlockjackETHBot
*/

pragma solidity 0.8.10;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}

contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    uint8 private _decimals; 
    string private _name;
    string private _symbol;

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), 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);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract JACK is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private swapping;

    address public developmentReceiver;
    address public poolReceiver; 
    address public lotteryReceiver;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

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

    uint256 public buyTotalFees;
    uint256 public buyLiquidityFee;
    uint256 public buyPoolFee;
    uint256 public buyDevelopmentFee; 
    uint256 public buyLotteryFee; 

    uint256 public sellTotalFees;
    uint256 public sellLiquidityFee;
    uint256 public sellPoolFee;
    uint256 public sellDevelopmentFee; 
    uint256 public sellLotteryFee; 

	uint256 public liquidityTokens;
    uint256 public poolTokens;
    uint256 public developmentTokens;
    uint256 public lotteryTokens; 

    uint8 private DECIMALS = 18;

    // exclude 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 ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    constructor() ERC20("BlockJack", "JACK", DECIMALS) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        ); 

        poolReceiver = address(0x2D8fB47798B3c5F030267169912C69F338691e9a);
        developmentReceiver = address(0xE6Da9FE282f512A8466D99813d8Df0F7072b71c2);  
        lotteryReceiver = address(0xE6Da9FE282f512A8466D99813d8Df0F7072b71c2); 

        uint256 _buyLiquidityFee = 0;
        uint256 _buyPoolFee = 5;
        uint256 _buyDevelopmentFee = 5;
        uint256 _buyLotteryFee = 0; 

        uint256 _sellLiquidityFee = 0;
        uint256 _sellPoolFee = 10;
        uint256 _sellDevelopmentFee = 10;
        uint256 _sellLotteryFee = 0; 

        uint256 totalSupply = 1 * 1e8 * 10**DECIMALS;

        maxTransactionAmount = totalSupply * 1 / 100;
        maxWallet = totalSupply * 1 / 100;

        swapTokensAtAmount = (totalSupply * 10) / 10000; 

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

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

        buyLiquidityFee = _buyLiquidityFee;
        buyPoolFee = _buyPoolFee;
        buyDevelopmentFee = _buyDevelopmentFee;
        buyLotteryFee = _buyLotteryFee;
        buyTotalFees = buyLiquidityFee + buyPoolFee + buyDevelopmentFee + buyLotteryFee;

        sellLiquidityFee = _sellLiquidityFee;
        sellPoolFee = _sellPoolFee;
        sellDevelopmentFee = _sellDevelopmentFee; 
        sellLotteryFee = _sellLotteryFee;
        sellTotalFees = sellLiquidityFee + sellPoolFee + sellDevelopmentFee + sellLotteryFee;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function draw() external onlyOwner {
        tradingActive = true;
        swapBack = true;
    }

    function setFees(
        uint8 _buyLiquidityFee,
        uint8 _buyPoolFee,
        uint8 _buyDevelopmentFee,
        uint8 _sellLiquidityFee,
        uint8 _sellPoolFee,
        uint8 _sellDevelopmentFee,
        uint8 _buyLotteryFee,
        uint8 _sellLotteryFee
        ) external onlyOwner {
        buyLiquidityFee = _buyLiquidityFee;
        buyPoolFee = _buyPoolFee;
        buyDevelopmentFee = _buyDevelopmentFee;
        buyLotteryFee = _buyLotteryFee;
        buyTotalFees = buyLiquidityFee + buyPoolFee + buyDevelopmentFee + buyLotteryFee;

        sellLiquidityFee = _sellLiquidityFee;
        sellPoolFee = _sellPoolFee;
        sellDevelopmentFee = _sellDevelopmentFee; 
        sellLotteryFee = _sellLotteryFee;
        sellTotalFees = sellLiquidityFee + sellPoolFee + sellDevelopmentFee + sellLotteryFee;
    } 

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function changePoolReceiver(address addr) external onlyOwner {
        poolReceiver = addr; 
    }

    function adjustLimits(uint32 newMaxTx, uint32 newMaxWallet) external onlyOwner {
        maxTransactionAmount = newMaxTx; 
        maxWallet = newMaxWallet; 
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }
	
    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapBack(bool on) external onlyOwner {
        swapBack = on;
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            doSwapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees / 100;
                liquidityTokens += (fees * sellLiquidityFee) / sellTotalFees;
                poolTokens += (fees * sellPoolFee) / sellTotalFees;  
                developmentTokens += (fees * sellDevelopmentFee) / sellTotalFees;  
                lotteryTokens += (fees * sellLotteryFee) / sellTotalFees;              
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                liquidityTokens += (fees * buyLiquidityFee) / buyTotalFees;
                poolTokens += (fees * buyPoolFee) / buyTotalFees;
                developmentTokens += (fees * buyDevelopmentFee) / buyTotalFees; 
                lotteryTokens += (fees * buyLotteryFee) / sellTotalFees; 
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

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

    function swapTokens(uint256 tokenAmount) private {
        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, 
            path,
            address(this),
            block.timestamp
        );
    }

    function openTrading() external onlyOwner() {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), ( 1 * 1e8 * 1e18));
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingActive = true;
        swapBack = true;
    }
    

    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
            developmentReceiver,
            block.timestamp
        );
    }

    function doSwapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = liquidityTokens + poolTokens + developmentTokens + lotteryTokens;
        bool success;

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokens(amountToSwapForETH);

        uint256 ethBalance = address(this).balance - initialETHBalance;
	
        uint256 ethPool = ethBalance * poolTokens / totalTokensToSwap;
        uint256 ethDevelopment = ethBalance * developmentTokens / totalTokensToSwap;
        uint256 ethLottery = ethBalance * lotteryTokens / totalTokensToSwap;

        uint256 ethLiquidity = ethBalance - ethPool - ethDevelopment - ethLottery;

        liquidityTokens = 0;
        poolTokens = 0;
        developmentTokens = 0; 
        lotteryTokens = 0; 

        if (tokensForLiquidity > 0 && ethLiquidity > 0) {
            addLiquidity(tokensForLiquidity, ethLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethLiquidity,
                tokensForLiquidity
            );
        }
        //there will be no leftover eth in the contract 
        (success, ) = address(poolReceiver).call{value: ethPool}("");
        (success, ) = address(lotteryReceiver).call{value: ethPool}("");

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

}

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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"newMaxTx","type":"uint32"},{"internalType":"uint32","name":"newMaxWallet","type":"uint32"}],"name":"adjustLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"buyDevelopmentFee","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":"buyLotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyPoolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"changePoolReceiver","outputs":[],"stateMutability":"nonpayable","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":"developmentReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"draw","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellPoolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":"uint8","name":"_buyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"_buyPoolFee","type":"uint8"},{"internalType":"uint8","name":"_buyDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"_sellLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"_sellPoolFee","type":"uint8"},{"internalType":"uint8","name":"_sellDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"_buyLotteryFee","type":"uint8"},{"internalType":"uint8","name":"_sellLotteryFee","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBack","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":"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"on","type":"bool"}],"name":"updateSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600f805462ffffff19166001179055601e805460ff191660121790553480156200002d57600080fd5b506040805180820182526009815268426c6f636b4a61636b60b81b602080830191825283518085019094526004808552634a41434b60e01b91850191909152601e54835193949360ff9091169262000086929162000734565b5081516200009c90600590602085019062000734565b506003805460ff191660ff9290921691909117905550620000c69050620000c03390565b62000486565b600a80546001600160a01b0319908116732d8fb47798b3c5f030267169912c69f338691e9a17825560098054821673e6da9fe282f512a8466d99813d8df0f7072b71c2908117909155600b8054909216179055601e54737a250d5630b4cf539739df2c5dacb4c659f2488d91600091600591829184918291819083908190620001539060ff1684620008ef565b62000163906305f5e10062000907565b905060646200017482600162000907565b62000180919062000929565b600c5560646200019282600162000907565b6200019e919062000929565b600e55612710620001b182600a62000907565b620001bd919062000929565b600d55620001cd8a6001620004d8565b600780546001600160a01b0319166001600160a01b038c169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d91906200094c565b6001600160a01b031663c9c65396308c6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c191906200094c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200030f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033591906200094c565b600880546001600160a01b0319166001600160a01b0392909216918217905562000361906001620004d8565b6008546200037a906001600160a01b0316600162000551565b601189905560128890556013879055601486905585876200039c8a8c62000977565b620003a8919062000977565b620003b4919062000977565b60105560168590556017849055601883905560198290558183620003d9868862000977565b620003e5919062000977565b620003f1919062000977565b601555620004136200040b6006546001600160a01b031690565b6001620005a5565b62000420306001620005a5565b6200042f61dead6001620005a5565b6200044e620004466006546001600160a01b031690565b6001620004d8565b6200045b306001620004d8565b6200046a61dead6001620004d8565b6200047633826200064f565b50505050505050505050620009cf565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6006546001600160a01b03163314620005275760405162461bcd60e51b815260206004820181905260248201526000805160206200335f83398151915260448201526064015b60405180910390fd5b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6006546001600160a01b03163314620005f05760405162461bcd60e51b815260206004820181905260248201526000805160206200335f83398151915260448201526064016200051e565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006a75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200051e565b8060026000828254620006bb919062000977565b90915550506001600160a01b03821660009081526020819052604081208054839290620006ea90849062000977565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620007429062000992565b90600052602060002090601f016020900481019282620007665760008555620007b1565b82601f106200078157805160ff1916838001178555620007b1565b82800160010185558215620007b1579182015b82811115620007b157825182559160200191906001019062000794565b50620007bf929150620007c3565b5090565b5b80821115620007bf5760008155600101620007c4565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000831578160001904821115620008155762000815620007da565b808516156200082357918102915b93841c9390800290620007f5565b509250929050565b6000826200084a57506001620008e9565b816200085957506000620008e9565b81600181146200087257600281146200087d576200089d565b6001915050620008e9565b60ff841115620008915762000891620007da565b50506001821b620008e9565b5060208310610133831016604e8410600b8410161715620008c2575081810a620008e9565b620008ce8383620007f0565b8060001904821115620008e557620008e5620007da565b0290505b92915050565b60006200090060ff84168362000839565b9392505050565b6000816000190483118215151615620009245762000924620007da565b500290565b6000826200094757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200095f57600080fd5b81516001600160a01b03811681146200090057600080fd5b600082198211156200098d576200098d620007da565b500190565b600181811c90821680620009a757607f821691505b60208210811415620009c957634e487b7160e01b600052602260045260246000fd5b50919050565b61298080620009df6000396000f3fe60806040526004361061031e5760003560e01c806371e65840116101ab578063bbc0c742116100f7578063d8b3449b11610095578063f11a24d31161006f578063f11a24d314610928578063f2fde38b1461093e578063f63743421461095e578063f8b45b051461097457600080fd5b8063d8b3449b146108ac578063dd62ed3e146108cc578063e2f456051461091257600080fd5b8063c9567bf9116100d1578063c9567bf91461084b578063cd38890914610860578063d257b34f14610876578063d85ba0631461089657600080fd5b8063bbc0c742146107f6578063c024666814610815578063c8c8ebe41461083557600080fd5b806395d89b4111610164578063a9059cbb1161013e578063a9059cbb1461077a578063ad3429be1461079a578063b2041411146107b0578063b62496f5146107c657600080fd5b806395d89b41146107255780639a7a23d61461073a578063a457c2d71461075a57600080fd5b806371e658401461067c578063751039fc1461069c5780637571336a146106b157806385956b6f146106d15780638da5cb5b146106e757806392895e4e1461070557600080fd5b8063395093511161026a5780635dbbd338116102235780636ac5eeee116101fd5780636ac5eeee146105fb5780636d3e313e1461061b57806370a0823114610631578063715018a61461066757600080fd5b80635dbbd338146105af57806366750920146105c55780636a486a8e146105e557600080fd5b806339509351146104e657806349bd5a5e146105065780634a62bb65146105265780634b8ce602146105405780634fbee19314610556578063593173c11461058f57600080fd5b806318160ddd116102d757806323b872dd116102b157806323b872dd1461046e578063313ce5671461048e57806334908e56146104b0578063363ee234146104c657600080fd5b806318160ddd1461042357806318a94cf1146104425780631f3876d11461045857600080fd5b806306fdde031461032a578063095ea7b3146103555780630c6fd7b2146103855780630eecae21146103bd57806310d5de53146103d45780631694505e1461040357600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f61098a565b60405161034c919061240d565b60405180910390f35b34801561036157600080fd5b50610375610370366004612477565b610a1c565b604051901515815260200161034c565b34801561039157600080fd5b50600b546103a5906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156103c957600080fd5b506103d2610a32565b005b3480156103e057600080fd5b506103756103ef3660046124a3565b602080526000908152604090205460ff1681565b34801561040f57600080fd5b506007546103a5906001600160a01b031681565b34801561042f57600080fd5b506002545b60405190815260200161034c565b34801561044e57600080fd5b5061043460185481565b34801561046457600080fd5b50610434601d5481565b34801561047a57600080fd5b506103756104893660046124c7565b610a78565b34801561049a57600080fd5b5060035460405160ff909116815260200161034c565b3480156104bc57600080fd5b5061043460195481565b3480156104d257600080fd5b506103d26104e1366004612519565b610b22565b3480156104f257600080fd5b50610375610501366004612477565b610be0565b34801561051257600080fd5b506008546103a5906001600160a01b031681565b34801561053257600080fd5b50600f546103759060ff1681565b34801561054c57600080fd5b50610434601a5481565b34801561056257600080fd5b506103756105713660046124a3565b6001600160a01b03166000908152601f602052604090205460ff1690565b34801561059b57600080fd5b506009546103a5906001600160a01b031681565b3480156105bb57600080fd5b5061043460125481565b3480156105d157600080fd5b506103d26105e03660046124a3565b610c1c565b3480156105f157600080fd5b5061043460155481565b34801561060757600080fd5b50600f546103759062010000900460ff1681565b34801561062757600080fd5b50610434601b5481565b34801561063d57600080fd5b5061043461064c3660046124a3565b6001600160a01b031660009081526020819052604090205490565b34801561067357600080fd5b506103d2610c68565b34801561068857600080fd5b506103d26106973660046125be565b610c9e565b3480156106a857600080fd5b50610375610ce4565b3480156106bd57600080fd5b506103d26106cc3660046125db565b610d21565b3480156106dd57600080fd5b5061043460175481565b3480156106f357600080fd5b506006546001600160a01b03166103a5565b34801561071157600080fd5b50600a546103a5906001600160a01b031681565b34801561073157600080fd5b5061033f610d75565b34801561074657600080fd5b506103d26107553660046125db565b610d84565b34801561076657600080fd5b50610375610775366004612477565b610e40565b34801561078657600080fd5b50610375610795366004612477565b610ed9565b3480156107a657600080fd5b50610434601c5481565b3480156107bc57600080fd5b5061043460135481565b3480156107d257600080fd5b506103756107e13660046124a3565b60216020526000908152604090205460ff1681565b34801561080257600080fd5b50600f5461037590610100900460ff1681565b34801561082157600080fd5b506103d26108303660046125db565b610ee6565b34801561084157600080fd5b50610434600c5481565b34801561085757600080fd5b506103d2610f6f565b34801561086c57600080fd5b5061043460145481565b34801561088257600080fd5b50610375610891366004612614565b61129a565b3480156108a257600080fd5b5061043460105481565b3480156108b857600080fd5b506103d26108c7366004612641565b6113f1565b3480156108d857600080fd5b506104346108e7366004612674565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561091e57600080fd5b50610434600d5481565b34801561093457600080fd5b5061043460115481565b34801561094a57600080fd5b506103d26109593660046124a3565b61142c565b34801561096a57600080fd5b5061043460165481565b34801561098057600080fd5b50610434600e5481565b606060048054610999906126a2565b80601f01602080910402602001604051908101604052809291908181526020018280546109c5906126a2565b8015610a125780601f106109e757610100808354040283529160200191610a12565b820191906000526020600020905b8154815290600101906020018083116109f557829003601f168201915b5050505050905090565b6000610a293384846114c7565b50600192915050565b6006546001600160a01b03163314610a655760405162461bcd60e51b8152600401610a5c906126dd565b60405180910390fd5b600f805462ffff00191662010100179055565b6000610a858484846115eb565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b0a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a5c565b610b1785338584036114c7565b506001949350505050565b6006546001600160a01b03163314610b4c5760405162461bcd60e51b8152600401610a5c906126dd565b60ff80891660118190558882166012819055888316601381905592851660148190559291610b7a9190612728565b610b849190612728565b610b8e9190612728565b60105560ff80861660168190558582166017819055858316601881905592841660198190559291610bbf9190612728565b610bc99190612728565b610bd39190612728565b6015555050505050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a29918590610c17908690612728565b6114c7565b6006546001600160a01b03163314610c465760405162461bcd60e51b8152600401610a5c906126dd565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314610c925760405162461bcd60e51b8152600401610a5c906126dd565b610c9c6000611d4f565b565b6006546001600160a01b03163314610cc85760405162461bcd60e51b8152600401610a5c906126dd565b600f8054911515620100000262ff000019909216919091179055565b6006546000906001600160a01b03163314610d115760405162461bcd60e51b8152600401610a5c906126dd565b50600f805460ff19169055600190565b6006546001600160a01b03163314610d4b5760405162461bcd60e51b8152600401610a5c906126dd565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b606060058054610999906126a2565b6006546001600160a01b03163314610dae5760405162461bcd60e51b8152600401610a5c906126dd565b6008546001600160a01b0383811691161415610e325760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a5c565b610e3c8282611da1565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ec25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a5c565b610ecf33858584036114c7565b5060019392505050565b6000610a293384846115eb565b6006546001600160a01b03163314610f105760405162461bcd60e51b8152600401610a5c906126dd565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6006546001600160a01b03163314610f995760405162461bcd60e51b8152600401610a5c906126dd565b600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610fd99030906a52b7d2dcc80cd2e40000006114c7565b600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561102c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110509190612740565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d69190612740565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111479190612740565b600880546001600160a01b039283166001600160a01b03199091161790556007541663f305d719473061118f816001600160a01b031660009081526020819052604090205490565b6000806111a46006546001600160a01b031690565b426040518863ffffffff1660e01b81526004016111c69695949392919061275d565b60606040518083038185885af11580156111e4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112099190612798565b505060085460075460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015611262573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128691906127c6565b50600f805462ffff00191662010100179055565b6006546000906001600160a01b031633146112c75760405162461bcd60e51b8152600401610a5c906126dd565b620186a06112d460025490565b6112df9060016127e3565b6112e99190612802565b8210156113565760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a5c565b6103e861136260025490565b61136d9060056127e3565b6113779190612802565b8211156113e35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a5c565b50600d81905560015b919050565b6006546001600160a01b0316331461141b5760405162461bcd60e51b8152600401610a5c906126dd565b63ffffffff918216600c5516600e55565b6006546001600160a01b031633146114565760405162461bcd60e51b8152600401610a5c906126dd565b6001600160a01b0381166114bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a5c565b6114c481611d4f565b50565b6001600160a01b0383166115295760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a5c565b6001600160a01b03821661158a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a5c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116115760405162461bcd60e51b8152600401610a5c90612824565b6001600160a01b0382166116375760405162461bcd60e51b8152600401610a5c90612869565b8061164d5761164883836000611df5565b505050565b600f5460ff16156119c0576006546001600160a01b0384811691161480159061168457506006546001600160a01b03838116911614155b801561169857506001600160a01b03821615155b80156116af57506001600160a01b03821661dead14155b80156116c55750600854600160a01b900460ff16155b156119c057600f54610100900460ff1661175d576001600160a01b0383166000908152601f602052604090205460ff168061171857506001600160a01b0382166000908152601f602052604090205460ff165b61175d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a5c565b6001600160a01b03831660009081526021602052604090205460ff16801561179d57506001600160a01b038216600090815260208052604090205460ff16155b1561188157600c548111156118125760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a5c565b600e546001600160a01b0383166000908152602081905260409020546118389083612728565b111561187c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a5c565b6119c0565b6001600160a01b03821660009081526021602052604090205460ff1680156118c157506001600160a01b038316600090815260208052604090205460ff16155b1561193757600c5481111561187c5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a5c565b6001600160a01b038216600090815260208052604090205460ff166119c057600e546001600160a01b03831660009081526020819052604090205461197c9083612728565b11156119c05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a5c565b30600090815260208190526040902054600d54811080159081906119ec5750600f5462010000900460ff165b8015611a025750600854600160a01b900460ff16155b8015611a2757506001600160a01b03851660009081526021602052604090205460ff16155b8015611a4c57506001600160a01b0385166000908152601f602052604090205460ff16155b8015611a7157506001600160a01b0384166000908152601f602052604090205460ff16155b15611a9f576008805460ff60a01b1916600160a01b179055611a91611f4a565b6008805460ff60a01b191690555b6008546001600160a01b0386166000908152601f602052604090205460ff600160a01b909204821615911680611aed57506001600160a01b0385166000908152601f602052604090205460ff165b15611af6575060005b60008115611d3b576001600160a01b03861660009081526021602052604090205460ff168015611b2857506000601554115b15611c1057606460155486611b3d91906127e3565b611b479190612802565b905060155460165482611b5a91906127e3565b611b649190612802565b601a6000828254611b759190612728565b9091555050601554601754611b8a90836127e3565b611b949190612802565b601b6000828254611ba59190612728565b9091555050601554601854611bba90836127e3565b611bc49190612802565b601c6000828254611bd59190612728565b9091555050601554601954611bea90836127e3565b611bf49190612802565b601d6000828254611c059190612728565b90915550611d1d9050565b6001600160a01b03871660009081526021602052604090205460ff168015611c3a57506000601054115b15611d1d57606460105486611c4f91906127e3565b611c599190612802565b905060105460115482611c6c91906127e3565b611c769190612802565b601a6000828254611c879190612728565b9091555050601054601254611c9c90836127e3565b611ca69190612802565b601b6000828254611cb79190612728565b9091555050601054601354611ccc90836127e3565b611cd69190612802565b601c6000828254611ce79190612728565b9091555050601554601454611cfc90836127e3565b611d069190612802565b601d6000828254611d179190612728565b90915550505b8015611d2e57611d2e873083611df5565b611d3881866128ac565b94505b611d46878787611df5565b50505050505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e1b5760405162461bcd60e51b8152600401610a5c90612824565b6001600160a01b038216611e415760405162461bcd60e51b8152600401610a5c90612869565b6001600160a01b03831660009081526020819052604090205481811015611eb95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a5c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611ef0908490612728565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f3c91815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601d54601c54601b54601a54611f749190612728565b611f7e9190612728565b611f889190612728565b90506000821580611f97575081155b15611fa157505050565b600d54611faf9060146127e3565b831115611fc757600d54611fc49060146127e3565b92505b6000600283601a5486611fda91906127e3565b611fe49190612802565b611fee9190612802565b90506000611ffc82866128ac565b90504761200882612211565b600061201482476128ac565b9050600086601b548361202791906127e3565b6120319190612802565b9050600087601c548461204491906127e3565b61204e9190612802565b9050600088601d548561206191906127e3565b61206b9190612802565b90506000818361207b86886128ac565b61208591906128ac565b61208f91906128ac565b6000601a819055601b819055601c819055601d55905087158015906120b45750600081115b15612105576120c3888261236b565b60408051888152602081018390529081018990527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b600a546040516001600160a01b03909116908590600081818185875af1925050503d8060008114612152576040519150601f19603f3d011682016040523d82523d6000602084013e612157565b606091505b5050600b54604051919a506001600160a01b0316908590600081818185875af1925050503d80600081146121a7576040519150601f19603f3d011682016040523d82523d6000602084013e6121ac565b606091505b5050600954604051919a506001600160a01b0316904790600081818185875af1925050503d80600081146121fc576040519150601f19603f3d011682016040523d82523d6000602084013e612201565b606091505b5050505050505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612246576122466128c3565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561229f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c39190612740565b816001815181106122d6576122d66128c3565b6001600160a01b0392831660209182029290920101526007546122fc91309116846114c7565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac947906123359085906000908690309042906004016128d9565b600060405180830381600087803b15801561234f57600080fd5b505af1158015612363573d6000803e3d6000fd5b505050505050565b6007546123839030906001600160a01b0316846114c7565b60075460095460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926123c3923092899260009283921690429060040161275d565b60606040518083038185885af11580156123e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124069190612798565b5050505050565b600060208083528351808285015260005b8181101561243a5785810183015185820160400152820161241e565b8181111561244c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146114c457600080fd5b6000806040838503121561248a57600080fd5b823561249581612462565b946020939093013593505050565b6000602082840312156124b557600080fd5b81356124c081612462565b9392505050565b6000806000606084860312156124dc57600080fd5b83356124e781612462565b925060208401356124f781612462565b929592945050506040919091013590565b803560ff811681146113ec57600080fd5b600080600080600080600080610100898b03121561253657600080fd5b61253f89612508565b975061254d60208a01612508565b965061255b60408a01612508565b955061256960608a01612508565b945061257760808a01612508565b935061258560a08a01612508565b925061259360c08a01612508565b91506125a160e08a01612508565b90509295985092959890939650565b80151581146114c457600080fd5b6000602082840312156125d057600080fd5b81356124c0816125b0565b600080604083850312156125ee57600080fd5b82356125f981612462565b91506020830135612609816125b0565b809150509250929050565b60006020828403121561262657600080fd5b5035919050565b803563ffffffff811681146113ec57600080fd5b6000806040838503121561265457600080fd5b61265d8361262d565b915061266b6020840161262d565b90509250929050565b6000806040838503121561268757600080fd5b823561269281612462565b9150602083013561260981612462565b600181811c908216806126b657607f821691505b602082108114156126d757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561273b5761273b612712565b500190565b60006020828403121561275257600080fd5b81516124c081612462565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156127ad57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156127d857600080fd5b81516124c0816125b0565b60008160001904831182151516156127fd576127fd612712565b500290565b60008261281f57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156128be576128be612712565b500390565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129295784516001600160a01b031683529383019391830191600101612904565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d4c657745dc30f0d80d816a2d187d7a9b1b35d9b0ae6b8346e73d71cba23e2be64736f6c634300080a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061031e5760003560e01c806371e65840116101ab578063bbc0c742116100f7578063d8b3449b11610095578063f11a24d31161006f578063f11a24d314610928578063f2fde38b1461093e578063f63743421461095e578063f8b45b051461097457600080fd5b8063d8b3449b146108ac578063dd62ed3e146108cc578063e2f456051461091257600080fd5b8063c9567bf9116100d1578063c9567bf91461084b578063cd38890914610860578063d257b34f14610876578063d85ba0631461089657600080fd5b8063bbc0c742146107f6578063c024666814610815578063c8c8ebe41461083557600080fd5b806395d89b4111610164578063a9059cbb1161013e578063a9059cbb1461077a578063ad3429be1461079a578063b2041411146107b0578063b62496f5146107c657600080fd5b806395d89b41146107255780639a7a23d61461073a578063a457c2d71461075a57600080fd5b806371e658401461067c578063751039fc1461069c5780637571336a146106b157806385956b6f146106d15780638da5cb5b146106e757806392895e4e1461070557600080fd5b8063395093511161026a5780635dbbd338116102235780636ac5eeee116101fd5780636ac5eeee146105fb5780636d3e313e1461061b57806370a0823114610631578063715018a61461066757600080fd5b80635dbbd338146105af57806366750920146105c55780636a486a8e146105e557600080fd5b806339509351146104e657806349bd5a5e146105065780634a62bb65146105265780634b8ce602146105405780634fbee19314610556578063593173c11461058f57600080fd5b806318160ddd116102d757806323b872dd116102b157806323b872dd1461046e578063313ce5671461048e57806334908e56146104b0578063363ee234146104c657600080fd5b806318160ddd1461042357806318a94cf1146104425780631f3876d11461045857600080fd5b806306fdde031461032a578063095ea7b3146103555780630c6fd7b2146103855780630eecae21146103bd57806310d5de53146103d45780631694505e1461040357600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f61098a565b60405161034c919061240d565b60405180910390f35b34801561036157600080fd5b50610375610370366004612477565b610a1c565b604051901515815260200161034c565b34801561039157600080fd5b50600b546103a5906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156103c957600080fd5b506103d2610a32565b005b3480156103e057600080fd5b506103756103ef3660046124a3565b602080526000908152604090205460ff1681565b34801561040f57600080fd5b506007546103a5906001600160a01b031681565b34801561042f57600080fd5b506002545b60405190815260200161034c565b34801561044e57600080fd5b5061043460185481565b34801561046457600080fd5b50610434601d5481565b34801561047a57600080fd5b506103756104893660046124c7565b610a78565b34801561049a57600080fd5b5060035460405160ff909116815260200161034c565b3480156104bc57600080fd5b5061043460195481565b3480156104d257600080fd5b506103d26104e1366004612519565b610b22565b3480156104f257600080fd5b50610375610501366004612477565b610be0565b34801561051257600080fd5b506008546103a5906001600160a01b031681565b34801561053257600080fd5b50600f546103759060ff1681565b34801561054c57600080fd5b50610434601a5481565b34801561056257600080fd5b506103756105713660046124a3565b6001600160a01b03166000908152601f602052604090205460ff1690565b34801561059b57600080fd5b506009546103a5906001600160a01b031681565b3480156105bb57600080fd5b5061043460125481565b3480156105d157600080fd5b506103d26105e03660046124a3565b610c1c565b3480156105f157600080fd5b5061043460155481565b34801561060757600080fd5b50600f546103759062010000900460ff1681565b34801561062757600080fd5b50610434601b5481565b34801561063d57600080fd5b5061043461064c3660046124a3565b6001600160a01b031660009081526020819052604090205490565b34801561067357600080fd5b506103d2610c68565b34801561068857600080fd5b506103d26106973660046125be565b610c9e565b3480156106a857600080fd5b50610375610ce4565b3480156106bd57600080fd5b506103d26106cc3660046125db565b610d21565b3480156106dd57600080fd5b5061043460175481565b3480156106f357600080fd5b506006546001600160a01b03166103a5565b34801561071157600080fd5b50600a546103a5906001600160a01b031681565b34801561073157600080fd5b5061033f610d75565b34801561074657600080fd5b506103d26107553660046125db565b610d84565b34801561076657600080fd5b50610375610775366004612477565b610e40565b34801561078657600080fd5b50610375610795366004612477565b610ed9565b3480156107a657600080fd5b50610434601c5481565b3480156107bc57600080fd5b5061043460135481565b3480156107d257600080fd5b506103756107e13660046124a3565b60216020526000908152604090205460ff1681565b34801561080257600080fd5b50600f5461037590610100900460ff1681565b34801561082157600080fd5b506103d26108303660046125db565b610ee6565b34801561084157600080fd5b50610434600c5481565b34801561085757600080fd5b506103d2610f6f565b34801561086c57600080fd5b5061043460145481565b34801561088257600080fd5b50610375610891366004612614565b61129a565b3480156108a257600080fd5b5061043460105481565b3480156108b857600080fd5b506103d26108c7366004612641565b6113f1565b3480156108d857600080fd5b506104346108e7366004612674565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561091e57600080fd5b50610434600d5481565b34801561093457600080fd5b5061043460115481565b34801561094a57600080fd5b506103d26109593660046124a3565b61142c565b34801561096a57600080fd5b5061043460165481565b34801561098057600080fd5b50610434600e5481565b606060048054610999906126a2565b80601f01602080910402602001604051908101604052809291908181526020018280546109c5906126a2565b8015610a125780601f106109e757610100808354040283529160200191610a12565b820191906000526020600020905b8154815290600101906020018083116109f557829003601f168201915b5050505050905090565b6000610a293384846114c7565b50600192915050565b6006546001600160a01b03163314610a655760405162461bcd60e51b8152600401610a5c906126dd565b60405180910390fd5b600f805462ffff00191662010100179055565b6000610a858484846115eb565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b0a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a5c565b610b1785338584036114c7565b506001949350505050565b6006546001600160a01b03163314610b4c5760405162461bcd60e51b8152600401610a5c906126dd565b60ff80891660118190558882166012819055888316601381905592851660148190559291610b7a9190612728565b610b849190612728565b610b8e9190612728565b60105560ff80861660168190558582166017819055858316601881905592841660198190559291610bbf9190612728565b610bc99190612728565b610bd39190612728565b6015555050505050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a29918590610c17908690612728565b6114c7565b6006546001600160a01b03163314610c465760405162461bcd60e51b8152600401610a5c906126dd565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314610c925760405162461bcd60e51b8152600401610a5c906126dd565b610c9c6000611d4f565b565b6006546001600160a01b03163314610cc85760405162461bcd60e51b8152600401610a5c906126dd565b600f8054911515620100000262ff000019909216919091179055565b6006546000906001600160a01b03163314610d115760405162461bcd60e51b8152600401610a5c906126dd565b50600f805460ff19169055600190565b6006546001600160a01b03163314610d4b5760405162461bcd60e51b8152600401610a5c906126dd565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b606060058054610999906126a2565b6006546001600160a01b03163314610dae5760405162461bcd60e51b8152600401610a5c906126dd565b6008546001600160a01b0383811691161415610e325760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a5c565b610e3c8282611da1565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ec25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a5c565b610ecf33858584036114c7565b5060019392505050565b6000610a293384846115eb565b6006546001600160a01b03163314610f105760405162461bcd60e51b8152600401610a5c906126dd565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6006546001600160a01b03163314610f995760405162461bcd60e51b8152600401610a5c906126dd565b600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610fd99030906a52b7d2dcc80cd2e40000006114c7565b600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561102c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110509190612740565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d69190612740565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111479190612740565b600880546001600160a01b039283166001600160a01b03199091161790556007541663f305d719473061118f816001600160a01b031660009081526020819052604090205490565b6000806111a46006546001600160a01b031690565b426040518863ffffffff1660e01b81526004016111c69695949392919061275d565b60606040518083038185885af11580156111e4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112099190612798565b505060085460075460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015611262573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128691906127c6565b50600f805462ffff00191662010100179055565b6006546000906001600160a01b031633146112c75760405162461bcd60e51b8152600401610a5c906126dd565b620186a06112d460025490565b6112df9060016127e3565b6112e99190612802565b8210156113565760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a5c565b6103e861136260025490565b61136d9060056127e3565b6113779190612802565b8211156113e35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a5c565b50600d81905560015b919050565b6006546001600160a01b0316331461141b5760405162461bcd60e51b8152600401610a5c906126dd565b63ffffffff918216600c5516600e55565b6006546001600160a01b031633146114565760405162461bcd60e51b8152600401610a5c906126dd565b6001600160a01b0381166114bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a5c565b6114c481611d4f565b50565b6001600160a01b0383166115295760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a5c565b6001600160a01b03821661158a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a5c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116115760405162461bcd60e51b8152600401610a5c90612824565b6001600160a01b0382166116375760405162461bcd60e51b8152600401610a5c90612869565b8061164d5761164883836000611df5565b505050565b600f5460ff16156119c0576006546001600160a01b0384811691161480159061168457506006546001600160a01b03838116911614155b801561169857506001600160a01b03821615155b80156116af57506001600160a01b03821661dead14155b80156116c55750600854600160a01b900460ff16155b156119c057600f54610100900460ff1661175d576001600160a01b0383166000908152601f602052604090205460ff168061171857506001600160a01b0382166000908152601f602052604090205460ff165b61175d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a5c565b6001600160a01b03831660009081526021602052604090205460ff16801561179d57506001600160a01b038216600090815260208052604090205460ff16155b1561188157600c548111156118125760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a5c565b600e546001600160a01b0383166000908152602081905260409020546118389083612728565b111561187c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a5c565b6119c0565b6001600160a01b03821660009081526021602052604090205460ff1680156118c157506001600160a01b038316600090815260208052604090205460ff16155b1561193757600c5481111561187c5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a5c565b6001600160a01b038216600090815260208052604090205460ff166119c057600e546001600160a01b03831660009081526020819052604090205461197c9083612728565b11156119c05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a5c565b30600090815260208190526040902054600d54811080159081906119ec5750600f5462010000900460ff165b8015611a025750600854600160a01b900460ff16155b8015611a2757506001600160a01b03851660009081526021602052604090205460ff16155b8015611a4c57506001600160a01b0385166000908152601f602052604090205460ff16155b8015611a7157506001600160a01b0384166000908152601f602052604090205460ff16155b15611a9f576008805460ff60a01b1916600160a01b179055611a91611f4a565b6008805460ff60a01b191690555b6008546001600160a01b0386166000908152601f602052604090205460ff600160a01b909204821615911680611aed57506001600160a01b0385166000908152601f602052604090205460ff165b15611af6575060005b60008115611d3b576001600160a01b03861660009081526021602052604090205460ff168015611b2857506000601554115b15611c1057606460155486611b3d91906127e3565b611b479190612802565b905060155460165482611b5a91906127e3565b611b649190612802565b601a6000828254611b759190612728565b9091555050601554601754611b8a90836127e3565b611b949190612802565b601b6000828254611ba59190612728565b9091555050601554601854611bba90836127e3565b611bc49190612802565b601c6000828254611bd59190612728565b9091555050601554601954611bea90836127e3565b611bf49190612802565b601d6000828254611c059190612728565b90915550611d1d9050565b6001600160a01b03871660009081526021602052604090205460ff168015611c3a57506000601054115b15611d1d57606460105486611c4f91906127e3565b611c599190612802565b905060105460115482611c6c91906127e3565b611c769190612802565b601a6000828254611c879190612728565b9091555050601054601254611c9c90836127e3565b611ca69190612802565b601b6000828254611cb79190612728565b9091555050601054601354611ccc90836127e3565b611cd69190612802565b601c6000828254611ce79190612728565b9091555050601554601454611cfc90836127e3565b611d069190612802565b601d6000828254611d179190612728565b90915550505b8015611d2e57611d2e873083611df5565b611d3881866128ac565b94505b611d46878787611df5565b50505050505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e1b5760405162461bcd60e51b8152600401610a5c90612824565b6001600160a01b038216611e415760405162461bcd60e51b8152600401610a5c90612869565b6001600160a01b03831660009081526020819052604090205481811015611eb95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a5c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611ef0908490612728565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f3c91815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601d54601c54601b54601a54611f749190612728565b611f7e9190612728565b611f889190612728565b90506000821580611f97575081155b15611fa157505050565b600d54611faf9060146127e3565b831115611fc757600d54611fc49060146127e3565b92505b6000600283601a5486611fda91906127e3565b611fe49190612802565b611fee9190612802565b90506000611ffc82866128ac565b90504761200882612211565b600061201482476128ac565b9050600086601b548361202791906127e3565b6120319190612802565b9050600087601c548461204491906127e3565b61204e9190612802565b9050600088601d548561206191906127e3565b61206b9190612802565b90506000818361207b86886128ac565b61208591906128ac565b61208f91906128ac565b6000601a819055601b819055601c819055601d55905087158015906120b45750600081115b15612105576120c3888261236b565b60408051888152602081018390529081018990527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b600a546040516001600160a01b03909116908590600081818185875af1925050503d8060008114612152576040519150601f19603f3d011682016040523d82523d6000602084013e612157565b606091505b5050600b54604051919a506001600160a01b0316908590600081818185875af1925050503d80600081146121a7576040519150601f19603f3d011682016040523d82523d6000602084013e6121ac565b606091505b5050600954604051919a506001600160a01b0316904790600081818185875af1925050503d80600081146121fc576040519150601f19603f3d011682016040523d82523d6000602084013e612201565b606091505b5050505050505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612246576122466128c3565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561229f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c39190612740565b816001815181106122d6576122d66128c3565b6001600160a01b0392831660209182029290920101526007546122fc91309116846114c7565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac947906123359085906000908690309042906004016128d9565b600060405180830381600087803b15801561234f57600080fd5b505af1158015612363573d6000803e3d6000fd5b505050505050565b6007546123839030906001600160a01b0316846114c7565b60075460095460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926123c3923092899260009283921690429060040161275d565b60606040518083038185885af11580156123e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124069190612798565b5050505050565b600060208083528351808285015260005b8181101561243a5785810183015185820160400152820161241e565b8181111561244c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146114c457600080fd5b6000806040838503121561248a57600080fd5b823561249581612462565b946020939093013593505050565b6000602082840312156124b557600080fd5b81356124c081612462565b9392505050565b6000806000606084860312156124dc57600080fd5b83356124e781612462565b925060208401356124f781612462565b929592945050506040919091013590565b803560ff811681146113ec57600080fd5b600080600080600080600080610100898b03121561253657600080fd5b61253f89612508565b975061254d60208a01612508565b965061255b60408a01612508565b955061256960608a01612508565b945061257760808a01612508565b935061258560a08a01612508565b925061259360c08a01612508565b91506125a160e08a01612508565b90509295985092959890939650565b80151581146114c457600080fd5b6000602082840312156125d057600080fd5b81356124c0816125b0565b600080604083850312156125ee57600080fd5b82356125f981612462565b91506020830135612609816125b0565b809150509250929050565b60006020828403121561262657600080fd5b5035919050565b803563ffffffff811681146113ec57600080fd5b6000806040838503121561265457600080fd5b61265d8361262d565b915061266b6020840161262d565b90509250929050565b6000806040838503121561268757600080fd5b823561269281612462565b9150602083013561260981612462565b600181811c908216806126b657607f821691505b602082108114156126d757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561273b5761273b612712565b500190565b60006020828403121561275257600080fd5b81516124c081612462565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156127ad57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156127d857600080fd5b81516124c0816125b0565b60008160001904831182151516156127fd576127fd612712565b500290565b60008261281f57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156128be576128be612712565b500390565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129295784516001600160a01b031683529383019391830191600101612904565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d4c657745dc30f0d80d816a2d187d7a9b1b35d9b0ae6b8346e73d71cba23e2be64736f6c634300080a0033

Deployed Bytecode Sourcemap

12417:14751:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2771:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3692:169;;;;;;;;;;-1:-1:-1;3692:169:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;3692:169:0;1072:187:1;12647:30:0;;;;;;;;;;-1:-1:-1;12647:30:0;;;;-1:-1:-1;;;;;12647:30:0;;;;;;-1:-1:-1;;;;;1428:32:1;;;1410:51;;1398:2;1383:18;12647:30:0;1264:203:1;16455:100:0;;;;;;;;;;;;;:::i;:::-;;13576:63;;;;;;;;;;-1:-1:-1;13576:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12456:41;;;;;;;;;;-1:-1:-1;12456:41:0;;;;-1:-1:-1;;;;;12456:41:0;;;3099:108;;;;;;;;;;-1:-1:-1;3187:12:0;;3099:108;;;2105:25:1;;;2093:2;2078:18;3099:108:0;1959:177:1;13205:33:0;;;;;;;;;;;;;;;;13390:28;;;;;;;;;;;;;;;;3869:492;;;;;;;;;;-1:-1:-1;3869:492:0;;;;;:::i;:::-;;:::i;2991:100::-;;;;;;;;;;-1:-1:-1;3074:9:0;;2991:100;;3074:9;;;;2744:36:1;;2732:2;2717:18;2991:100:0;2602:184:1;13246:29:0;;;;;;;;;;;;;;;;16563:849;;;;;;;;;;-1:-1:-1;16563:849:0;;;;;:::i;:::-;;:::i;4369:215::-;;;;;;;;;;-1:-1:-1;4369:215:0;;;;;:::i;:::-;;:::i;12504:28::-;;;;;;;;;;-1:-1:-1;12504:28:0;;;;-1:-1:-1;;;;;12504:28:0;;;12801:33;;;;;;;;;;-1:-1:-1;12801:33:0;;;;;;;;13282:30;;;;;;;;;;;;;;;;19391:126;;;;;;;;;;-1:-1:-1;19391:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;19481:28:0;19457:4;19481:28;;;:19;:28;;;;;;;;;19391:126;12571:34;;;;;;;;;;-1:-1:-1;12571:34:0;;;;-1:-1:-1;;;;;12571:34:0;;;12989:25;;;;;;;;;;;;;;;;17550:100;;;;;;;;;;-1:-1:-1;17550:100:0;;;;;:::i;:::-;;:::i;13099:28::-;;;;;;;;;;;;;;;;12881;;;;;;;;;;-1:-1:-1;12881:28:0;;;;;;;;;;;13319:25;;;;;;;;;;;;;;;;3215:127;;;;;;;;;;-1:-1:-1;3215:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3316:18:0;3289:7;3316:18;;;;;;;;;;;;3215:127;900:103;;;;;;;;;;;;;:::i;18601:84::-;;;;;;;;;;-1:-1:-1;18601:84:0;;;;;:::i;:::-;;:::i;17421:121::-;;;;;;;;;;;;;:::i;18338:167::-;;;;;;;;;;-1:-1:-1;18338:167:0;;;;;:::i;:::-;;:::i;13172:26::-;;;;;;;;;;;;;;;;677:87;;;;;;;;;;-1:-1:-1;750:6:0;;-1:-1:-1;;;;;750:6:0;677:87;;12612:27;;;;;;;;;;-1:-1:-1;12612:27:0;;;;-1:-1:-1;;;;;12612:27:0;;;2879:104;;;;;;;;;;;;;:::i;18883:304::-;;;;;;;;;;-1:-1:-1;18883:304:0;;;;;:::i;:::-;;:::i;4592:413::-;;;;;;;;;;-1:-1:-1;4592:413:0;;;;;:::i;:::-;;:::i;3350:175::-;;;;;;;;;;-1:-1:-1;3350:175:0;;;;;:::i;:::-;;:::i;13351:32::-;;;;;;;;;;;;;;;;13021;;;;;;;;;;;;;;;;13797:57;;;;;;;;;;-1:-1:-1;13797:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12841:33;;;;;;;;;;-1:-1:-1;12841:33:0;;;;;;;;;;;18693:182;;;;;;;;;;-1:-1:-1;18693:182:0;;;;;:::i;:::-;;:::i;12686:35::-;;;;;;;;;;;;;;;;24111:622;;;;;;;;;;;;;:::i;13061:28::-;;;;;;;;;;;;;;;;17832:497;;;;;;;;;;-1:-1:-1;17832:497:0;;;;;:::i;:::-;;:::i;12918:27::-;;;;;;;;;;;;;;;;17658:166;;;;;;;;;;-1:-1:-1;17658:166:0;;;;;:::i;:::-;;:::i;3533:151::-;;;;;;;;;;-1:-1:-1;3533:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3649:18:0;;;3622:7;3649:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3533:151;12728:33;;;;;;;;;;;;;;;;12952:30;;;;;;;;;;;;;;;;1011:201;;;;;;;;;;-1:-1:-1;1011:201:0;;;;;:::i;:::-;;:::i;13134:31::-;;;;;;;;;;;;;;;;12768:24;;;;;;;;;;;;;;;;2771:100;2825:13;2858:5;2851:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2771:100;:::o;3692:169::-;3775:4;3792:39;303:10;3815:7;3824:6;3792:8;:39::i;:::-;-1:-1:-1;3849:4:0;3692:169;;;;:::o;16455:100::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;;;;;;;;;16501:13:::1;:20:::0;;-1:-1:-1;;16532:15:0;;;;;16455:100::o;3869:492::-;4009:4;4026:36;4036:6;4044:9;4055:6;4026:9;:36::i;:::-;-1:-1:-1;;;;;4102:19:0;;4075:24;4102:19;;;:11;:19;;;;;;;;303:10;4102:33;;;;;;;;4154:26;;;;4146:79;;;;-1:-1:-1;;;4146:79:0;;6345:2:1;4146:79:0;;;6327:21:1;6384:2;6364:18;;;6357:30;6423:34;6403:18;;;6396:62;-1:-1:-1;;;6474:18:1;;;6467:38;6522:19;;4146:79:0;6143:404:1;4146:79:0;4261:57;4270:6;303:10;4311:6;4292:16;:25;4261:8;:57::i;:::-;-1:-1:-1;4349:4:0;;3869:492;-1:-1:-1;;;;3869:492:0:o;16563:849::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;16879:34:::1;::::0;;::::1;:15;:34:::0;;;16924:24;;::::1;:10;:24:::0;;;16959:38;;::::1;:17;:38:::0;;;17008:30;;::::1;:13;:30:::0;;;;16959:38;17064:28:::1;::::0;16924:24;17064:28:::1;:::i;:::-;:48;;;;:::i;:::-;:64;;;;:::i;:::-;17049:12;:79:::0;17141:36:::1;::::0;;::::1;:16;:36:::0;;;17188:26;;::::1;:11;:26:::0;;;17225:40;;::::1;:18;:40:::0;;;17277:32;;::::1;:14;:32:::0;;;;17225:40;17336:30:::1;::::0;17188:26;17336:30:::1;:::i;:::-;:51;;;;:::i;:::-;:68;;;;:::i;:::-;17320:13;:84:::0;-1:-1:-1;;;;;;;;16563:849:0:o;4369:215::-;303:10;4457:4;4506:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4506:34:0;;;;;;;;;;4457:4;;4474:80;;4497:7;;4506:47;;4543:10;;4506:47;:::i;:::-;4474:8;:80::i;17550:100::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;17622:12:::1;:19:::0;;-1:-1:-1;;;;;;17622:19:0::1;-1:-1:-1::0;;;;;17622:19:0;;;::::1;::::0;;;::::1;::::0;;17550:100::o;900:103::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;965:30:::1;992:1;965:18;:30::i;:::-;900:103::o:0;18601:84::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;18664:8:::1;:13:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;18664:13:0;;::::1;::::0;;;::::1;::::0;;18601:84::o;17421:121::-;750:6;;17473:4;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;-1:-1:-1;17490:14:0::1;:22:::0;;-1:-1:-1;;17490:22:0::1;::::0;;;17421:121;:::o;18338:167::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18451:39:0;;;::::1;;::::0;;;:31:::1;:39:::0;;;;;:46;;-1:-1:-1;;18451:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18338:167::o;2879:104::-;2935:13;2968:7;2961:14;;;;;:::i;18883:304::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;19027:13:::1;::::0;-1:-1:-1;;;;;19019:21:0;;::::1;19027:13:::0;::::1;19019:21;;18997:128;;;::::0;-1:-1:-1;;;18997:128:0;;7019:2:1;18997:128:0::1;::::0;::::1;7001:21:1::0;7058:2;7038:18;;;7031:30;7097:34;7077:18;;;7070:62;7168:27;7148:18;;;7141:55;7213:19;;18997:128:0::1;6817:421:1::0;18997:128:0::1;19138:41;19167:4;19173:5;19138:28;:41::i;:::-;18883:304:::0;;:::o;4592:413::-;303:10;4685:4;4729:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4729:34:0;;;;;;;;;;4782:35;;;;4774:85;;;;-1:-1:-1;;;4774:85:0;;7445:2:1;4774:85:0;;;7427:21:1;7484:2;7464:18;;;7457:30;7523:34;7503:18;;;7496:62;-1:-1:-1;;;7574:18:1;;;7567:35;7619:19;;4774:85:0;7243:401:1;4774:85:0;4895:67;303:10;4918:7;4946:15;4927:16;:34;4895:8;:67::i;:::-;-1:-1:-1;4993:4:0;;4592:413;-1:-1:-1;;;4592:413:0:o;3350:175::-;3436:4;3453:42;303:10;3477:9;3488:6;3453:9;:42::i;18693:182::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18778:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;18778:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18833:34;;1212:41:1;;;18833:34:0::1;::::0;1185:18:1;18833:34:0::1;;;;;;;18693:182:::0;;:::o;24111:622::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;24166:15:::1;:80:::0;;-1:-1:-1;;;;;;24166:80:0::1;24203:42;24166:80:::0;;::::1;::::0;;;24257:68:::1;::::0;24274:4:::1;::::0;24309:14:::1;24257:8;:68::i;:::-;24370:15;;;;;;;;;-1:-1:-1::0;;;;;24370:15:0::1;-1:-1:-1::0;;;;;24370:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24352:55:0::1;;24416:4;24423:15;;;;;;;;;-1:-1:-1::0;;;;;24423:15:0::1;-1:-1:-1::0;;;;;24423:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24352:94;::::0;-1:-1:-1;;;;;;24352:94:0::1;::::0;;;;;;-1:-1:-1;;;;;8135:15:1;;;24352:94:0::1;::::0;::::1;8117:34:1::0;8187:15;;8167:18;;;8160:43;8052:18;;24352:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24336:13;:110:::0;;-1:-1:-1;;;;;24336:110:0;;::::1;-1:-1:-1::0;;;;;;24336:110:0;;::::1;;::::0;;24457:15:::1;::::0;::::1;:31;24496:21;24527:4;24533:24;24527:4:::0;-1:-1:-1;;;;;3316:18:0;3289:7;3316:18;;;;;;;;;;;;3215:127;24533:24:::1;24558:1;24560::::0;24562:7:::1;750:6:::0;;-1:-1:-1;;;;;750:6:0;;677:87;24562:7:::1;24570:15;24457:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24604:13:0::1;::::0;24635:15:::1;::::0;24597:71:::1;::::0;-1:-1:-1;;;24597:71:0;;-1:-1:-1;;;;;24635:15:0;;::::1;24597:71;::::0;::::1;9311:51:1::0;-1:-1:-1;;9378:18:1;;;9371:34;24604:13:0;::::1;::::0;-1:-1:-1;24597:29:0::1;::::0;9284:18:1;;24597:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;24679:13:0::1;:20:::0;;-1:-1:-1;;24710:15:0;;;;;24111:622::o;17832:497::-;750:6;;17940:4;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;18019:6:::1;17998:13;3187:12:::0;;;3099:108;17998:13:::1;:17;::::0;18014:1:::1;17998:17;:::i;:::-;17997:28;;;;:::i;:::-;17984:9;:41;;17962:144;;;::::0;-1:-1:-1;;;17962:144:0;;10263:2:1;17962:144:0::1;::::0;::::1;10245:21:1::0;10302:2;10282:18;;;10275:30;10341:34;10321:18;;;10314:62;-1:-1:-1;;;10392:18:1;;;10385:51;10453:19;;17962:144:0::1;10061:417:1::0;17962:144:0::1;18174:4;18153:13;3187:12:::0;;;3099:108;18153:13:::1;:17;::::0;18169:1:::1;18153:17;:::i;:::-;18152:26;;;;:::i;:::-;18139:9;:39;;18117:141;;;::::0;-1:-1:-1;;;18117:141:0;;10685:2:1;18117:141:0::1;::::0;::::1;10667:21:1::0;10724:2;10704:18;;;10697:30;10763:34;10743:18;;;10736:62;-1:-1:-1;;;10814:18:1;;;10807:50;10874:19;;18117:141:0::1;10483:416:1::0;18117:141:0::1;-1:-1:-1::0;18269:18:0::1;:30:::0;;;18317:4:::1;883:1;17832:497:::0;;;:::o;17658:166::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;17748:31:::1;::::0;;::::1;:20;:31:::0;17791:24:::1;:9;:24:::0;17658:166::o;1011:201::-;750:6;;-1:-1:-1;;;;;750:6:0;303:10;812:23;804:68;;;;-1:-1:-1;;;804:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1100:22:0;::::1;1092:73;;;::::0;-1:-1:-1;;;1092:73:0;;11106:2:1;1092:73:0::1;::::0;::::1;11088:21:1::0;11145:2;11125:18;;;11118:30;11184:34;11164:18;;;11157:62;-1:-1:-1;;;11235:18:1;;;11228:36;11281:19;;1092:73:0::1;10904:402:1::0;1092:73:0::1;1176:28;1195:8;1176:18;:28::i;:::-;1011:201:::0;:::o;6760:380::-;-1:-1:-1;;;;;6896:19:0;;6888:68;;;;-1:-1:-1;;;6888:68:0;;11513:2:1;6888:68:0;;;11495:21:1;11552:2;11532:18;;;11525:30;11591:34;11571:18;;;11564:62;-1:-1:-1;;;11642:18:1;;;11635:34;11686:19;;6888:68:0;11311:400:1;6888:68:0;-1:-1:-1;;;;;6975:21:0;;6967:68;;;;-1:-1:-1;;;6967:68:0;;11918:2:1;6967:68:0;;;11900:21:1;11957:2;11937:18;;;11930:30;11996:34;11976:18;;;11969:62;-1:-1:-1;;;12047:18:1;;;12040:32;12089:19;;6967:68:0;11716:398:1;6967:68:0;-1:-1:-1;;;;;7048:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7100:32;;2105:25:1;;;7100:32:0;;2078:18:1;7100:32:0;;;;;;;6760:380;;;:::o;19525:4074::-;-1:-1:-1;;;;;19657:18:0;;19649:68;;;;-1:-1:-1;;;19649:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19736:16:0;;19728:64;;;;-1:-1:-1;;;19728:64:0;;;;;;;:::i;:::-;19809:11;19805:93;;19837:28;19853:4;19859:2;19863:1;19837:15;:28::i;:::-;19525:4074;;;:::o;19805:93::-;19914:14;;;;19910:1694;;;750:6;;-1:-1:-1;;;;;19967:15:0;;;750:6;;19967:15;;;;:49;;-1:-1:-1;750:6:0;;-1:-1:-1;;;;;20003:13:0;;;750:6;;20003:13;;19967:49;:86;;;;-1:-1:-1;;;;;;20037:16:0;;;;19967:86;:128;;;;-1:-1:-1;;;;;;20074:21:0;;20088:6;20074:21;;19967:128;:158;;;;-1:-1:-1;20117:8:0;;-1:-1:-1;;;20117:8:0;;;;20116:9;19967:158;19945:1648;;;20165:13;;;;;;;20160:223;;-1:-1:-1;;;;;20237:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;20266:23:0;;;;;;:19;:23;;;;;;;;20237:52;20203:160;;;;-1:-1:-1;;;20203:160:0;;13131:2:1;20203:160:0;;;13113:21:1;13170:2;13150:18;;;13143:30;-1:-1:-1;;;13189:18:1;;;13182:52;13251:18;;20203:160:0;12929:346:1;20203:160:0;-1:-1:-1;;;;;20457:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;20514:35:0;;;;;;:31;:35;;;;;;;;20513:36;20457:92;20431:1147;;;20636:20;;20626:6;:30;;20592:169;;;;-1:-1:-1;;;20592:169:0;;13482:2:1;20592:169:0;;;13464:21:1;13521:2;13501:18;;;13494:30;13560:34;13540:18;;;13533:62;-1:-1:-1;;;13611:18:1;;;13604:51;13672:19;;20592:169:0;13280:417:1;20592:169:0;20844:9;;-1:-1:-1;;;;;3316:18:0;;3289:7;3316:18;;;;;;;;;;;20818:22;;:6;:22;:::i;:::-;:35;;20784:140;;;;-1:-1:-1;;;20784:140:0;;13904:2:1;20784:140:0;;;13886:21:1;13943:2;13923:18;;;13916:30;-1:-1:-1;;;13962:18:1;;;13955:49;14021:18;;20784:140:0;13702:343:1;20784:140:0;20431:1147;;;-1:-1:-1;;;;;21022:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;21077:37:0;;;;;;:31;:37;;;;;;;;21076:38;21022:92;20996:582;;;21201:20;;21191:6;:30;;21157:170;;;;-1:-1:-1;;;21157:170:0;;14252:2:1;21157:170:0;;;14234:21:1;14291:2;14271:18;;;14264:30;14330:34;14310:18;;;14303:62;-1:-1:-1;;;14381:18:1;;;14374:52;14443:19;;21157:170:0;14050:418:1;20996:582:0;-1:-1:-1;;;;;21358:35:0;;;;;;:31;:35;;;;;;;;21353:225;;21478:9;;-1:-1:-1;;;;;3316:18:0;;3289:7;3316:18;;;;;;;;;;;21452:22;;:6;:22;:::i;:::-;:35;;21418:140;;;;-1:-1:-1;;;21418:140:0;;13904:2:1;21418:140:0;;;13886:21:1;13943:2;13923:18;;;13916:30;-1:-1:-1;;;13962:18:1;;;13955:49;14021:18;;21418:140:0;13702:343:1;21418:140:0;21665:4;21616:28;3316:18;;;;;;;;;;;21723;;21699:42;;;;;;;21772:32;;-1:-1:-1;21796:8:0;;;;;;;21772:32;:58;;;;-1:-1:-1;21822:8:0;;-1:-1:-1;;;21822:8:0;;;;21821:9;21772:58;:107;;;;-1:-1:-1;;;;;;21848:31:0;;;;;;:25;:31;;;;;;;;21847:32;21772:107;:150;;;;-1:-1:-1;;;;;;21897:25:0;;;;;;:19;:25;;;;;;;;21896:26;21772:150;:191;;;;-1:-1:-1;;;;;;21940:23:0;;;;;;:19;:23;;;;;;;;21939:24;21772:191;21754:325;;;21990:8;:15;;-1:-1:-1;;;;21990:15:0;-1:-1:-1;;;21990:15:0;;;22022:12;:10;:12::i;:::-;22051:8;:16;;-1:-1:-1;;;;22051:16:0;;;21754:325;22107:8;;-1:-1:-1;;;;;22217:25:0;;22091:12;22217:25;;;:19;:25;;;;;;22107:8;-1:-1:-1;;;22107:8:0;;;;;22106:9;;22217:25;;:52;;-1:-1:-1;;;;;;22246:23:0;;;;;;:19;:23;;;;;;;;22217:52;22213:100;;;-1:-1:-1;22296:5:0;22213:100;22325:12;22430:7;22426:1120;;;-1:-1:-1;;;;;22482:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;22531:1;22515:13;;:17;22482:50;22478:919;;;22585:3;22569:13;;22560:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;22553:35;;22654:13;;22634:16;;22627:4;:23;;;;:::i;:::-;22626:41;;;;:::i;:::-;22607:15;;:60;;;;;;;:::i;:::-;;;;-1:-1:-1;;22723:13:0;;22708:11;;22701:18;;:4;:18;:::i;:::-;22700:36;;;;:::i;:::-;22686:10;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;22808:13:0;;22786:18;;22779:25;;:4;:25;:::i;:::-;22778:43;;;;:::i;:::-;22757:17;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;22885:13:0;;22867:14;;22860:21;;:4;:21;:::i;:::-;22859:39;;;;:::i;:::-;22842:13;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;22478:919:0;;-1:-1:-1;22478:919:0;;-1:-1:-1;;;;;22974:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;23024:1;23009:12;;:16;22974:51;22970:427;;;23077:3;23062:12;;23053:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;23046:34;;23145:12;;23126:15;;23119:4;:22;;;;:::i;:::-;23118:39;;;;:::i;:::-;23099:15;;:58;;;;;;;:::i;:::-;;;;-1:-1:-1;;23212:12:0;;23198:10;;23191:17;;:4;:17;:::i;:::-;23190:34;;;;:::i;:::-;23176:10;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;23293:12:0;;23272:17;;23265:24;;:4;:24;:::i;:::-;23264:41;;;;:::i;:::-;23243:17;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;23367:13:0;;23350;;23343:20;;:4;:20;:::i;:::-;23342:38;;;;:::i;:::-;23325:13;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;22970:427:0;23417:8;;23413:91;;23446:42;23462:4;23476;23483;23446:15;:42::i;:::-;23520:14;23530:4;23520:14;;:::i;:::-;;;22426:1120;23558:33;23574:4;23580:2;23584:6;23558:15;:33::i;:::-;19638:3961;;;;19525:4074;;;:::o;1218:191::-;1311:6;;;-1:-1:-1;;;;;1328:17:0;;;-1:-1:-1;;;;;;1328:17:0;;;;;;;1361:40;;1311:6;;;1328:17;1311:6;;1361:40;;1292:16;;1361:40;1281:128;1218:191;:::o;19195:188::-;-1:-1:-1;;;;;19278:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;19278:39:0;;;;;;;;;;19335:40;;19278:39;;:31;19335:40;;;19195:188;;:::o;5013:733::-;-1:-1:-1;;;;;5153:20:0;;5145:70;;;;-1:-1:-1;;;5145:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5234:23:0;;5226:71;;;;-1:-1:-1;;;5226:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5394:17:0;;5370:21;5394:17;;;;;;;;;;;5430:23;;;;5422:74;;;;-1:-1:-1;;;5422:74:0;;14805:2:1;5422:74:0;;;14787:21:1;14844:2;14824:18;;;14817:30;14883:34;14863:18;;;14856:62;-1:-1:-1;;;14934:18:1;;;14927:36;14980:19;;5422:74:0;14603:402:1;5422:74:0;-1:-1:-1;;;;;5532:17:0;;;:9;:17;;;;;;;;;;;5552:22;;;5532:42;;5596:20;;;;;;;;:30;;5568:6;;5532:9;5596:30;;5568:6;;5596:30;:::i;:::-;;;;;;;;5661:9;-1:-1:-1;;;;;5644:35:0;5653:6;-1:-1:-1;;;;;5644:35:0;;5672:6;5644:35;;;;2105:25:1;;2093:2;2078:18;;1959:177;5644:35:0;;;;;;;;5134:612;5013:733;;;:::o;25280:1883::-;25365:4;25321:23;3316:18;;;;;;;;;;;25321:50;;25382:25;25461:13;;25441:17;;25428:10;;25410:15;;:28;;;;:::i;:::-;:48;;;;:::i;:::-;:64;;;;:::i;:::-;25382:92;-1:-1:-1;25485:12:0;25514:20;;;:46;;-1:-1:-1;25538:22:0;;25514:46;25510:85;;;25577:7;;;25280:1883::o;25510:85::-;25629:18;;:23;;25650:2;25629:23;:::i;:::-;25611:15;:41;25607:115;;;25687:18;;:23;;25708:2;25687:23;:::i;:::-;25669:41;;25607:115;25783:26;25870:1;25850:17;25831:15;;25813;:33;;;;:::i;:::-;25812:55;;;;:::i;:::-;:59;;;;:::i;:::-;25783:88;-1:-1:-1;25882:26:0;25911:36;25783:88;25911:15;:36;:::i;:::-;25882:65;-1:-1:-1;25988:21:0;26022:30;25882:65;26022:10;:30::i;:::-;26065:18;26086:41;26110:17;26086:21;:41;:::i;:::-;26065:62;;26141:15;26185:17;26172:10;;26159;:23;;;;:::i;:::-;:43;;;;:::i;:::-;26141:61;;26213:22;26271:17;26251;;26238:10;:30;;;;:::i;:::-;:50;;;;:::i;:::-;26213:75;;26299:18;26349:17;26333:13;;26320:10;:26;;;;:::i;:::-;:46;;;;:::i;:::-;26299:67;-1:-1:-1;26379:20:0;26299:67;26425:14;26402:20;26415:7;26402:10;:20;:::i;:::-;:37;;;;:::i;:::-;:50;;;;:::i;:::-;26483:1;26465:15;:19;;;26495:10;:14;;;26520:17;:21;;;26553:13;:17;26379:73;-1:-1:-1;26588:22:0;;;;;:42;;;26629:1;26614:12;:16;26588:42;26584:275;;;26647:46;26660:18;26680:12;26647;:46::i;:::-;26713:134;;;15212:25:1;;;15268:2;15253:18;;15246:34;;;15296:18;;;15289:34;;;26713:134:0;;15200:2:1;15185:18;26713:134:0;;;;;;;26584:275;26949:12;;26941:46;;-1:-1:-1;;;;;26949:12:0;;;;26975:7;;26941:46;;;;26975:7;26949:12;26941:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27020:15:0;;27012:49;;26927:60;;-1:-1:-1;;;;;;27020:15:0;;27049:7;;27012:49;;;;27049:7;27020:15;27012:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27096:19:0;;27088:67;;26998:63;;-1:-1:-1;;;;;;27096:19:0;;27129:21;;27088:67;;;;27129:21;27096:19;27088:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;25280:1883:0:o;23607:496::-;23691:16;;;23705:1;23691:16;;;;;;;;23667:21;;23691:16;;;;;;;;;;-1:-1:-1;23691:16:0;23667:40;;23736:4;23718;23723:1;23718:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23718:23:0;;;:7;;;;;;;;;;:23;;;;23762:15;;:22;;;-1:-1:-1;;;23762:22:0;;;;:15;;;;;:20;;:22;;;;;23718:7;;23762:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23752:4;23757:1;23752:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23752:32:0;;;:7;;;;;;;;;:32;23829:15;;23797:62;;23814:4;;23829:15;23847:11;23797:8;:62::i;:::-;23898:15;;:197;;-1:-1:-1;;;23898:197:0;;-1:-1:-1;;;;;23898:15:0;;;;:66;;:197;;23979:11;;23898:15;;24022:4;;24049;;24069:15;;23898:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23656:447;23607:496;:::o;24747:525::-;24927:15;;24895:62;;24912:4;;-1:-1:-1;;;;;24927:15:0;24945:11;24895:8;:62::i;:::-;25000:15;;25204:19;;25000:264;;-1:-1:-1;;;25000:264:0;;-1:-1:-1;;;;;25000:15:0;;;;:31;;25039:9;;25000:264;;25072:4;;25092:11;;25000:15;;;;25204:19;;25238:15;;25000:264;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24747:525;;:::o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1472:247::-;1531:6;1584:2;1572:9;1563:7;1559:23;1555:32;1552:52;;;1600:1;1597;1590:12;1552:52;1639:9;1626:23;1658:31;1683:5;1658:31;:::i;:::-;1708:5;1472:247;-1:-1:-1;;;1472:247:1:o;2141:456::-;2218:6;2226;2234;2287:2;2275:9;2266:7;2262:23;2258:32;2255:52;;;2303:1;2300;2293:12;2255:52;2342:9;2329:23;2361:31;2386:5;2361:31;:::i;:::-;2411:5;-1:-1:-1;2468:2:1;2453:18;;2440:32;2481:33;2440:32;2481:33;:::i;:::-;2141:456;;2533:7;;-1:-1:-1;;;2587:2:1;2572:18;;;;2559:32;;2141:456::o;2791:156::-;2857:20;;2917:4;2906:16;;2896:27;;2886:55;;2937:1;2934;2927:12;2952:677;3058:6;3066;3074;3082;3090;3098;3106;3114;3167:3;3155:9;3146:7;3142:23;3138:33;3135:53;;;3184:1;3181;3174:12;3135:53;3207:27;3224:9;3207:27;:::i;:::-;3197:37;;3253:36;3285:2;3274:9;3270:18;3253:36;:::i;:::-;3243:46;;3308:36;3340:2;3329:9;3325:18;3308:36;:::i;:::-;3298:46;;3363:36;3395:2;3384:9;3380:18;3363:36;:::i;:::-;3353:46;;3418:37;3450:3;3439:9;3435:19;3418:37;:::i;:::-;3408:47;;3474:37;3506:3;3495:9;3491:19;3474:37;:::i;:::-;3464:47;;3530:37;3562:3;3551:9;3547:19;3530:37;:::i;:::-;3520:47;;3586:37;3618:3;3607:9;3603:19;3586:37;:::i;:::-;3576:47;;2952:677;;;;;;;;;;;:::o;3634:118::-;3720:5;3713:13;3706:21;3699:5;3696:32;3686:60;;3742:1;3739;3732:12;3757:241;3813:6;3866:2;3854:9;3845:7;3841:23;3837:32;3834:52;;;3882:1;3879;3872:12;3834:52;3921:9;3908:23;3940:28;3962:5;3940:28;:::i;4003:382::-;4068:6;4076;4129:2;4117:9;4108:7;4104:23;4100:32;4097:52;;;4145:1;4142;4135:12;4097:52;4184:9;4171:23;4203:31;4228:5;4203:31;:::i;:::-;4253:5;-1:-1:-1;4310:2:1;4295:18;;4282:32;4323:30;4282:32;4323:30;:::i;:::-;4372:7;4362:17;;;4003:382;;;;;:::o;4390:180::-;4449:6;4502:2;4490:9;4481:7;4477:23;4473:32;4470:52;;;4518:1;4515;4508:12;4470:52;-1:-1:-1;4541:23:1;;4390:180;-1:-1:-1;4390:180:1:o;4575:163::-;4642:20;;4702:10;4691:22;;4681:33;;4671:61;;4728:1;4725;4718:12;4743:256;4809:6;4817;4870:2;4858:9;4849:7;4845:23;4841:32;4838:52;;;4886:1;4883;4876:12;4838:52;4909:28;4927:9;4909:28;:::i;:::-;4899:38;;4956:37;4989:2;4978:9;4974:18;4956:37;:::i;:::-;4946:47;;4743:256;;;;;:::o;5004:388::-;5072:6;5080;5133:2;5121:9;5112:7;5108:23;5104:32;5101:52;;;5149:1;5146;5139:12;5101:52;5188:9;5175:23;5207:31;5232:5;5207:31;:::i;:::-;5257:5;-1:-1:-1;5314:2:1;5299:18;;5286:32;5327:33;5286:32;5327:33;:::i;5397:380::-;5476:1;5472:12;;;;5519;;;5540:61;;5594:4;5586:6;5582:17;5572:27;;5540:61;5647:2;5639:6;5636:14;5616:18;5613:38;5610:161;;;5693:10;5688:3;5684:20;5681:1;5674:31;5728:4;5725:1;5718:15;5756:4;5753:1;5746:15;5610:161;;5397:380;;;:::o;5782:356::-;5984:2;5966:21;;;6003:18;;;5996:30;6062:34;6057:2;6042:18;;6035:62;6129:2;6114:18;;5782:356::o;6552:127::-;6613:10;6608:3;6604:20;6601:1;6594:31;6644:4;6641:1;6634:15;6668:4;6665:1;6658:15;6684:128;6724:3;6755:1;6751:6;6748:1;6745:13;6742:39;;;6761:18;;:::i;:::-;-1:-1:-1;6797:9:1;;6684:128::o;7649:251::-;7719:6;7772:2;7760:9;7751:7;7747:23;7743:32;7740:52;;;7788:1;7785;7778:12;7740:52;7820:9;7814:16;7839:31;7864:5;7839:31;:::i;8214:607::-;-1:-1:-1;;;;;8573:15:1;;;8555:34;;8620:2;8605:18;;8598:34;;;;8663:2;8648:18;;8641:34;;;;8706:2;8691:18;;8684:34;;;;8755:15;;;8749:3;8734:19;;8727:44;8535:3;8787:19;;8780:35;;;;8504:3;8489:19;;8214:607::o;8826:306::-;8914:6;8922;8930;8983:2;8971:9;8962:7;8958:23;8954:32;8951:52;;;8999:1;8996;8989:12;8951:52;9028:9;9022:16;9012:26;;9078:2;9067:9;9063:18;9057:25;9047:35;;9122:2;9111:9;9107:18;9101:25;9091:35;;8826:306;;;;;:::o;9416:245::-;9483:6;9536:2;9524:9;9515:7;9511:23;9507:32;9504:52;;;9552:1;9549;9542:12;9504:52;9584:9;9578:16;9603:28;9625:5;9603:28;:::i;9666:168::-;9706:7;9772:1;9768;9764:6;9760:14;9757:1;9754:21;9749:1;9742:9;9735:17;9731:45;9728:71;;;9779:18;;:::i;:::-;-1:-1:-1;9819:9:1;;9666:168::o;9839:217::-;9879:1;9905;9895:132;;9949:10;9944:3;9940:20;9937:1;9930:31;9984:4;9981:1;9974:15;10012:4;10009:1;10002:15;9895:132;-1:-1:-1;10041:9:1;;9839:217::o;12119:401::-;12321:2;12303:21;;;12360:2;12340:18;;;12333:30;12399:34;12394:2;12379:18;;12372:62;-1:-1:-1;;;12465:2:1;12450:18;;12443:35;12510:3;12495:19;;12119:401::o;12525:399::-;12727:2;12709:21;;;12766:2;12746:18;;;12739:30;12805:34;12800:2;12785:18;;12778:62;-1:-1:-1;;;12871:2:1;12856:18;;12849:33;12914:3;12899:19;;12525:399::o;14473:125::-;14513:4;14541:1;14538;14535:8;14532:34;;;14546:18;;:::i;:::-;-1:-1:-1;14583:9:1;;14473:125::o;15676:127::-;15737:10;15732:3;15728:20;15725:1;15718:31;15768:4;15765:1;15758:15;15792:4;15789:1;15782:15;15808:980;16070:4;16118:3;16107:9;16103:19;16149:6;16138:9;16131:25;16175:2;16213:6;16208:2;16197:9;16193:18;16186:34;16256:3;16251:2;16240:9;16236:18;16229:31;16280:6;16315;16309:13;16346:6;16338;16331:22;16384:3;16373:9;16369:19;16362:26;;16423:2;16415:6;16411:15;16397:29;;16444:1;16454:195;16468:6;16465:1;16462:13;16454:195;;;16533:13;;-1:-1:-1;;;;;16529:39:1;16517:52;;16624:15;;;;16589:12;;;;16565:1;16483:9;16454:195;;;-1:-1:-1;;;;;;;16705:32:1;;;;16700:2;16685:18;;16678:60;-1:-1:-1;;;16769:3:1;16754:19;16747:35;16666:3;15808:980;-1:-1:-1;;;15808:980:1:o

Swarm Source

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