ETH Price: $3,443.82 (-2.21%)
Gas: 3 Gwei

Token

LET IT RIP (RIP)
 

Overview

Max Total Supply

1,000,000,000 RIP

Holders

132

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.205713760279212857 RIP

Value
$0.00
0x2a0b46cf0e8ac3b56605b37457a7e6a421490b65
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:
LETITRIP

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-15
*/

/**
 * 
 * Twitter: https://twitter.com/LetItRip0x
 * Web: https://www.letitrip.xyz/
 * 
 */

// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;

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

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

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

contract LETITRIP is ERC20, Ownable {

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

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address payable operationsAddress;
    address payable marketingAddress;

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

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

    /******************/

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

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

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event EnabledTrading();
    event RemovedLimits();
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event UpdatedMaxSellAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event MaxTransactionExclusion(address _address, bool excluded);
    event OwnerForcedSwapBack(uint256 timestamp);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("LET IT RIP", "RIP") {

        address newOwner = msg.sender;

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxBuyAmount = totalSupply * 1 / 100;
        maxSellAmount = totalSupply * 1 / 100;
        maxWalletAmount = totalSupply * 1 / 100;
        swapTokensAtAmount = totalSupply * 1 / 1000;

        buyOperationsFee = 25;
        buyLiquidityFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;

        sellOperationsFee = 35;
        sellLiquidityFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;

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

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

        operationsAddress = payable(0xC81C355B1A520De32711e331Ae331Ae574eE73C1);
        marketingAddress = payable(0x799883A76145A3a99d440fc191671029C1B39707);

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

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

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

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() / 100)/1e18, "Cannot set max sell amount lower than 1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

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

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
        swapTokensAtAmount = newAmount;
    }

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;
    }

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

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

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

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
    
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

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

        uint256 fees = 0;
        // 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;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

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

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

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

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

        bool success;

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

        swapTokensForEth(contractBalance - liquidityTokens);

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

        uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations;

        tokensForLiquidity = 0;
        tokensForOperations = 0;

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

        if(address(this).balance > 0){
            uint256 ethMarketing = (85 * address(this).balance) / 100;
            (success,) = address(marketingAddress).call{value: ethMarketing}("");
            (success,) = address(operationsAddress).call{value: address(this).balance}("");
        }
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

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

    function setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress cannot be 0");
        operationsAddress = payable(_operationsAddress);
    }

    function setMarketingAddress(address _marketingAddress) external onlyOwner {
        require(_marketingAddress != address(0), "_marketingAddress cannot be 0");
        marketingAddress = payable(_marketingAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external {
        require(balanceOf(address(this)) >= 0, "No tokens to swap");
        require(msg.sender == operationsAddress || msg.sender == marketingAddress, "Not authorised");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }
}

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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","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":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600d805462ffffff60a01b1916600160a01b1790553480156200002657600080fd5b506040518060400160405280600a81526020016904c4554204954205249560b41b8152506040518060400160405280600381526020016205249560ec1b815250816003908162000077919062000815565b50600462000086828262000815565b50505060006200009b6200040d60201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620034bc833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000142573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001689190620008e1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001dc9190620008e1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002509190620008e1565b600a80546001600160a01b0319166001600160a01b039290921691821790556200027c90600162000411565b600a5462000295906001600160a01b0316600162000474565b6b033b2e3c9fd0803ce80000006064620002b182600162000929565b620002bd919062000949565b6006556064620002cf82600162000929565b620002db919062000949565b6007556064620002ed82600162000929565b620002f9919062000949565b6008556103e86200030c82600162000929565b62000318919062000949565b600b556019600f8190556000601081905562000334916200096c565b600e55602360128190556000601381905562000350916200096c565b6011556200036083600162000411565b6200036d30600162000411565b6200037c61dead600162000411565b62000389836001620004e0565b62000396306001620004e0565b620003a561dead6001620004e0565b600c80546001600160a01b031990811673c81c355b1a520de32711e331ae331ae574ee73c117909155600d805490911673799883a76145a3a99d440fc191671029c1b39707179055620003f983826200058e565b620004048362000673565b50505062000982565b3390565b6001600160a01b038216600081815260176020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601860205260409020805460ff1916821515179055620004a4828262000411565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031633146200052f5760405162461bcd60e51b815260206004820181905260248201526000805160206200349c83398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005e65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000526565b8060026000828254620005fa91906200096c565b90915550506001600160a01b03821660009081526020819052604081208054839290620006299084906200096c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006be5760405162461bcd60e51b815260206004820181905260248201526000805160206200349c833981519152604482015260640162000526565b6001600160a01b038116620007255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000526565b6005546040516001600160a01b03808416921690600080516020620034bc83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200079b57607f821691505b602082108103620007bc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200081057600081815260208120601f850160051c81016020861015620007eb5750805b601f850160051c820191505b818110156200080c57828155600101620007f7565b5050505b505050565b81516001600160401b0381111562000831576200083162000770565b620008498162000842845462000786565b84620007c2565b602080601f831160018114620008815760008415620008685750858301515b600019600386901b1c1916600185901b1785556200080c565b600085815260208120601f198616915b82811015620008b25788860151825594840194600190910190840162000891565b5085821015620008d15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008f457600080fd5b81516001600160a01b03811681146200090c57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000943576200094362000913565b92915050565b6000826200096757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000943576200094362000913565b612b0a80620009926000396000f3fe6080604052600436106102b25760003560e01c80637571336a11610175578063bbc0c742116100dc578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610850578063f5648a4f14610870578063f637434214610885578063fb002c971461089b57600080fd5b8063dd62ed3e146107de578063e2f4560514610824578063f11a24d31461083a57600080fd5b8063bbc0c74214610727578063c024666814610748578063c18bc19514610768578063d257b34f14610788578063d85ba063146107a8578063dc3f0d0f146107be57600080fd5b806395d89b411161012e57806395d89b411461066c5780639a7a23d614610681578063a457c2d7146106a1578063a9059cbb146106c1578063aa4bde28146106e1578063b62496f5146106f757600080fd5b80637571336a146105c35780638366e79a146105e357806388e765ff146106035780638a8c523c146106195780638da5cb5b1461062e578063906e9dd01461064c57600080fd5b8063499b83941161021957806366d602ae116101d257806366d602ae146105165780636a486a8e1461052c5780636ddd17131461054257806370a0823114610563578063715018a614610599578063751039fc146105ae57600080fd5b8063499b8394146104745780634a62bb65146104945780634f77f6c0146104b557806351f205e4146104cb5780635a139dd4146104e057806366ca9b83146104f657600080fd5b80631a8145bb1161026b5780631a8145bb146103c257806323b872dd146103d85780632be32b61146103f8578063313ce567146104185780633950935114610434578063452ed4f11461045457600080fd5b806302dbd8f8146102be57806306fdde03146102e05780630758d9241461030b578063095ea7b31461034357806310d5de531461037357806318160ddd146103a357600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102de6102d93660046126b9565b6108b1565b005b3480156102ec57600080fd5b506102f56108ff565b60405161030291906126db565b60405180910390f35b34801561031757600080fd5b5060095461032b906001600160a01b031681565b6040516001600160a01b039091168152602001610302565b34801561034f57600080fd5b5061036361035e366004612741565b610991565b6040519015158152602001610302565b34801561037f57600080fd5b5061036361038e36600461276d565b60176020526000908152604090205460ff1681565b3480156103af57600080fd5b506002545b604051908152602001610302565b3480156103ce57600080fd5b506103b460155481565b3480156103e457600080fd5b506103636103f3366004612791565b6109a8565b34801561040457600080fd5b506102de6104133660046127d2565b610a52565b34801561042457600080fd5b5060405160128152602001610302565b34801561044057600080fd5b5061036361044f366004612741565b610b51565b34801561046057600080fd5b50600a5461032b906001600160a01b031681565b34801561048057600080fd5b506102de61048f36600461276d565b610b8d565b3480156104a057600080fd5b50600d5461036390600160a01b900460ff1681565b3480156104c157600080fd5b506103b460125481565b3480156104d757600080fd5b506102de610c2f565b3480156104ec57600080fd5b506103b4600f5481565b34801561050257600080fd5b506102de6105113660046126b9565b610cf5565b34801561052257600080fd5b506103b460075481565b34801561053857600080fd5b506103b460115481565b34801561054e57600080fd5b50600d5461036390600160b01b900460ff1681565b34801561056f57600080fd5b506103b461057e36600461276d565b6001600160a01b031660009081526020819052604090205490565b3480156105a557600080fd5b506102de610d3a565b3480156105ba57600080fd5b506102de610dae565b3480156105cf57600080fd5b506102de6105de3660046127f9565b610e10565b3480156105ef57600080fd5b506103636105fe366004612832565b610ed8565b34801561060f57600080fd5b506103b460065481565b34801561062557600080fd5b506102de611089565b34801561063a57600080fd5b506005546001600160a01b031661032b565b34801561065857600080fd5b506102de61066736600461276d565b61114d565b34801561067857600080fd5b506102f56111ef565b34801561068d57600080fd5b506102de61069c3660046127f9565b6111fe565b3480156106ad57600080fd5b506103636106bc366004612741565b6112f2565b3480156106cd57600080fd5b506103636106dc366004612741565b61138b565b3480156106ed57600080fd5b506103b460085481565b34801561070357600080fd5b5061036361071236600461276d565b60186020526000908152604090205460ff1681565b34801561073357600080fd5b50600d5461036390600160a81b900460ff1681565b34801561075457600080fd5b506102de6107633660046127f9565b611398565b34801561077457600080fd5b506102de6107833660046127d2565b611421565b34801561079457600080fd5b506102de6107a33660046127d2565b61151c565b3480156107b457600080fd5b506103b4600e5481565b3480156107ca57600080fd5b506102de6107d93660046127d2565b611667565b3480156107ea57600080fd5b506103b46107f9366004612832565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561083057600080fd5b506103b4600b5481565b34801561084657600080fd5b506103b460105481565b34801561085c57600080fd5b506102de61086b36600461276d565b611760565b34801561087c57600080fd5b506102de61184b565b34801561089157600080fd5b506103b460135481565b3480156108a757600080fd5b506103b460145481565b6005546001600160a01b031633146108e45760405162461bcd60e51b81526004016108db90612860565b60405180910390fd5b601282905560138190556108f881836128ab565b6011555050565b60606003805461090e906128be565b80601f016020809104026020016040519081016040528092919081815260200182805461093a906128be565b80156109875780601f1061095c57610100808354040283529160200191610987565b820191906000526020600020905b81548152906001019060200180831161096a57829003601f168201915b5050505050905090565b600061099e3384846118c2565b5060015b92915050565b60006109b58484846119e6565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a3a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108db565b610a4785338584036118c2565b506001949350505050565b6005546001600160a01b03163314610a7c5760405162461bcd60e51b81526004016108db90612860565b670de0b6b3a76400006064610a9060025490565b610a9a91906128f8565b610aa491906128f8565b811015610b035760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152667468616e20312560c81b60648201526084016108db565b610b1581670de0b6b3a764000061291a565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161099e918590610b889086906128ab565b6118c2565b6005546001600160a01b03163314610bb75760405162461bcd60e51b81526004016108db90612860565b6001600160a01b038116610c0d5760405162461bcd60e51b815260206004820152601e60248201527f5f6f7065726174696f6e73416464726573732063616e6e6f742062652030000060448201526064016108db565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b306000908152602052600c546001600160a01b0316331480610c5b5750600d546001600160a01b031633145b610c985760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5cd95960921b60448201526064016108db565b600a805460ff60a01b1916600160a01b179055610cb36120ea565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610d1f5760405162461bcd60e51b81526004016108db90612860565b600f8290556010819055610d3381836128ab565b600e555050565b6005546001600160a01b03163314610d645760405162461bcd60e51b81526004016108db90612860565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610dd85760405162461bcd60e51b81526004016108db90612860565b600d805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610e3a5760405162461bcd60e51b81526004016108db90612860565b80610ead57600a546001600160a01b0390811690831603610ead5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016108db565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546000906001600160a01b03163314610f055760405162461bcd60e51b81526004016108db90612860565b6001600160a01b038316610f5b5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016108db565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190612931565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d919061294a565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146110b35760405162461bcd60e51b81526004016108db90612860565b600d54600160a81b900460ff161561110d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016108db565b600d805461ffff60a81b191661010160a81b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6005546001600160a01b031633146111775760405162461bcd60e51b81526004016108db90612860565b6001600160a01b0381166111cd5760405162461bcd60e51b815260206004820152601d60248201527f5f6d61726b6574696e67416464726573732063616e6e6f74206265203000000060448201526064016108db565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60606004805461090e906128be565b6005546001600160a01b031633146112285760405162461bcd60e51b81526004016108db90612860565b600a546001600160a01b03908116908316036112ac5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108db565b6112b682826122c7565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113745760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108db565b61138133858584036118c2565b5060019392505050565b600061099e3384846119e6565b6005546001600160a01b031633146113c25760405162461bcd60e51b81526004016108db90612860565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461144b5760405162461bcd60e51b81526004016108db90612860565b670de0b6b3a7640000606461145f60025490565b61146991906128f8565b61147391906128f8565b8110156114d55760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108db565b6114e781670de0b6b3a764000061291a565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610b46565b6005546001600160a01b031633146115465760405162461bcd60e51b81526004016108db90612860565b620186a061155360025490565b61155e90600161291a565b61156891906128f8565b8110156115d55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108db565b6103e86115e160025490565b6115ec90600161291a565b6115f691906128f8565b8111156116625760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b60648201526084016108db565b600b55565b6005546001600160a01b031633146116915760405162461bcd60e51b81526004016108db90612860565b670de0b6b3a764000060646116a560025490565b6116af91906128f8565b6116b991906128f8565b8110156117195760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015267207468616e20312560c01b60648201526084016108db565b61172b81670de0b6b3a764000061291a565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610b46565b6005546001600160a01b0316331461178a5760405162461bcd60e51b81526004016108db90612860565b6001600160a01b0381166117ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108db565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146118755760405162461bcd60e51b81526004016108db90612860565b604051600090339047908381818185875af1925050503d80600081146118b7576040519150601f19603f3d011682016040523d82523d6000602084013e6118bc565b606091505b50505050565b6001600160a01b0383166119245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108db565b6001600160a01b0382166119855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108db565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a0c5760405162461bcd60e51b81526004016108db90612967565b6001600160a01b038216611a325760405162461bcd60e51b81526004016108db906129ac565b60008111611a825760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016108db565b600d54600160a81b900460ff16611b17576001600160a01b03831660009081526016602052604090205460ff1680611ad257506001600160a01b03821660009081526016602052604090205460ff165b611b175760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108db565b600d54600160a01b900460ff1615611e26576005546001600160a01b03848116911614801590611b5557506005546001600160a01b03838116911614155b8015611b6957506001600160a01b03821615155b8015611b8057506001600160a01b03821661dead14155b8015611ba557506001600160a01b03831660009081526016602052604090205460ff16155b8015611bca57506001600160a01b03821660009081526016602052604090205460ff16155b15611e26576001600160a01b03831660009081526018602052604090205460ff168015611c1057506001600160a01b03821660009081526017602052604090205460ff16155b15611cec57600654811115611c785760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016108db565b6008546001600160a01b038316600090815260208190526040902054611c9e90836128ab565b1115611ce75760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108db565b611e26565b6001600160a01b03821660009081526018602052604090205460ff168015611d2d57506001600160a01b03831660009081526017602052604090205460ff16155b15611d9757600754811115611ce75760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016108db565b6001600160a01b03821660009081526017602052604090205460ff16611e26576008546001600160a01b038316600090815260208190526040902054611ddd90836128ab565b1115611e265760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108db565b30600090815260208190526040902054600b5481108015908190611e535750600d54600160b01b900460ff165b8015611e695750600a54600160a01b900460ff16155b8015611e8e57506001600160a01b03851660009081526018602052604090205460ff16155b8015611eb357506001600160a01b03851660009081526016602052604090205460ff16155b8015611ed857506001600160a01b03841660009081526016602052604090205460ff16155b15611f0657600a805460ff60a01b1916600160a01b179055611ef86120ea565b600a805460ff60a01b191690555b6001600160a01b03851660009081526016602052604090205460019060ff1680611f4857506001600160a01b03851660009081526016602052604090205460ff165b15611f51575060005b600081156120d6576001600160a01b03861660009081526018602052604090205460ff168015611f8357506000601154115b1561200b57606460115486611f98919061291a565b611fa291906128f8565b905060115460135482611fb5919061291a565b611fbf91906128f8565b60156000828254611fd091906128ab565b9091555050601154601254611fe5908361291a565b611fef91906128f8565b6014600082825461200091906128ab565b909155506120b89050565b6001600160a01b03871660009081526018602052604090205460ff16801561203557506000600e54115b156120b8576064600e548661204a919061291a565b61205491906128f8565b9050600e5460105482612067919061291a565b61207191906128f8565b6015600082825461208291906128ab565b9091555050600e54600f54612097908361291a565b6120a191906128f8565b601460008282546120b291906128ab565b90915550505b80156120c9576120c98730836122f5565b6120d381866129ef565b94505b6120e18787876122f5565b50505050505050565b306000908152602081905260408120549050600060145460155461210e91906128ab565b905081158061211b575080155b15612124575050565b600b5461213290600a61291a565b82111561214a57600b5461214790600a61291a565b91505b6000806002836015548661215e919061291a565b61216891906128f8565b61217291906128f8565b905061218661218182866129ef565b61244a565b6015544790819060009061219c906002906128f8565b6121a690876129ef565b6014546121b3908561291a565b6121bd91906128f8565b90506121c981836129ef565b60006015819055601455915083158015906121e45750600082115b156121f3576121f384836125a4565b47156120e1576000606461220847605561291a565b61221291906128f8565b600d546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114612260576040519150601f19603f3d011682016040523d82523d6000602084013e612265565b606091505b5050600c546040519197506001600160a01b0316904790600081818185875af1925050503d80600081146122b5576040519150601f19603f3d011682016040523d82523d6000602084013e6122ba565b606091505b5050505050505050505050565b6001600160a01b0382166000908152601860205260409020805460ff19168215151790556112b68282612656565b6001600160a01b03831661231b5760405162461bcd60e51b81526004016108db90612967565b6001600160a01b0382166123415760405162461bcd60e51b81526004016108db906129ac565b6001600160a01b038316600090815260208190526040902054818110156123b95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108db565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906123f09084906128ab565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161243c91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061247f5761247f612a02565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fc9190612a18565b8160018151811061250f5761250f612a02565b6001600160a01b03928316602091820292909201015260095461253591309116846118c2565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061256e908590600090869030904290600401612a35565b600060405180830381600087803b15801561258857600080fd5b505af115801561259c573d6000803e3d6000fd5b505050505050565b6009546125bc9030906001600160a01b0316846118c2565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561262a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061264f9190612aa6565b5050505050565b6001600160a01b038216600081815260176020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b600080604083850312156126cc57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612708578581018301518582016040015282016126ec565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461273e57600080fd5b50565b6000806040838503121561275457600080fd5b823561275f81612729565b946020939093013593505050565b60006020828403121561277f57600080fd5b813561278a81612729565b9392505050565b6000806000606084860312156127a657600080fd5b83356127b181612729565b925060208401356127c181612729565b929592945050506040919091013590565b6000602082840312156127e457600080fd5b5035919050565b801515811461273e57600080fd5b6000806040838503121561280c57600080fd5b823561281781612729565b91506020830135612827816127eb565b809150509250929050565b6000806040838503121561284557600080fd5b823561285081612729565b9150602083013561282781612729565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109a2576109a2612895565b600181811c908216806128d257607f821691505b6020821081036128f257634e487b7160e01b600052602260045260246000fd5b50919050565b60008261291557634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176109a2576109a2612895565b60006020828403121561294357600080fd5b5051919050565b60006020828403121561295c57600080fd5b815161278a816127eb565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109a2576109a2612895565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a2a57600080fd5b815161278a81612729565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a855784516001600160a01b031683529383019391830191600101612a60565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612abb57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203fe84c53c19c29316f3b1afb4a08887ce539609fe55d78a4d00de7862035782364736f6c634300081200334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80637571336a11610175578063bbc0c742116100dc578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610850578063f5648a4f14610870578063f637434214610885578063fb002c971461089b57600080fd5b8063dd62ed3e146107de578063e2f4560514610824578063f11a24d31461083a57600080fd5b8063bbc0c74214610727578063c024666814610748578063c18bc19514610768578063d257b34f14610788578063d85ba063146107a8578063dc3f0d0f146107be57600080fd5b806395d89b411161012e57806395d89b411461066c5780639a7a23d614610681578063a457c2d7146106a1578063a9059cbb146106c1578063aa4bde28146106e1578063b62496f5146106f757600080fd5b80637571336a146105c35780638366e79a146105e357806388e765ff146106035780638a8c523c146106195780638da5cb5b1461062e578063906e9dd01461064c57600080fd5b8063499b83941161021957806366d602ae116101d257806366d602ae146105165780636a486a8e1461052c5780636ddd17131461054257806370a0823114610563578063715018a614610599578063751039fc146105ae57600080fd5b8063499b8394146104745780634a62bb65146104945780634f77f6c0146104b557806351f205e4146104cb5780635a139dd4146104e057806366ca9b83146104f657600080fd5b80631a8145bb1161026b5780631a8145bb146103c257806323b872dd146103d85780632be32b61146103f8578063313ce567146104185780633950935114610434578063452ed4f11461045457600080fd5b806302dbd8f8146102be57806306fdde03146102e05780630758d9241461030b578063095ea7b31461034357806310d5de531461037357806318160ddd146103a357600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102de6102d93660046126b9565b6108b1565b005b3480156102ec57600080fd5b506102f56108ff565b60405161030291906126db565b60405180910390f35b34801561031757600080fd5b5060095461032b906001600160a01b031681565b6040516001600160a01b039091168152602001610302565b34801561034f57600080fd5b5061036361035e366004612741565b610991565b6040519015158152602001610302565b34801561037f57600080fd5b5061036361038e36600461276d565b60176020526000908152604090205460ff1681565b3480156103af57600080fd5b506002545b604051908152602001610302565b3480156103ce57600080fd5b506103b460155481565b3480156103e457600080fd5b506103636103f3366004612791565b6109a8565b34801561040457600080fd5b506102de6104133660046127d2565b610a52565b34801561042457600080fd5b5060405160128152602001610302565b34801561044057600080fd5b5061036361044f366004612741565b610b51565b34801561046057600080fd5b50600a5461032b906001600160a01b031681565b34801561048057600080fd5b506102de61048f36600461276d565b610b8d565b3480156104a057600080fd5b50600d5461036390600160a01b900460ff1681565b3480156104c157600080fd5b506103b460125481565b3480156104d757600080fd5b506102de610c2f565b3480156104ec57600080fd5b506103b4600f5481565b34801561050257600080fd5b506102de6105113660046126b9565b610cf5565b34801561052257600080fd5b506103b460075481565b34801561053857600080fd5b506103b460115481565b34801561054e57600080fd5b50600d5461036390600160b01b900460ff1681565b34801561056f57600080fd5b506103b461057e36600461276d565b6001600160a01b031660009081526020819052604090205490565b3480156105a557600080fd5b506102de610d3a565b3480156105ba57600080fd5b506102de610dae565b3480156105cf57600080fd5b506102de6105de3660046127f9565b610e10565b3480156105ef57600080fd5b506103636105fe366004612832565b610ed8565b34801561060f57600080fd5b506103b460065481565b34801561062557600080fd5b506102de611089565b34801561063a57600080fd5b506005546001600160a01b031661032b565b34801561065857600080fd5b506102de61066736600461276d565b61114d565b34801561067857600080fd5b506102f56111ef565b34801561068d57600080fd5b506102de61069c3660046127f9565b6111fe565b3480156106ad57600080fd5b506103636106bc366004612741565b6112f2565b3480156106cd57600080fd5b506103636106dc366004612741565b61138b565b3480156106ed57600080fd5b506103b460085481565b34801561070357600080fd5b5061036361071236600461276d565b60186020526000908152604090205460ff1681565b34801561073357600080fd5b50600d5461036390600160a81b900460ff1681565b34801561075457600080fd5b506102de6107633660046127f9565b611398565b34801561077457600080fd5b506102de6107833660046127d2565b611421565b34801561079457600080fd5b506102de6107a33660046127d2565b61151c565b3480156107b457600080fd5b506103b4600e5481565b3480156107ca57600080fd5b506102de6107d93660046127d2565b611667565b3480156107ea57600080fd5b506103b46107f9366004612832565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561083057600080fd5b506103b4600b5481565b34801561084657600080fd5b506103b460105481565b34801561085c57600080fd5b506102de61086b36600461276d565b611760565b34801561087c57600080fd5b506102de61184b565b34801561089157600080fd5b506103b460135481565b3480156108a757600080fd5b506103b460145481565b6005546001600160a01b031633146108e45760405162461bcd60e51b81526004016108db90612860565b60405180910390fd5b601282905560138190556108f881836128ab565b6011555050565b60606003805461090e906128be565b80601f016020809104026020016040519081016040528092919081815260200182805461093a906128be565b80156109875780601f1061095c57610100808354040283529160200191610987565b820191906000526020600020905b81548152906001019060200180831161096a57829003601f168201915b5050505050905090565b600061099e3384846118c2565b5060015b92915050565b60006109b58484846119e6565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a3a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108db565b610a4785338584036118c2565b506001949350505050565b6005546001600160a01b03163314610a7c5760405162461bcd60e51b81526004016108db90612860565b670de0b6b3a76400006064610a9060025490565b610a9a91906128f8565b610aa491906128f8565b811015610b035760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152667468616e20312560c81b60648201526084016108db565b610b1581670de0b6b3a764000061291a565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161099e918590610b889086906128ab565b6118c2565b6005546001600160a01b03163314610bb75760405162461bcd60e51b81526004016108db90612860565b6001600160a01b038116610c0d5760405162461bcd60e51b815260206004820152601e60248201527f5f6f7065726174696f6e73416464726573732063616e6e6f742062652030000060448201526064016108db565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b306000908152602052600c546001600160a01b0316331480610c5b5750600d546001600160a01b031633145b610c985760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5cd95960921b60448201526064016108db565b600a805460ff60a01b1916600160a01b179055610cb36120ea565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610d1f5760405162461bcd60e51b81526004016108db90612860565b600f8290556010819055610d3381836128ab565b600e555050565b6005546001600160a01b03163314610d645760405162461bcd60e51b81526004016108db90612860565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610dd85760405162461bcd60e51b81526004016108db90612860565b600d805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610e3a5760405162461bcd60e51b81526004016108db90612860565b80610ead57600a546001600160a01b0390811690831603610ead5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016108db565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546000906001600160a01b03163314610f055760405162461bcd60e51b81526004016108db90612860565b6001600160a01b038316610f5b5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016108db565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190612931565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d919061294a565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146110b35760405162461bcd60e51b81526004016108db90612860565b600d54600160a81b900460ff161561110d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016108db565b600d805461ffff60a81b191661010160a81b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6005546001600160a01b031633146111775760405162461bcd60e51b81526004016108db90612860565b6001600160a01b0381166111cd5760405162461bcd60e51b815260206004820152601d60248201527f5f6d61726b6574696e67416464726573732063616e6e6f74206265203000000060448201526064016108db565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60606004805461090e906128be565b6005546001600160a01b031633146112285760405162461bcd60e51b81526004016108db90612860565b600a546001600160a01b03908116908316036112ac5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108db565b6112b682826122c7565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113745760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108db565b61138133858584036118c2565b5060019392505050565b600061099e3384846119e6565b6005546001600160a01b031633146113c25760405162461bcd60e51b81526004016108db90612860565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461144b5760405162461bcd60e51b81526004016108db90612860565b670de0b6b3a7640000606461145f60025490565b61146991906128f8565b61147391906128f8565b8110156114d55760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108db565b6114e781670de0b6b3a764000061291a565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610b46565b6005546001600160a01b031633146115465760405162461bcd60e51b81526004016108db90612860565b620186a061155360025490565b61155e90600161291a565b61156891906128f8565b8110156115d55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108db565b6103e86115e160025490565b6115ec90600161291a565b6115f691906128f8565b8111156116625760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b60648201526084016108db565b600b55565b6005546001600160a01b031633146116915760405162461bcd60e51b81526004016108db90612860565b670de0b6b3a764000060646116a560025490565b6116af91906128f8565b6116b991906128f8565b8110156117195760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015267207468616e20312560c01b60648201526084016108db565b61172b81670de0b6b3a764000061291a565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610b46565b6005546001600160a01b0316331461178a5760405162461bcd60e51b81526004016108db90612860565b6001600160a01b0381166117ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108db565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146118755760405162461bcd60e51b81526004016108db90612860565b604051600090339047908381818185875af1925050503d80600081146118b7576040519150601f19603f3d011682016040523d82523d6000602084013e6118bc565b606091505b50505050565b6001600160a01b0383166119245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108db565b6001600160a01b0382166119855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108db565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a0c5760405162461bcd60e51b81526004016108db90612967565b6001600160a01b038216611a325760405162461bcd60e51b81526004016108db906129ac565b60008111611a825760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016108db565b600d54600160a81b900460ff16611b17576001600160a01b03831660009081526016602052604090205460ff1680611ad257506001600160a01b03821660009081526016602052604090205460ff165b611b175760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108db565b600d54600160a01b900460ff1615611e26576005546001600160a01b03848116911614801590611b5557506005546001600160a01b03838116911614155b8015611b6957506001600160a01b03821615155b8015611b8057506001600160a01b03821661dead14155b8015611ba557506001600160a01b03831660009081526016602052604090205460ff16155b8015611bca57506001600160a01b03821660009081526016602052604090205460ff16155b15611e26576001600160a01b03831660009081526018602052604090205460ff168015611c1057506001600160a01b03821660009081526017602052604090205460ff16155b15611cec57600654811115611c785760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016108db565b6008546001600160a01b038316600090815260208190526040902054611c9e90836128ab565b1115611ce75760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108db565b611e26565b6001600160a01b03821660009081526018602052604090205460ff168015611d2d57506001600160a01b03831660009081526017602052604090205460ff16155b15611d9757600754811115611ce75760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016108db565b6001600160a01b03821660009081526017602052604090205460ff16611e26576008546001600160a01b038316600090815260208190526040902054611ddd90836128ab565b1115611e265760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108db565b30600090815260208190526040902054600b5481108015908190611e535750600d54600160b01b900460ff165b8015611e695750600a54600160a01b900460ff16155b8015611e8e57506001600160a01b03851660009081526018602052604090205460ff16155b8015611eb357506001600160a01b03851660009081526016602052604090205460ff16155b8015611ed857506001600160a01b03841660009081526016602052604090205460ff16155b15611f0657600a805460ff60a01b1916600160a01b179055611ef86120ea565b600a805460ff60a01b191690555b6001600160a01b03851660009081526016602052604090205460019060ff1680611f4857506001600160a01b03851660009081526016602052604090205460ff165b15611f51575060005b600081156120d6576001600160a01b03861660009081526018602052604090205460ff168015611f8357506000601154115b1561200b57606460115486611f98919061291a565b611fa291906128f8565b905060115460135482611fb5919061291a565b611fbf91906128f8565b60156000828254611fd091906128ab565b9091555050601154601254611fe5908361291a565b611fef91906128f8565b6014600082825461200091906128ab565b909155506120b89050565b6001600160a01b03871660009081526018602052604090205460ff16801561203557506000600e54115b156120b8576064600e548661204a919061291a565b61205491906128f8565b9050600e5460105482612067919061291a565b61207191906128f8565b6015600082825461208291906128ab565b9091555050600e54600f54612097908361291a565b6120a191906128f8565b601460008282546120b291906128ab565b90915550505b80156120c9576120c98730836122f5565b6120d381866129ef565b94505b6120e18787876122f5565b50505050505050565b306000908152602081905260408120549050600060145460155461210e91906128ab565b905081158061211b575080155b15612124575050565b600b5461213290600a61291a565b82111561214a57600b5461214790600a61291a565b91505b6000806002836015548661215e919061291a565b61216891906128f8565b61217291906128f8565b905061218661218182866129ef565b61244a565b6015544790819060009061219c906002906128f8565b6121a690876129ef565b6014546121b3908561291a565b6121bd91906128f8565b90506121c981836129ef565b60006015819055601455915083158015906121e45750600082115b156121f3576121f384836125a4565b47156120e1576000606461220847605561291a565b61221291906128f8565b600d546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114612260576040519150601f19603f3d011682016040523d82523d6000602084013e612265565b606091505b5050600c546040519197506001600160a01b0316904790600081818185875af1925050503d80600081146122b5576040519150601f19603f3d011682016040523d82523d6000602084013e6122ba565b606091505b5050505050505050505050565b6001600160a01b0382166000908152601860205260409020805460ff19168215151790556112b68282612656565b6001600160a01b03831661231b5760405162461bcd60e51b81526004016108db90612967565b6001600160a01b0382166123415760405162461bcd60e51b81526004016108db906129ac565b6001600160a01b038316600090815260208190526040902054818110156123b95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108db565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906123f09084906128ab565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161243c91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061247f5761247f612a02565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fc9190612a18565b8160018151811061250f5761250f612a02565b6001600160a01b03928316602091820292909201015260095461253591309116846118c2565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061256e908590600090869030904290600401612a35565b600060405180830381600087803b15801561258857600080fd5b505af115801561259c573d6000803e3d6000fd5b505050505050565b6009546125bc9030906001600160a01b0316846118c2565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561262a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061264f9190612aa6565b5050505050565b6001600160a01b038216600081815260176020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b600080604083850312156126cc57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612708578581018301518582016040015282016126ec565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461273e57600080fd5b50565b6000806040838503121561275457600080fd5b823561275f81612729565b946020939093013593505050565b60006020828403121561277f57600080fd5b813561278a81612729565b9392505050565b6000806000606084860312156127a657600080fd5b83356127b181612729565b925060208401356127c181612729565b929592945050506040919091013590565b6000602082840312156127e457600080fd5b5035919050565b801515811461273e57600080fd5b6000806040838503121561280c57600080fd5b823561281781612729565b91506020830135612827816127eb565b809150509250929050565b6000806040838503121561284557600080fd5b823561285081612729565b9150602083013561282781612729565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109a2576109a2612895565b600181811c908216806128d257607f821691505b6020821081036128f257634e487b7160e01b600052602260045260246000fd5b50919050565b60008261291557634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176109a2576109a2612895565b60006020828403121561294357600080fd5b5051919050565b60006020828403121561295c57600080fd5b815161278a816127eb565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109a2576109a2612895565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a2a57600080fd5b815161278a81612729565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a855784516001600160a01b031683529383019391830191600101612a60565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612abb57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203fe84c53c19c29316f3b1afb4a08887ce539609fe55d78a4d00de7862035782364736f6c63430008120033

Deployed Bytecode Sourcemap

9600:13907:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16054:249;;;;;;;;;;-1:-1:-1;16054:249:0;;;;;:::i;:::-;;:::i;:::-;;4047:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9753:27;;;;;;;;;;-1:-1:-1;9753:27:0;;;;-1:-1:-1;;;;;9753:27:0;;;;;;-1:-1:-1;;;;;1002:32:1;;;984:51;;972:2;957:18;9753:27:0;820:221:1;4961:169:0;;;;;;;;;;-1:-1:-1;4961:169:0;;;;;:::i;:::-;;:::i;:::-;;;1667:14:1;;1660:22;1642:41;;1630:2;1615:18;4961:169:0;1502:187:1;10537:64:0;;;;;;;;;;-1:-1:-1;10537:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4368:108;;;;;;;;;;-1:-1:-1;4456:12:0;;4368:108;;;2092:25:1;;;2080:2;2065:18;4368:108:0;1946:177:1;10354:33:0;;;;;;;;;;;;;;;;5138:492;;;;;;;;;;-1:-1:-1;5138:492:0;;;;;:::i;:::-;;:::i;13519:262::-;;;;;;;;;;-1:-1:-1;13519:262:0;;;;;:::i;:::-;;:::i;4267:93::-;;;;;;;;;;-1:-1:-1;4267:93:0;;4350:2;2916:36:1;;2904:2;2889:18;4267:93:0;2774:184:1;5638:215:0;;;;;;;;;;-1:-1:-1;5638:215:0;;;;;:::i;:::-;;:::i;9787:21::-;;;;;;;;;;-1:-1:-1;9787:21:0;;;;-1:-1:-1;;;;;9787:21:0;;;22651:229;;;;;;;;;;-1:-1:-1;22651:229:0;;;;;:::i;:::-;;:::i;9968:33::-;;;;;;;;;;-1:-1:-1;9968:33:0;;;;-1:-1:-1;;;9968:33:0;;;;;;10234:32;;;;;;;;;;;;;;;;23163:341;;;;;;;;;;;;;:::i;10122:31::-;;;;;;;;;;;;;;;;15803:243;;;;;;;;;;-1:-1:-1;15803:243:0;;;;;:::i;:::-;;:::i;9679:28::-;;;;;;;;;;;;;;;;10199;;;;;;;;;;;;;;;;10048:31;;;;;;;;;;-1:-1:-1;10048:31:0;;;;-1:-1:-1;;;10048:31:0;;;;;;4484:127;;;;;;;;;;-1:-1:-1;4484:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4585:18:0;4558:7;4585:18;;;;;;;;;;;;4484:127;8124:150;;;;;;;;;;;;;:::i;13396:115::-;;;;;;;;;;;;;:::i;14984:260::-;;;;;;;;;;-1:-1:-1;14984:260:0;;;;;:::i;:::-;;:::i;22032:381::-;;;;;;;;;;-1:-1:-1;22032:381:0;;;;;:::i;:::-;;:::i;9645:27::-;;;;;;;;;;;;;;;;13139:205;;;;;;;;;;;;;:::i;7910:79::-;;;;;;;;;;-1:-1:-1;7975:6:0;;-1:-1:-1;;;;;7975:6:0;7910:79;;22888:223;;;;;;;;;;-1:-1:-1;22888:223:0;;;;;:::i;:::-;;:::i;4155:104::-;;;;;;;;;;;;;:::i;15252:295::-;;;;;;;;;;-1:-1:-1;15252:295:0;;;;;:::i;:::-;;:::i;5861:413::-;;;;;;;;;;-1:-1:-1;5861:413:0;;;;;:::i;:::-;;:::i;4619:175::-;;;;;;;;;;-1:-1:-1;4619:175:0;;;;;:::i;:::-;;:::i;9714:30::-;;;;;;;;;;;;;;;;10759:58;;;;;;;;;;-1:-1:-1;10759:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10008:33;;;;;;;;;;-1:-1:-1;10008:33:0;;;;-1:-1:-1;;;10008:33:0;;;;;;16311:182;;;;;;;;;;-1:-1:-1;16311:182:0;;;;;:::i;:::-;;:::i;14064:277::-;;;;;;;;;;-1:-1:-1;14064:277:0;;;;;:::i;:::-;;:::i;14411:350::-;;;;;;;;;;-1:-1:-1;14411:350:0;;;;;:::i;:::-;;:::i;10088:27::-;;;;;;;;;;;;;;;;13789:267;;;;;;;;;;-1:-1:-1;13789:267:0;;;;;:::i;:::-;;:::i;4802:151::-;;;;;;;;;;-1:-1:-1;4802:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4918:18:0;;;4891:7;4918:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4802:151;9845:33;;;;;;;;;;;;;;;;10160:30;;;;;;;;;;;;;;;;8282:244;;;;;;;;;;-1:-1:-1;8282:244:0;;;;;:::i;:::-;;:::i;22483:160::-;;;;;;;;;;;;;:::i;10273:31::-;;;;;;;;;;;;;;;;10313:34;;;;;;;;;;;;;;;;16054:249;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;;;;;;;;;16155:17:::1;:34:::0;;;16200:16:::1;:32:::0;;;16259:36:::1;16219:13:::0;16175:14;16259:36:::1;:::i;:::-;16243:13;:52:::0;-1:-1:-1;;16054:249:0:o;4047:100::-;4101:13;4134:5;4127:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4047:100;:::o;4961:169::-;5044:4;5061:39;276:10;5084:7;5093:6;5061:8;:39::i;:::-;-1:-1:-1;5118:4:0;4961:169;;;;;:::o;5138:492::-;5278:4;5295:36;5305:6;5313:9;5324:6;5295:9;:36::i;:::-;-1:-1:-1;;;;;5371:19:0;;5344:24;5371:19;;;:11;:19;;;;;;;;276:10;5371:33;;;;;;;;5423:26;;;;5415:79;;;;-1:-1:-1;;;5415:79:0;;5284:2:1;5415:79:0;;;5266:21:1;5323:2;5303:18;;;5296:30;5362:34;5342:18;;;5335:62;-1:-1:-1;;;5413:18:1;;;5406:38;5461:19;;5415:79:0;5082:404:1;5415:79:0;5530:57;5539:6;276:10;5580:6;5561:16;:25;5530:8;:57::i;:::-;-1:-1:-1;5618:4:0;;5138:492;-1:-1:-1;;;;5138:492:0:o;13519:262::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;13633:4:::1;13628:3;13612:13;4456:12:::0;;;4368:108;13612:13:::1;:19;;;;:::i;:::-;13611:26;;;;:::i;:::-;13601:6;:36;;13593:88;;;::::0;-1:-1:-1;;;13593:88:0;;5915:2:1;13593:88:0::1;::::0;::::1;5897:21:1::0;5954:2;5934:18;;;5927:30;5993:34;5973:18;;;5966:62;-1:-1:-1;;;6044:18:1;;;6037:37;6091:19;;13593:88:0::1;5713:403:1::0;13593:88:0::1;13707:17;:6:::0;13717::::1;13707:17;:::i;:::-;13692:12;:32:::0;;;13740:33:::1;::::0;2092:25:1;;;13740:33:0::1;::::0;2080:2:1;2065:18;13740:33:0::1;;;;;;;;13519:262:::0;:::o;5638:215::-;276:10;5726:4;5775:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5775:34:0;;;;;;;;;;5726:4;;5743:80;;5766:7;;5775:47;;5812:10;;5775:47;:::i;:::-;5743:8;:80::i;22651:229::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22747:32:0;::::1;22739:75;;;::::0;-1:-1:-1;;;22739:75:0;;6496:2:1;22739:75:0::1;::::0;::::1;6478:21:1::0;6535:2;6515:18;;;6508:30;6574:32;6554:18;;;6547:60;6624:18;;22739:75:0::1;6294:354:1::0;22739:75:0::1;22825:17;:47:::0;;-1:-1:-1;;;;;;22825:47:0::1;-1:-1:-1::0;;;;;22825:47:0;;;::::1;::::0;;;::::1;::::0;;22651:229::o;23163:341::-;23234:4;23244:1;4585:18;;;;;23300:17;;-1:-1:-1;;;;;23300:17:0;23286:10;:31;;:65;;-1:-1:-1;23335:16:0;;-1:-1:-1;;;;;23335:16:0;23321:10;:30;23286:65;23278:92;;;;-1:-1:-1;;;23278:92:0;;7201:2:1;23278:92:0;;;7183:21:1;7240:2;7220:18;;;7213:30;-1:-1:-1;;;7259:18:1;;;7252:44;7313:18;;23278:92:0;6999:338:1;23278:92:0;23381:8;:15;;-1:-1:-1;;;;23381:15:0;-1:-1:-1;;;23381:15:0;;;23407:10;:8;:10::i;:::-;23428:8;:16;;-1:-1:-1;;;;23428:16:0;;;23460:36;;23480:15;2092:25:1;;23460:36:0;;2080:2:1;2065:18;23460:36:0;;;;;;;23163:341::o;15803:243::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;15903:16:::1;:33:::0;;;15947:15:::1;:31:::0;;;16004:34:::1;15965:13:::0;15922:14;16004:34:::1;:::i;:::-;15989:12;:49:::0;-1:-1:-1;;15803:243:0:o;8124:150::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;8217:6:::1;::::0;8196:40:::1;::::0;8233:1:::1;::::0;-1:-1:-1;;;;;8217:6:0::1;::::0;8196:40:::1;::::0;8233:1;;8196:40:::1;8247:6;:19:::0;;-1:-1:-1;;;;;;8247:19:0::1;::::0;;8124:150::o;13396:115::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;13450:14:::1;:22:::0;;-1:-1:-1;;;;13450:22:0::1;::::0;;13488:15:::1;::::0;::::1;::::0;13467:5:::1;::::0;13488:15:::1;13396:115::o:0;14984:260::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;15080:4:::1;15076:104;;15118:6;::::0;-1:-1:-1;;;;;15118:6:0;;::::1;15108:16:::0;;::::1;::::0;15100:68:::1;;;::::0;-1:-1:-1;;;15100:68:0;;7544:2:1;15100:68:0::1;::::0;::::1;7526:21:1::0;7583:2;7563:18;;;7556:30;7622:34;7602:18;;;7595:62;-1:-1:-1;;;7673:18:1;;;7666:37;7720:19;;15100:68:0::1;7342:403:1::0;15100:68:0::1;-1:-1:-1::0;;;;;15190:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;15190:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14984:260::o;22032:381::-;8037:6;;22119:10;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22150:20:0;::::1;22142:59;;;::::0;-1:-1:-1;;;22142:59:0;;7952:2:1;22142:59:0::1;::::0;::::1;7934:21:1::0;7991:2;7971:18;;;7964:30;8030:28;8010:18;;;8003:56;8076:18;;22142:59:0::1;7750:350:1::0;22142:59:0::1;22239:39;::::0;-1:-1:-1;;;22239:39:0;;22272:4:::1;22239:39;::::0;::::1;984:51:1::0;22212:24:0::1;::::0;-1:-1:-1;;;;;22239:24:0;::::1;::::0;::::1;::::0;957:18:1;;22239:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22297:46;::::0;-1:-1:-1;;;22297:46:0;;-1:-1:-1;;;;;8486:32:1;;;22297:46:0::1;::::0;::::1;8468:51:1::0;8535:18;;;8528:34;;;22212:66:0;;-1:-1:-1;22297:23:0;;::::1;::::0;::::1;::::0;8441:18:1;;22297:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22359;::::0;;-1:-1:-1;;;;;8486:32:1;;8468:51;;8550:2;8535:18;;8528:34;;;22289:54:0;;-1:-1:-1;22359:46:0::1;::::0;8441:18:1;22359:46:0::1;;;;;;;22131:282;22032:381:::0;;;;:::o;13139:205::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;13203:13:::1;::::0;-1:-1:-1;;;13203:13:0;::::1;;;13202:14;13194:50;;;::::0;-1:-1:-1;;;13194:50:0;;9025:2:1;13194:50:0::1;::::0;::::1;9007:21:1::0;9064:2;9044:18;;;9037:30;9103:25;9083:18;;;9076:53;9146:18;;13194:50:0::1;8823:347:1::0;13194:50:0::1;13255:13;:20:::0;;-1:-1:-1;;;;13286:18:0;-1:-1:-1;;;13286:18:0;;;13320:16:::1;::::0;::::1;::::0;-1:-1:-1;;13320:16:0::1;13139:205::o:0;22888:223::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22982:31:0;::::1;22974:73;;;::::0;-1:-1:-1;;;22974:73:0;;9377:2:1;22974:73:0::1;::::0;::::1;9359:21:1::0;9416:2;9396:18;;;9389:30;9455:31;9435:18;;;9428:59;9504:18;;22974:73:0::1;9175:353:1::0;22974:73:0::1;23058:16;:45:::0;;-1:-1:-1;;;;;;23058:45:0::1;-1:-1:-1::0;;;;;23058:45:0;;;::::1;::::0;;;::::1;::::0;;22888:223::o;4155:104::-;4211:13;4244:7;4237:14;;;;;:::i;15252:295::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;15361:6:::1;::::0;-1:-1:-1;;;;;15361:6:0;;::::1;15353:14:::0;;::::1;::::0;15345:84:::1;;;::::0;-1:-1:-1;;;15345:84:0;;9735:2:1;15345:84:0::1;::::0;::::1;9717:21:1::0;9774:2;9754:18;;;9747:30;9813:34;9793:18;;;9786:62;9884:27;9864:18;;;9857:55;9929:19;;15345:84:0::1;9533:421:1::0;15345:84:0::1;15442:41;15471:4;15477:5;15442:28;:41::i;:::-;15499:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;15499:40:0;::::1;::::0;::::1;::::0;;;::::1;15252:295:::0;;:::o;5861:413::-;276:10;5954:4;5998:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5998:34:0;;;;;;;;;;6051:35;;;;6043:85;;;;-1:-1:-1;;;6043:85:0;;10161:2:1;6043:85:0;;;10143:21:1;10200:2;10180:18;;;10173:30;10239:34;10219:18;;;10212:62;-1:-1:-1;;;10290:18:1;;;10283:35;10335:19;;6043:85:0;9959:401:1;6043:85:0;6164:67;276:10;6187:7;6215:15;6196:16;:34;6164:8;:67::i;:::-;-1:-1:-1;6262:4:0;;5861:413;-1:-1:-1;;;5861:413:0:o;4619:175::-;4705:4;4722:42;276:10;4746:9;4757:6;4722:9;:42::i;16311:182::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16396:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;16396:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16451:34;;1642:41:1;;;16451:34:0::1;::::0;1615:18:1;16451:34:0::1;;;;;;;16311:182:::0;;:::o;14064:277::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;14181:4:::1;14176:3;14160:13;4456:12:::0;;;4368:108;14160:13:::1;:19;;;;:::i;:::-;14159:26;;;;:::i;:::-;14149:6;:36;;14141:91;;;::::0;-1:-1:-1;;;14141:91:0;;10567:2:1;14141:91:0::1;::::0;::::1;10549:21:1::0;10606:2;10586:18;;;10579:30;10645:34;10625:18;;;10618:62;-1:-1:-1;;;10696:18:1;;;10689:40;10746:19;;14141:91:0::1;10365:406:1::0;14141:91:0::1;14261:17;:6:::0;14271::::1;14261:17;:::i;:::-;14243:15;:35:::0;;;14294:39:::1;::::0;2092:25:1;;;14294:39:0::1;::::0;2080:2:1;2065:18;14294:39:0::1;1946:177:1::0;14411:350:0;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;14535:6:::1;14515:13;4456:12:::0;;;4368:108;14515:13:::1;:17;::::0;14531:1:::1;14515:17;:::i;:::-;:26;;;;:::i;:::-;14502:9;:39;;14494:105;;;::::0;-1:-1:-1;;;14494:105:0;;10978:2:1;14494:105:0::1;::::0;::::1;10960:21:1::0;11017:2;10997:18;;;10990:30;11056:34;11036:18;;;11029:62;-1:-1:-1;;;11107:18:1;;;11100:51;11168:19;;14494:105:0::1;10776:417:1::0;14494:105:0::1;14651:4;14631:13;4456:12:::0;;;4368:108;14631:13:::1;:17;::::0;14647:1:::1;14631:17;:::i;:::-;:24;;;;:::i;:::-;14618:9;:37;;14610:102;;;::::0;-1:-1:-1;;;14610:102:0;;11400:2:1;14610:102:0::1;::::0;::::1;11382:21:1::0;11439:2;11419:18;;;11412:30;11478:34;11458:18;;;11451:62;-1:-1:-1;;;11529:18:1;;;11522:50;11589:19;;14610:102:0::1;11198:416:1::0;14610:102:0::1;14723:18;:30:::0;14411:350::o;13789:267::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;13904:4:::1;13899:3;13883:13;4456:12:::0;;;4368:108;13883:13:::1;:19;;;;:::i;:::-;13882:26;;;;:::i;:::-;13872:6;:36;;13864:89;;;::::0;-1:-1:-1;;;13864:89:0;;11821:2:1;13864:89:0::1;::::0;::::1;11803:21:1::0;11860:2;11840:18;;;11833:30;11899:34;11879:18;;;11872:62;-1:-1:-1;;;11950:18:1;;;11943:38;11998:19;;13864:89:0::1;11619:404:1::0;13864:89:0::1;13980:17;:6:::0;13990::::1;13980:17;:::i;:::-;13964:13;:33:::0;;;14013:35:::1;::::0;2092:25:1;;;14013:35:0::1;::::0;2080:2:1;2065:18;14013:35:0::1;1946:177:1::0;8282:244:0;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8371:22:0;::::1;8363:73;;;::::0;-1:-1:-1;;;8363:73:0;;12230:2:1;8363:73:0::1;::::0;::::1;12212:21:1::0;12269:2;12249:18;;;12242:30;12308:34;12288:18;;;12281:62;-1:-1:-1;;;12359:18:1;;;12352:36;12405:19;;8363:73:0::1;12028:402:1::0;8363:73:0::1;8473:6;::::0;8452:38:::1;::::0;-1:-1:-1;;;;;8452:38:0;;::::1;::::0;8473:6:::1;::::0;8452:38:::1;::::0;8473:6:::1;::::0;8452:38:::1;8501:6;:17:::0;;-1:-1:-1;;;;;;8501:17:0::1;-1:-1:-1::0;;;;;8501:17:0;;;::::1;::::0;;;::::1;::::0;;8282:244::o;22483:160::-;8037:6;;-1:-1:-1;;;;;8037:6:0;276:10;8037:22;8029:67;;;;-1:-1:-1;;;8029:67:0;;;;;;;:::i;:::-;22577:58:::1;::::0;22541:12:::1;::::0;22585:10:::1;::::0;22609:21:::1;::::0;22541:12;22577:58;22541:12;22577:58;22609:21;22585:10;22577:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;22483:160:0:o;7203:380::-;-1:-1:-1;;;;;7339:19:0;;7331:68;;;;-1:-1:-1;;;7331:68:0;;12847:2:1;7331:68:0;;;12829:21:1;12886:2;12866:18;;;12859:30;12925:34;12905:18;;;12898:62;-1:-1:-1;;;12976:18:1;;;12969:34;13020:19;;7331:68:0;12645:400:1;7331:68:0;-1:-1:-1;;;;;7418:21:0;;7410:68;;;;-1:-1:-1;;;7410:68:0;;13252:2:1;7410:68:0;;;13234:21:1;13291:2;13271:18;;;13264:30;13330:34;13310:18;;;13303:62;-1:-1:-1;;;13381:18:1;;;13374:32;13423:19;;7410:68:0;13050:398:1;7410:68:0;-1:-1:-1;;;;;7491:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7543:32;;2092:25:1;;;7543:32:0;;2065:18:1;7543:32:0;;;;;;;7203:380;;;:::o;16501:3039::-;-1:-1:-1;;;;;16601:18:0;;16593:68;;;;-1:-1:-1;;;16593:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16680:16:0;;16672:64;;;;-1:-1:-1;;;16672:64:0;;;;;;;:::i;:::-;16764:1;16755:6;:10;16747:52;;;;-1:-1:-1;;;16747:52:0;;14465:2:1;16747:52:0;;;14447:21:1;14504:2;14484:18;;;14477:30;14543:31;14523:18;;;14516:59;14592:18;;16747:52:0;14263:353:1;16747:52:0;16816:13;;-1:-1:-1;;;16816:13:0;;;;16812:132;;-1:-1:-1;;;;;16853:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;16882:23:0;;;;;;:19;:23;;;;;;;;16853:52;16845:87;;;;-1:-1:-1;;;16845:87:0;;14823:2:1;16845:87:0;;;14805:21:1;14862:2;14842:18;;;14835:30;-1:-1:-1;;;14881:18:1;;;14874:52;14943:18;;16845:87:0;14621:346:1;16845:87:0;16959:14;;-1:-1:-1;;;16959:14:0;;;;16956:995;;;7975:6;;-1:-1:-1;;;;;16993:15:0;;;7975:6;;16993:15;;;;:32;;-1:-1:-1;7975:6:0;;-1:-1:-1;;;;;17012:13:0;;;7975:6;;17012:13;;16993:32;:52;;;;-1:-1:-1;;;;;;17029:16:0;;;;16993:52;:77;;;;-1:-1:-1;;;;;;17049:21:0;;17063:6;17049:21;;16993:77;:107;;;;-1:-1:-1;;;;;;17075:25:0;;;;;;:19;:25;;;;;;;;17074:26;16993:107;:135;;;;-1:-1:-1;;;;;;17105:23:0;;;;;;:19;:23;;;;;;;;17104:24;16993:135;16989:951;;;-1:-1:-1;;;;;17186:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;17222:35:0;;;;;;:31;:35;;;;;;;;17221:36;17186:71;17182:743;;;17304:12;;17294:6;:22;;17286:75;;;;-1:-1:-1;;;17286:75:0;;15174:2:1;17286:75:0;;;15156:21:1;15213:2;15193:18;;;15186:30;15252:34;15232:18;;;15225:62;-1:-1:-1;;;15303:18:1;;;15296:38;15351:19;;17286:75:0;14972:404:1;17286:75:0;17422:15;;-1:-1:-1;;;;;4585:18:0;;4558:7;4585:18;;;;;;;;;;;17396:22;;:6;:22;:::i;:::-;:41;;17388:78;;;;-1:-1:-1;;;17388:78:0;;15583:2:1;17388:78:0;;;15565:21:1;15622:2;15602:18;;;15595:30;-1:-1:-1;;;15641:18:1;;;15634:54;15705:18;;17388:78:0;15381:348:1;17388:78:0;17182:743;;;-1:-1:-1;;;;;17542:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;17576:37:0;;;;;;:31;:37;;;;;;;;17575:38;17542:71;17538:387;;;17660:13;;17650:6;:23;;17642:78;;;;-1:-1:-1;;;17642:78:0;;15936:2:1;17642:78:0;;;15918:21:1;15975:2;15955:18;;;15948:30;16014:34;15994:18;;;15987:62;-1:-1:-1;;;16065:18:1;;;16058:40;16115:19;;17642:78:0;15734:406:1;17538:387:0;-1:-1:-1;;;;;17768:35:0;;;;;;:31;:35;;;;;;;;17763:162;;17861:15;;-1:-1:-1;;;;;4585:18:0;;4558:7;4585:18;;;;;;;;;;;17835:22;;:6;:22;:::i;:::-;:41;;17827:78;;;;-1:-1:-1;;;17827:78:0;;15583:2:1;17827:78:0;;;15565:21:1;15622:2;15602:18;;;15595:30;-1:-1:-1;;;15641:18:1;;;15634:54;15705:18;;17827:78:0;15381:348:1;17827:78:0;18012:4;17963:28;4585:18;;;;;;;;;;;18070;;18046:42;;;;;;;18104:22;;-1:-1:-1;18115:11:0;;-1:-1:-1;;;18115:11:0;;;;18104:22;:35;;;;-1:-1:-1;18131:8:0;;-1:-1:-1;;;18131:8:0;;;;18130:9;18104:35;:71;;;;-1:-1:-1;;;;;;18144:31:0;;;;;;:25;:31;;;;;;;;18143:32;18104:71;:101;;;;-1:-1:-1;;;;;;18180:25:0;;;;;;:19;:25;;;;;;;;18179:26;18104:101;:129;;;;-1:-1:-1;;;;;;18210:23:0;;;;;;:19;:23;;;;;;;;18209:24;18104:129;18101:236;;;18250:8;:15;;-1:-1:-1;;;;18250:15:0;-1:-1:-1;;;18250:15:0;;;18282:10;:8;:10::i;:::-;18309:8;:16;;-1:-1:-1;;;;18309:16:0;;;18101:236;-1:-1:-1;;;;;18467:25:0;;18349:12;18467:25;;;:19;:25;;;;;;18364:4;;18467:25;;;:52;;-1:-1:-1;;;;;;18496:23:0;;;;;;:19;:23;;;;;;;;18467:52;18464:99;;;-1:-1:-1;18546:5:0;18464:99;18575:12;18679:7;18676:811;;;-1:-1:-1;;;;;18730:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;18779:1;18763:13;;:17;18730:50;18726:614;;;18832:3;18816:13;;18807:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;18800:35;;18902:13;;18883:16;;18876:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;18854:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;18984:13:0;;18964:17;;18957:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;18934:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;18726:614:0;;-1:-1:-1;18726:614:0;;-1:-1:-1;;;;;19060:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;19110:1;19095:12;;:16;19060:51;19057:283;;;19163:3;19148:12;;19139:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;19132:34;;19232:12;;19214:15;;19207:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;19185:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;19312:12:0;;19293:16;;19286:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;19263:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;19057:283:0;19359:8;;19356:89;;19387:42;19403:4;19417;19424;19387:15;:42::i;:::-;19461:14;19471:4;19461:14;;:::i;:::-;;;18676:811;19499:33;19515:4;19521:2;19525:6;19499:15;:33::i;:::-;16580:2960;;;;16501:3039;;;:::o;20644:1380::-;20727:4;20683:23;4585:18;;;;;;;;;;;20683:50;;20744:25;20793:19;;20772:18;;:40;;;;:::i;:::-;20744:68;-1:-1:-1;20828:20:0;;;:46;;-1:-1:-1;20852:22:0;;20828:46;20825:60;;;20877:7;;20644:1380::o;20825:60::-;20918:18;;:23;;20939:2;20918:23;:::i;:::-;20900:15;:41;20897:113;;;20975:18;;:23;;20996:2;20975:23;:::i;:::-;20957:41;;20897:113;21022:12;21096:23;21181:1;21161:17;21140:18;;21122:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21096:86;-1:-1:-1;21195:51:0;21212:33;21096:86;21212:15;:33;:::i;:::-;21195:16;:51::i;:::-;21445:18;;21280:21;;;;21259:18;;21445:20;;21464:1;;21445:20;:::i;:::-;21424:42;;:17;:42;:::i;:::-;21401:19;;21388:32;;:10;:32;:::i;:::-;:79;;;;:::i;:::-;21361:106;-1:-1:-1;21480:35:0;21361:106;21480:35;;:::i;:::-;21549:1;21528:18;:22;;;21561:19;:23;21480:35;-1:-1:-1;21600:19:0;;;;;:42;;;21641:1;21623:15;:19;21600:42;21597:119;;;21658:46;21671:15;21688;21658:12;:46::i;:::-;21731:21;:25;21728:289;;21772:20;21826:3;21796:26;21801:21;21796:2;:26;:::i;:::-;21795:34;;;;:::i;:::-;21865:16;;21857:55;;21772:57;;-1:-1:-1;;;;;;21865:16:0;;21772:57;;21857:55;;;;21772:57;21865:16;21857:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21948:17:0;;21940:65;;21844:68;;-1:-1:-1;;;;;;21948:17:0;;21979:21;;21940:65;;;;21979:21;21948:17;21940:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20644:1380:0:o;15555:240::-;-1:-1:-1;;;;;15638:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;15638:39:0;;;;;;;15690;15638:31;:39;15690:26;:39::i;6282:614::-;-1:-1:-1;;;;;6422:20:0;;6414:70;;;;-1:-1:-1;;;6414:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6503:23:0;;6495:71;;;;-1:-1:-1;;;6495:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6603:17:0;;6579:21;6603:17;;;;;;;;;;;6639:23;;;;6631:74;;;;-1:-1:-1;;;6631:74:0;;16480:2:1;6631:74:0;;;16462:21:1;16519:2;16499:18;;;16492:30;16558:34;16538:18;;;16531:62;-1:-1:-1;;;16609:18:1;;;16602:36;16655:19;;6631:74:0;16278:402:1;6631:74:0;-1:-1:-1;;;;;6741:17:0;;;:9;:17;;;;;;;;;;;6761:22;;;6741:42;;6805:20;;;;;;;;:30;;6777:6;;6741:9;6805:30;;6777:6;;6805:30;:::i;:::-;;;;;;;;6870:9;-1:-1:-1;;;;;6853:35:0;6862:6;-1:-1:-1;;;;;6853:35:0;;6881:6;6853:35;;;;2092:25:1;;2080:2;2065:18;;1946:177;6853:35:0;;;;;;;;6403:493;6282:614;;;:::o;19546:573::-;19698:16;;;19712:1;19698:16;;;;;;;;19674:21;;19698:16;;;;;;;;;;-1:-1:-1;19698:16:0;19674:40;;19743:4;19725;19730:1;19725:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19725:23:0;;;:7;;;;;;;;;;:23;;;;19769:9;;:16;;;-1:-1:-1;;;19769:16:0;;;;:9;;;;;:14;;:16;;;;;19725:7;;19769:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19759:4;19764:1;19759:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19759:26:0;;;:7;;;;;;;;;:26;19830:9;;19798:56;;19815:4;;19830:9;19842:11;19798:8;:56::i;:::-;19893:9;;:218;;-1:-1:-1;;;19893:218:0;;-1:-1:-1;;;;;19893:9:0;;;;:60;;:218;;19968:11;;19893:9;;20038:4;;20065;;20085:15;;19893:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19601:518;19546:573;:::o;20127:509::-;20307:9;;20275:56;;20292:4;;-1:-1:-1;;;;;20307:9:0;20319:11;20275:8;:56::i;:::-;20374:9;;:254;;-1:-1:-1;;;20374:254:0;;20440:4;20374:254;;;18531:34:1;18581:18;;;18574:34;;;20374:9:0;18624:18:1;;;18617:34;;;18667:18;;;18660:34;20580:6:0;18710:19:1;;;18703:44;20602:15:0;18763:19:1;;;18756:35;-1:-1:-1;;;;;20374:9:0;;;;:25;;20407:9;;18465:19:1;;20374:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20127:509;;:::o;14769:207::-;-1:-1:-1;;;;;14857:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;14857:52:0;;;;;;;;;;14925:43;;19281:51:1;;;19348:18;;;19341:50;14925:43:0;;19254:18:1;14925:43:0;;;;;;;14769:207;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;1046:131::-;-1:-1:-1;;;;;1121:31:1;;1111:42;;1101:70;;1167:1;1164;1157:12;1101:70;1046:131;:::o;1182:315::-;1250:6;1258;1311:2;1299:9;1290:7;1286:23;1282:32;1279:52;;;1327:1;1324;1317:12;1279:52;1366:9;1353:23;1385:31;1410:5;1385:31;:::i;:::-;1435:5;1487:2;1472:18;;;;1459:32;;-1:-1:-1;;;1182:315:1:o;1694:247::-;1753:6;1806:2;1794:9;1785:7;1781:23;1777:32;1774:52;;;1822:1;1819;1812:12;1774:52;1861:9;1848:23;1880:31;1905:5;1880:31;:::i;:::-;1930:5;1694:247;-1:-1:-1;;;1694:247:1:o;2128:456::-;2205:6;2213;2221;2274:2;2262:9;2253:7;2249:23;2245:32;2242:52;;;2290:1;2287;2280:12;2242:52;2329:9;2316:23;2348:31;2373:5;2348:31;:::i;:::-;2398:5;-1:-1:-1;2455:2:1;2440:18;;2427:32;2468:33;2427:32;2468:33;:::i;:::-;2128:456;;2520:7;;-1:-1:-1;;;2574:2:1;2559:18;;;;2546:32;;2128:456::o;2589:180::-;2648:6;2701:2;2689:9;2680:7;2676:23;2672:32;2669:52;;;2717:1;2714;2707:12;2669:52;-1:-1:-1;2740:23:1;;2589:180;-1:-1:-1;2589:180:1:o;3171:118::-;3257:5;3250:13;3243:21;3236:5;3233:32;3223:60;;3279:1;3276;3269:12;3294:382;3359:6;3367;3420:2;3408:9;3399:7;3395:23;3391:32;3388:52;;;3436:1;3433;3426:12;3388:52;3475:9;3462:23;3494:31;3519:5;3494:31;:::i;:::-;3544:5;-1:-1:-1;3601:2:1;3586:18;;3573:32;3614:30;3573:32;3614:30;:::i;:::-;3663:7;3653:17;;;3294:382;;;;;:::o;3681:388::-;3749:6;3757;3810:2;3798:9;3789:7;3785:23;3781:32;3778:52;;;3826:1;3823;3816:12;3778:52;3865:9;3852:23;3884:31;3909:5;3884:31;:::i;:::-;3934:5;-1:-1:-1;3991:2:1;3976:18;;3963:32;4004:33;3963:32;4004:33;:::i;4074:356::-;4276:2;4258:21;;;4295:18;;;4288:30;4354:34;4349:2;4334:18;;4327:62;4421:2;4406:18;;4074:356::o;4435:127::-;4496:10;4491:3;4487:20;4484:1;4477:31;4527:4;4524:1;4517:15;4551:4;4548:1;4541:15;4567:125;4632:9;;;4653:10;;;4650:36;;;4666:18;;:::i;4697:380::-;4776:1;4772:12;;;;4819;;;4840:61;;4894:4;4886:6;4882:17;4872:27;;4840:61;4947:2;4939:6;4936:14;4916:18;4913:38;4910:161;;4993:10;4988:3;4984:20;4981:1;4974:31;5028:4;5025:1;5018:15;5056:4;5053:1;5046:15;4910:161;;4697:380;;;:::o;5491:217::-;5531:1;5557;5547:132;;5601:10;5596:3;5592:20;5589:1;5582:31;5636:4;5633:1;5626:15;5664:4;5661:1;5654:15;5547:132;-1:-1:-1;5693:9:1;;5491:217::o;6121:168::-;6194:9;;;6225;;6242:15;;;6236:22;;6222:37;6212:71;;6263:18;;:::i;8105:184::-;8175:6;8228:2;8216:9;8207:7;8203:23;8199:32;8196:52;;;8244:1;8241;8234:12;8196:52;-1:-1:-1;8267:16:1;;8105:184;-1:-1:-1;8105:184:1:o;8573:245::-;8640:6;8693:2;8681:9;8672:7;8668:23;8664:32;8661:52;;;8709:1;8706;8699:12;8661:52;8741:9;8735:16;8760:28;8782:5;8760:28;:::i;13453:401::-;13655:2;13637:21;;;13694:2;13674:18;;;13667:30;13733:34;13728:2;13713:18;;13706:62;-1:-1:-1;;;13799:2:1;13784:18;;13777:35;13844:3;13829:19;;13453:401::o;13859:399::-;14061:2;14043:21;;;14100:2;14080:18;;;14073:30;14139:34;14134:2;14119:18;;14112:62;-1:-1:-1;;;14205:2:1;14190:18;;14183:33;14248:3;14233:19;;13859:399::o;16145:128::-;16212:9;;;16233:11;;;16230:37;;;16247:18;;:::i;16817:127::-;16878:10;16873:3;16869:20;16866:1;16859:31;16909:4;16906:1;16899:15;16933:4;16930:1;16923:15;16949:251;17019:6;17072:2;17060:9;17051:7;17047:23;17043:32;17040:52;;;17088:1;17085;17078:12;17040:52;17120:9;17114:16;17139:31;17164:5;17139:31;:::i;17205:980::-;17467:4;17515:3;17504:9;17500:19;17546:6;17535:9;17528:25;17572:2;17610:6;17605:2;17594:9;17590:18;17583:34;17653:3;17648:2;17637:9;17633:18;17626:31;17677:6;17712;17706:13;17743:6;17735;17728:22;17781:3;17770:9;17766:19;17759:26;;17820:2;17812:6;17808:15;17794:29;;17841:1;17851:195;17865:6;17862:1;17859:13;17851:195;;;17930:13;;-1:-1:-1;;;;;17926:39:1;17914:52;;18021:15;;;;17986:12;;;;17962:1;17880:9;17851:195;;;-1:-1:-1;;;;;;;18102:32:1;;;;18097:2;18082:18;;18075:60;-1:-1:-1;;;18166:3:1;18151:19;18144:35;18063:3;17205:980;-1:-1:-1;;;17205:980:1:o;18802:306::-;18890:6;18898;18906;18959:2;18947:9;18938:7;18934:23;18930:32;18927:52;;;18975:1;18972;18965:12;18927:52;19004:9;18998:16;18988:26;;19054:2;19043:9;19039:18;19033:25;19023:35;;19098:2;19087:9;19083:18;19077:25;19067:35;;18802:306;;;;;:::o

Swarm Source

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