ETH Price: $3,968.62 (-1.00%)

Token

Mock Capital (MOCK)
 

Overview

Max Total Supply

1,000,000 MOCK

Holders

1,426

Total Transfers

-

Market

Price

$0.05 @ 0.000012 ETH (-1.95%)

Onchain Market Cap

$46,376.78

Circulating Supply Market Cap

$46,493.00

Other Info

Token Contract (WITH 18 Decimals)

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:
Mock

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-16
*/

/**
 Mock Capital
https://mock.capital
https://t.me/mockcapital
https://discord.gg/mockcapital
https://twitter.com/mockcapital
https://t.me/mockcapital
https://discord.gg/mockcapital
https://docs.mock.capital
https://stats.mock.capital
**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;
pragma experimental ABIEncoderV2;

abstract contract Ownable {
    address private _owner;

    constructor() {
        _owner = msg.sender;
    }

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

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

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

library SafeERC20 {
    function safeTransfer(address token, address to, uint256 value) internal {
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(IERC20.transfer.selector, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper: INTERNAL TRANSFER_FAILED"
        );
    }
}

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external;
}

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

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

    function WETH() external pure returns (address);

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

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

contract Mock is Ownable {
    string private constant _name = unicode"Mock Capital";
    string private constant _symbol = unicode"MOCK";
    uint256 private constant _totalSupply = 1_000_000 * 1e18;

    uint256 public maxTransactionAmount = 10_000 * 1e18;
    uint256 public maxWallet = 10_000 * 1e18;
    uint256 public swapTokensAtAmount = (_totalSupply * 5) / 10000;

    address private teamWallet = 0xEA68F5A05a46f4471859Bc996C57Ba3c4e1Cdbe8;
    address private ecosystemWallet =
        0x15D89B47a64268D3E30ef3F87B59054bDcA8bD37;
    address private revWallet = 0x3979AbFE1963bfbb12E454487e169056a46FD0c7;
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    uint8 public buyTotalFees = 150;
    uint8 public sellTotalFees = 150;

    uint8 public revFee = 20;
    uint8 public teamFee = 80;

    bool private swapping;
    bool public limitsInEffect = true;
    bool private launched;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 teamETH,
        uint256 revETH
    );
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    IUniswapV2Router02 public constant uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    constructor() {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            WETH
        );
        automatedMarketMakerPairs[uniswapV2Pair] = true;

        setExcludedFromFees(owner(), true);
        setExcludedFromFees(address(this), true);
        setExcludedFromFees(address(0xdead), true);
        setExcludedFromFees(teamWallet, true);
        setExcludedFromFees(ecosystemWallet, true);
        setExcludedFromFees(revWallet, true);
        setExcludedFromFees(0xE2fE530C047f2d85298b07D9333C05737f1435fB, true); // Team Finance Locker Contract

        setExcludedFromMaxTransaction(owner(), true);
        setExcludedFromMaxTransaction(address(uniswapV2Router), true);
        setExcludedFromMaxTransaction(address(this), true);
        setExcludedFromMaxTransaction(address(0xdead), true);
        setExcludedFromMaxTransaction(address(uniswapV2Pair), true);
        setExcludedFromMaxTransaction(teamWallet, true);
        setExcludedFromMaxTransaction(revWallet, true);
        setExcludedFromMaxTransaction(ecosystemWallet, true);
        setExcludedFromMaxTransaction(
            0xE2fE530C047f2d85298b07D9333C05737f1435fB,
            true
        ); // Team Finance Locker Contract

        _balances[address(this)] = 850_000 * 1e18;
        emit Transfer(address(0), address(this), _balances[address(this)]); // Transfer to the contract for initial liquidity
        _balances[msg.sender] = 100_000 * 1e18;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]); // Transfer to the deployer/team wallet
        _balances[ecosystemWallet] = 50_000 * 1e18;
        emit Transfer(address(0), ecosystemWallet, _balances[ecosystemWallet]); // Transfer to the ecosystem wallet

        _approve(address(this), address(uniswapV2Router), type(uint256).max);
    }

    receive() external payable {}

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

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

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

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

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

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

    function approve(address spender, uint256 amount) external returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool) {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, msg.sender, currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (
            !launched &&
            (from != owner() && from != address(this) && to != owner())
        ) {
            revert("Trading not enabled");
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTx"
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                } else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTx"
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;

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

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 senderBalance = _balances[from];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 1000;
            } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 1000;
            }

            if (fees > 0) {
                unchecked {
                    amount = amount - fees;
                    _balances[from] -= fees;
                    _balances[address(this)] += fees;
                }
                emit Transfer(from, address(this), fees);
            }
        }
        unchecked {
            _balances[from] -= amount;
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
    }

    /**
     * @notice Removes all transaction and wallet limits
     * @dev Only callable by the contract owner
     * @custom:security This is irreversible, use with caution
     */
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    /**
     * @notice Sets the distribution percentages for rev and team fees
     * @dev Only callable by the contract owner
     * @param _RevFee Percentage for rev wallet (out of 100)
     * @param _teamFee Percentage for team wallet (out of 100)
     * @custom:security Requires total to be exactly 100%
     */
    function setDistributionFees(
        uint8 _RevFee,
        uint8 _teamFee
    ) external onlyOwner {
        revFee = _RevFee;
        teamFee = _teamFee;
        require(
            (revFee + teamFee) == 100,
            "Distribution have to be equal to 100%"
        );
    }

    /**
     * @notice Sets the buy and sell fees for the token
     * @dev Only callable by the contract owner
     * @param _buyTotalFees New buy fee (in basis points, e.g., 10 = 1%)
     * @param _sellTotalFees New sell fee (in basis points, e.g., 10 = 1%)
     * @custom:security Fees are capped at 3% (300 basis points) for both buy and sell
     */
    function setFees(
        uint8 _buyTotalFees,
        uint8 _sellTotalFees
    ) external onlyOwner {
        require(
            _buyTotalFees <= 30,
            "Buy fees must be less than or equal to 3%"
        );
        require(
            _sellTotalFees <= 30,
            "Sell fees must be less than or equal to 3%"
        );
        buyTotalFees = _buyTotalFees;
        sellTotalFees = _sellTotalFees;
    }

    /**
     * @notice Excludes or includes an address from paying fees
     * @dev Only callable by the contract owner
     * @param account Address to be excluded or included
     * @param excluded True to exclude, false to include
     */
    function setExcludedFromFees(
        address account,
        bool excluded
    ) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    /**
     * @notice Excludes or includes an address from max transaction limit
     * @dev Only callable by the contract owner
     * @param account Address to be excluded or included
     * @param excluded True to exclude, false to include
     */
    function setExcludedFromMaxTransaction(
        address account,
        bool excluded
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[account] = excluded;
    }

    /**
     * @notice Enables trading for the token
     * @dev Only callable by the contract owner, can only be called once
     */
    function openTrade() external onlyOwner {
        require(!launched, "Already launched");
        launched = true;
    }

    /**
     * @notice Adds initial liquidity to the Uniswap pair
     * @dev Only callable by the contract owner, can only be called once
     * @custom:security Sends liquidity tokens to the teamWallet
     */
    function unleashMock() external payable onlyOwner {
        require(!launched, "Already launched");
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            _balances[address(this)],
            0,
            0,
            teamWallet,
            block.timestamp
        );
    }

    /**
     * @notice Sets or unsets an address as an automated market maker pair
     * @dev Only callable by the contract owner
     * @param pair Address of the pair to be set or unset
     * @param value True to set as AMM pair, false to unset
     * @custom:security Cannot unset the main Uniswap pair
     */
    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed");
        automatedMarketMakerPairs[pair] = value;
    }

    /**
     * @notice Sets the amount of tokens to swap and liquify
     * @dev Only callable by the contract owner
     * @param newSwapAmount New swap amount (in tokens)
     * @custom:security Limited between 0.001% and 0.5% of total supply
     */
    function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner {
        require(
            newSwapAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% of the supply"
        );
        require(
            newSwapAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% of the supply"
        );
        swapTokensAtAmount = newSwapAmount;
    }

    /**
     * @notice Sets the maximum transaction amount
     * @dev Only callable by the contract owner
     * @param newMaxTx New maximum transaction amount (in tokens)
     * @custom:security Cannot be set lower than 0.1% of total supply
     */
    function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner {
        require(
            newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set max transaction lower than 0.1%"
        );
        maxTransactionAmount = newMaxTx * (10 ** 18);
    }

    /**
     * @notice Sets the maximum wallet amount
     * @dev Only callable by the contract owner
     * @param newMaxWallet New maximum wallet amount (in tokens)
     * @custom:security Cannot be set lower than 1% of total supply
     */
    function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner {
        require(
            newMaxWallet >= ((totalSupply() * 1) / 100) / 1e18,
            "Cannot set max wallet lower than 1%"
        );
        maxWallet = newMaxWallet * (10 ** 18);
    }

    /**
     * @notice Updates the rev wallet address
     * @dev Only callable by the contract owner
     * @param newAddress New rev wallet address
     */
    function updateRevWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        revWallet = newAddress;
    }

    /**
     * @notice Updates the team wallet address
     * @dev Only callable by the contract owner
     * @param newAddress New team wallet address
     */
    function updateTeamWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        teamWallet = newAddress;
    }

    /**
     * @notice Updates the ecosystem wallet address
     * @dev Only callable by the contract owner
     * @param newAddress New ecosystem wallet address
     */
    function updateEcosystemWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        ecosystemWallet = newAddress;
    }

    /**
     * @notice Checks if an address is excluded from fees
     * @dev Public view function
     * @param account Address to check
     * @return True if excluded, false otherwise
     */
    function excludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    /**
     * @notice Withdraws stuck tokens from the contract
     * @dev Only callable by the contract owner
     * @param token Address of the token to withdraw
     * @param to Address to send the withdrawn tokens
     * @custom:security Use with caution to avoid withdrawing essential contract tokens
     */
    function withdrawStuckToken(address token, address to) external onlyOwner {
        uint256 _contractBalance = IERC20(token).balanceOf(address(this));
        SafeERC20.safeTransfer(token, to, _contractBalance); // Use safeTransfer
    }

    /**
     * @notice Withdraws stuck ETH from the contract
     * @dev Only callable by the contract owner
     * @param addr Address to send the withdrawn ETH
     * @custom:security Use with caution to avoid withdrawing essential contract ETH
     */
    function withdrawStuckETH(address addr) external onlyOwner {
        require(addr != address(0), "Invalid address");

        (bool success, ) = addr.call{value: address(this).balance}("");
        require(success, "Withdrawal failed");
    }

    /**
     * @notice Swaps accumulated tokens for ETH and distributes to wallets
     * @dev Internal function, called automatically during transfers when threshold is met
     * @custom:security Ensures no reentrancy by using a 'swapping' flag
     */
    function swapBack() private {
        uint256 swapThreshold = swapTokensAtAmount;
        bool success;

        if (balanceOf(address(this)) > swapTokensAtAmount * 20) {
            swapThreshold = swapTokensAtAmount * 20;
        }

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            uint256 ethForRev = (ethBalance * revFee) / 100;
            uint256 ethForTeam = ethBalance - ethForRev;

            (success, ) = address(teamWallet).call{value: ethForTeam}("");
            (success, ) = address(revWallet).call{value: ethForRev}("");

            emit SwapAndLiquify(swapThreshold, ethForTeam, ethForRev);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"revETH","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","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":"revFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_RevFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","type":"uint8"}],"name":"setDistributionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"_sellTotalFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unleashMock","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateEcosystemWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405269021e19e0c9bab240000060018190556002556127106200003169d3c21bcecceda10000006005620006a7565b6200003d9190620006d1565b600355600480546001600160a01b031990811673ea68f5a05a46f4471859bc996c57ba3c4e1cdbe817909155600580549091167315d89b47a64268d3e30ef3f87b59054bdca8bd3717905560068054790100501496963979abfe1963bfbb12e454487e169056a46fd0c7600161ff0160c01b0319909116179055348015620000c3575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000124573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014a9190620006f1565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001d09190620006f1565b6001600160a01b031660808190525f908152600b60205260409020805460ff19166001179055620002146200020c5f546001600160a01b031690565b600162000476565b6200022130600162000476565b6200023061dead600162000476565b60045462000249906001600160a01b0316600162000476565b60055462000262906001600160a01b0316600162000476565b6006546200027b906001600160a01b0316600162000476565b6200029c73e2fe530c047f2d85298b07d9333c05737f1435fb600162000476565b620002ba620002b25f546001600160a01b031690565b6001620004fd565b620002db737a250d5630b4cf539739df2c5dacb4c659f2488d6001620004fd565b620002e8306001620004fd565b620002f761dead6001620004fd565b60805162000307906001620004fd565b60045462000320906001600160a01b03166001620004fd565b60065462000339906001600160a01b03166001620004fd565b60055462000352906001600160a01b03166001620004fd565b6200037373e2fe530c047f2d85298b07d9333c05737f1435fb6001620004fd565b305f81815260076020908152604080832069b3fe97a2fafd2f4000009081905590519081525f8051602062002c41833981519152910160405180910390a3335f81815260076020908152604080832069152d02c7e14af68000009081905590519081525f8051602062002c41833981519152910160405180910390a3600580546001600160a01b039081165f90815260076020526040808220690a968163f0a57b4000009055925490911680825282822054925190925f8051602062002c41833981519152916200044691815260200190565b60405180910390a36200047030737a250d5630b4cf539739df2c5dacb4c659f2488d5f1962000580565b62000720565b33620004895f546001600160a01b031690565b6001600160a01b031614620004d35760405162461bcd60e51b815260206004820181905260248201525f8051602062002c2183398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33620005105f546001600160a01b031690565b6001600160a01b031614620005565760405162461bcd60e51b815260206004820181905260248201525f8051602062002c218339815191526044820152606401620004ca565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b038316620005e45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620004ca565b6001600160a01b038216620006475760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004ca565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8082028115828204841417620006cb57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82620006ec57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000702575f80fd5b81516001600160a01b038116811462000719575f80fd5b9392505050565b6080516124e1620007405f395f818161039b0152610e7c01526124e15ff3fe608060405260043610610220575f3560e01c80637cb332bb1161011e578063d201b01e116100a8578063e819532f1161006d578063e819532f146106db578063f186a68c146106e3578063f5ec723414610702578063f8b45b0514610721578063fb201b1d14610736575f80fd5b8063d201b01e14610623578063d7c94efd14610642578063d85ba06314610662578063dd62ed3e14610682578063e2f45605146106c6575f80fd5b80639a7a23d6116100ee5780639a7a23d614610592578063a9059cbb146105b1578063adfa29e5146105d0578063bc205ad3146105ef578063c8c8ebe41461060e575f80fd5b80637cb332bb146104f457806385ecafd7146105135780638da5cb5b1461054a57806395d89b4114610566575f80fd5b80634a62bb65116101aa5780636a486a8e1161016f5780636a486a8e1461045957806370a0823114610479578063715018a6146104ad57806374010ece146104c1578063751039fc146104e0575f80fd5b80634a62bb65146103bd5780634fcd2446146103dd578063590ffdce146103fc5780636402511e1461041b57806366650dae1461043a575f80fd5b806321d37e39116101f057806321d37e391461030557806323b872dd1461033757806327a14fc214610356578063313ce5671461037757806349bd5a5e1461038a575f80fd5b806306fdde031461022b578063095ea7b3146102715780631694505e146102a057806318160ddd146102df575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5060408051808201909152600c81526b135bd8dac810d85c1a5d185b60a21b60208201525b604051610268919061212f565b60405180910390f35b34801561027c575f80fd5b5061029061028b36600461217c565b61074a565b6040519015158152602001610268565b3480156102ab575f80fd5b506102c7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610268565b3480156102ea575f80fd5b5069d3c21bcecceda10000005b604051908152602001610268565b348015610310575f80fd5b5060065461032590600160b01b900460ff1681565b60405160ff9091168152602001610268565b348015610342575f80fd5b506102906103513660046121a4565b610760565b348015610361575f80fd5b506103756103703660046121dd565b610814565b005b348015610382575f80fd5b506012610325565b348015610395575f80fd5b506102c77f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c8575f80fd5b5060065461029090600160c81b900460ff1681565b3480156103e8575f80fd5b506103756103f7366004612204565b6108f3565b348015610407575f80fd5b50610375610416366004612245565b610a2c565b348015610426575f80fd5b506103756104353660046121dd565b610a8e565b348015610445575f80fd5b50610375610454366004612245565b610be9565b348015610464575f80fd5b5060065461032590600160a81b900460ff1681565b348015610484575f80fd5b506102f761049336600461227a565b6001600160a01b03165f9081526007602052604090205490565b3480156104b8575f80fd5b50610375610c4b565b3480156104cc575f80fd5b506103756104db3660046121dd565b610c94565b3480156104eb575f80fd5b50610375610d7b565b3480156104ff575f80fd5b5061037561050e36600461227a565b610dc2565b34801561051e575f80fd5b5061029061052d36600461227a565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610555575f80fd5b505f546001600160a01b03166102c7565b348015610571575f80fd5b506040805180820190915260048152634d4f434b60e01b602082015261025b565b34801561059d575f80fd5b506103756105ac366004612245565b610e42565b3480156105bc575f80fd5b506102906105cb36600461217c565b610f25565b3480156105db575f80fd5b506103756105ea36600461227a565b610f31565b3480156105fa575f80fd5b5061037561060936600461229a565b610fb1565b348015610619575f80fd5b506102f760015481565b34801561062e575f80fd5b5061037561063d36600461227a565b611063565b34801561064d575f80fd5b5060065461032590600160b81b900460ff1681565b34801561066d575f80fd5b5060065461032590600160a01b900460ff1681565b34801561068d575f80fd5b506102f761069c36600461229a565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156106d1575f80fd5b506102f760035481565b61037561117a565b3480156106ee575f80fd5b506103756106fd36600461227a565b6112b0565b34801561070d575f80fd5b5061037561071c366004612204565b611330565b34801561072c575f80fd5b506102f760025481565b348015610741575f80fd5b50610375611410565b5f6107563384846114aa565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146107fe57828110156107f15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107fe85338584036114aa565b6108098585856115cd565b506001949350505050565b336108265f546001600160a01b031690565b6001600160a01b03161461084c5760405162461bcd60e51b81526004016107e8906122c2565b670de0b6b3a7640000606461086c69d3c21bcecceda1000000600161230b565b6108769190612322565b6108809190612322565b8110156108db5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526220312560e81b60648201526084016107e8565b6108ed81670de0b6b3a764000061230b565b60025550565b336109055f546001600160a01b031690565b6001600160a01b03161461092b5760405162461bcd60e51b81526004016107e8906122c2565b601e8260ff1611156109915760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20332560b81b60648201526084016107e8565b601e8160ff1611156109f85760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20332560b01b60648201526084016107e8565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610a3e5f546001600160a01b031690565b6001600160a01b031614610a645760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610aa05f546001600160a01b031690565b6001600160a01b031614610ac65760405162461bcd60e51b81526004016107e8906122c2565b620186a0610adf69d3c21bcecceda1000000600161230b565b610ae99190612322565b811015610b565760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016107e8565b6103e8610b6e69d3c21bcecceda1000000600561230b565b610b789190612322565b811115610be45760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016107e8565b600355565b33610bfb5f546001600160a01b031690565b6001600160a01b031614610c215760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610c5d5f546001600160a01b031690565b6001600160a01b031614610c835760405162461bcd60e51b81526004016107e8906122c2565b5f80546001600160a01b0319169055565b33610ca65f546001600160a01b031690565b6001600160a01b031614610ccc5760405162461bcd60e51b81526004016107e8906122c2565b670de0b6b3a76400006103e8610ced69d3c21bcecceda1000000600161230b565b610cf79190612322565b610d019190612322565b811015610d635760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016107e8565b610d7581670de0b6b3a764000061230b565b60015550565b33610d8d5f546001600160a01b031690565b6001600160a01b031614610db35760405162461bcd60e51b81526004016107e8906122c2565b6006805460ff60c81b19169055565b33610dd45f546001600160a01b031690565b6001600160a01b031614610dfa5760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b038116610e205760405162461bcd60e51b81526004016107e890612341565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b33610e545f546001600160a01b031690565b6001600160a01b031614610e7a5760405162461bcd60e51b81526004016107e8906122c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610efb5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016107e8565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6107563384846115cd565b33610f435f546001600160a01b031690565b6001600160a01b031614610f695760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b038116610f8f5760405162461bcd60e51b81526004016107e890612341565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610fc35f546001600160a01b031690565b6001600160a01b031614610fe95760405162461bcd60e51b81526004016107e8906122c2565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561102d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110519190612371565b905061105e838383611d85565b505050565b336110755f546001600160a01b031690565b6001600160a01b03161461109b5760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b0381166110e35760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107e8565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f811461112c576040519150601f19603f3d011682016040523d82523d5f602084013e611131565b606091505b50509050806111765760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016107e8565b5050565b3361118c5f546001600160a01b031690565b6001600160a01b0316146111b25760405162461bcd60e51b81526004016107e8906122c2565b600654600160d01b900460ff16156111ff5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e8565b305f818152600760205260408082205460048054925163f305d71960e01b81529081019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561128b573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061105e9190612388565b336112c25f546001600160a01b031690565b6001600160a01b0316146112e85760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03811661130e5760405162461bcd60e51b81526004016107e890612341565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336113425f546001600160a01b031690565b6001600160a01b0316146113685760405162461bcd60e51b81526004016107e8906122c2565b6006805461ffff60b01b1916600160b01b60ff858116820260ff60b81b191692909217600160b81b858416810291909117938490556113b093908104831692919004166123b3565b60ff166064146111765760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b60648201526084016107e8565b336114225f546001600160a01b031690565b6001600160a01b0316146114485760405162461bcd60e51b81526004016107e8906122c2565b600654600160d01b900460ff16156114955760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e8565b6006805460ff60d01b1916600160d01b179055565b6001600160a01b03831661150c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e8565b6001600160a01b03821661156d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e8565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116315760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e8565b6001600160a01b0382166116935760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e8565b5f81116116f45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e8565b600654600160d01b900460ff1615801561174857505f546001600160a01b0384811691161480159061172f57506001600160a01b0383163014155b801561174857505f546001600160a01b03838116911614155b1561178b5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107e8565b600654600160c81b900460ff1615611a4c575f546001600160a01b038481169116148015906117c757505f546001600160a01b03838116911614155b80156117db57506001600160a01b03821615155b80156117f257506001600160a01b03821661dead14155b80156118085750600654600160c01b900460ff16155b15611a4c576001600160a01b0383165f908152600b602052604090205460ff16801561184c57506001600160a01b0382165f908152600a602052604090205460ff16155b1561191f576001548111156118b15760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016107e8565b6002546001600160a01b0383165f908152600760205260409020546118d690836123cc565b111561191a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e8565b611a4c565b6001600160a01b0382165f908152600b602052604090205460ff16801561195e57506001600160a01b0383165f908152600a602052604090205460ff16155b156119c45760015481111561191a5760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016107e8565b6001600160a01b0382165f908152600a602052604090205460ff16611a4c576002546001600160a01b0383165f90815260076020526040902054611a0890836123cc565b1115611a4c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e8565b600354305f90815260076020526040902054108015908190611a785750600654600160c01b900460ff16155b8015611a9c57506001600160a01b0384165f908152600b602052604090205460ff16155b8015611ac057506001600160a01b0384165f9081526009602052604090205460ff16155b8015611ae457506001600160a01b0383165f9081526009602052604090205460ff16155b15611b12576006805460ff60c01b1916600160c01b179055611b04611eac565b6006805460ff60c01b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c01b909204821615911680611b5e57506001600160a01b0384165f9081526009602052604090205460ff165b15611b6657505f5b6001600160a01b0385165f9081526007602052604090205483811015611bdd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107e8565b5f8215611d13576001600160a01b0386165f908152600b602052604090205460ff168015611c165750600654600160a81b900460ff1615155b15611c47576006546103e890611c3690600160a81b900460ff168761230b565b611c409190612322565b9050611ca6565b6001600160a01b0387165f908152600b602052604090205460ff168015611c795750600654600160a01b900460ff1615155b15611ca6576006546103e890611c9990600160a01b900460ff168761230b565b611ca39190612322565b90505b8015611d13576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d749089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611de091906123df565b5f604051808303815f865af19150503d805f8114611e19576040519150601f19603f3d011682016040523d82523d5f602084013e611e1e565b606091505b5091509150818015611e48575080511580611e48575080806020019051810190611e4891906123fa565b611ea55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016107e8565b5050505050565b6003545f611ebb82601461230b565b305f908152600760205260409020541115611ee157600354611ede90601461230b565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f1457611f14612415565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611f5c57611f5c612415565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611fb39086905f90869030904290600401612429565b5f604051808303815f87803b158015611fca575f80fd5b505af1158015611fdc573d5f803e3d5ffd5b504792505081159050612107576006545f9060649061200590600160b01b900460ff168461230b565b61200f9190612322565b90505f61201c8284612498565b6004546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114612067576040519150601f19603f3d011682016040523d82523d5f602084013e61206c565b606091505b50506006546040519196506001600160a01b03169083905f81818185875af1925050503d805f81146120b9576040519150601f19603f3d011682016040523d82523d5f602084013e6120be565b606091505b505060408051888152602081018490529081018490529095507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150505b50505050565b5f5b8381101561212757818101518382015260200161210f565b50505f910152565b602081525f825180602084015261214d81604085016020870161210d565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612177575f80fd5b919050565b5f806040838503121561218d575f80fd5b61219683612161565b946020939093013593505050565b5f805f606084860312156121b6575f80fd5b6121bf84612161565b92506121cd60208501612161565b9150604084013590509250925092565b5f602082840312156121ed575f80fd5b5035919050565b803560ff81168114612177575f80fd5b5f8060408385031215612215575f80fd5b61221e836121f4565b915061222c602084016121f4565b90509250929050565b8015158114612242575f80fd5b50565b5f8060408385031215612256575f80fd5b61225f83612161565b9150602083013561226f81612235565b809150509250929050565b5f6020828403121561228a575f80fd5b61229382612161565b9392505050565b5f80604083850312156122ab575f80fd5b6122b483612161565b915061222c60208401612161565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761075a5761075a6122f7565b5f8261233c57634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f60208284031215612381575f80fd5b5051919050565b5f805f6060848603121561239a575f80fd5b8351925060208401519150604084015190509250925092565b60ff818116838216019081111561075a5761075a6122f7565b8082018082111561075a5761075a6122f7565b5f82516123f081846020870161210d565b9190910192915050565b5f6020828403121561240a575f80fd5b815161229381612235565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156124775784516001600160a01b031683529383019391830191600101612452565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561075a5761075a6122f756fea26469706673582212209f9b8803f219d38dc90f6e2d551d610570c328ed1bcb5dd2222ffc13663342e864736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x608060405260043610610220575f3560e01c80637cb332bb1161011e578063d201b01e116100a8578063e819532f1161006d578063e819532f146106db578063f186a68c146106e3578063f5ec723414610702578063f8b45b0514610721578063fb201b1d14610736575f80fd5b8063d201b01e14610623578063d7c94efd14610642578063d85ba06314610662578063dd62ed3e14610682578063e2f45605146106c6575f80fd5b80639a7a23d6116100ee5780639a7a23d614610592578063a9059cbb146105b1578063adfa29e5146105d0578063bc205ad3146105ef578063c8c8ebe41461060e575f80fd5b80637cb332bb146104f457806385ecafd7146105135780638da5cb5b1461054a57806395d89b4114610566575f80fd5b80634a62bb65116101aa5780636a486a8e1161016f5780636a486a8e1461045957806370a0823114610479578063715018a6146104ad57806374010ece146104c1578063751039fc146104e0575f80fd5b80634a62bb65146103bd5780634fcd2446146103dd578063590ffdce146103fc5780636402511e1461041b57806366650dae1461043a575f80fd5b806321d37e39116101f057806321d37e391461030557806323b872dd1461033757806327a14fc214610356578063313ce5671461037757806349bd5a5e1461038a575f80fd5b806306fdde031461022b578063095ea7b3146102715780631694505e146102a057806318160ddd146102df575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5060408051808201909152600c81526b135bd8dac810d85c1a5d185b60a21b60208201525b604051610268919061212f565b60405180910390f35b34801561027c575f80fd5b5061029061028b36600461217c565b61074a565b6040519015158152602001610268565b3480156102ab575f80fd5b506102c7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610268565b3480156102ea575f80fd5b5069d3c21bcecceda10000005b604051908152602001610268565b348015610310575f80fd5b5060065461032590600160b01b900460ff1681565b60405160ff9091168152602001610268565b348015610342575f80fd5b506102906103513660046121a4565b610760565b348015610361575f80fd5b506103756103703660046121dd565b610814565b005b348015610382575f80fd5b506012610325565b348015610395575f80fd5b506102c77f000000000000000000000000e002e4e1f083795e9cbc3f1c74182286e85472d281565b3480156103c8575f80fd5b5060065461029090600160c81b900460ff1681565b3480156103e8575f80fd5b506103756103f7366004612204565b6108f3565b348015610407575f80fd5b50610375610416366004612245565b610a2c565b348015610426575f80fd5b506103756104353660046121dd565b610a8e565b348015610445575f80fd5b50610375610454366004612245565b610be9565b348015610464575f80fd5b5060065461032590600160a81b900460ff1681565b348015610484575f80fd5b506102f761049336600461227a565b6001600160a01b03165f9081526007602052604090205490565b3480156104b8575f80fd5b50610375610c4b565b3480156104cc575f80fd5b506103756104db3660046121dd565b610c94565b3480156104eb575f80fd5b50610375610d7b565b3480156104ff575f80fd5b5061037561050e36600461227a565b610dc2565b34801561051e575f80fd5b5061029061052d36600461227a565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610555575f80fd5b505f546001600160a01b03166102c7565b348015610571575f80fd5b506040805180820190915260048152634d4f434b60e01b602082015261025b565b34801561059d575f80fd5b506103756105ac366004612245565b610e42565b3480156105bc575f80fd5b506102906105cb36600461217c565b610f25565b3480156105db575f80fd5b506103756105ea36600461227a565b610f31565b3480156105fa575f80fd5b5061037561060936600461229a565b610fb1565b348015610619575f80fd5b506102f760015481565b34801561062e575f80fd5b5061037561063d36600461227a565b611063565b34801561064d575f80fd5b5060065461032590600160b81b900460ff1681565b34801561066d575f80fd5b5060065461032590600160a01b900460ff1681565b34801561068d575f80fd5b506102f761069c36600461229a565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156106d1575f80fd5b506102f760035481565b61037561117a565b3480156106ee575f80fd5b506103756106fd36600461227a565b6112b0565b34801561070d575f80fd5b5061037561071c366004612204565b611330565b34801561072c575f80fd5b506102f760025481565b348015610741575f80fd5b50610375611410565b5f6107563384846114aa565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146107fe57828110156107f15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107fe85338584036114aa565b6108098585856115cd565b506001949350505050565b336108265f546001600160a01b031690565b6001600160a01b03161461084c5760405162461bcd60e51b81526004016107e8906122c2565b670de0b6b3a7640000606461086c69d3c21bcecceda1000000600161230b565b6108769190612322565b6108809190612322565b8110156108db5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526220312560e81b60648201526084016107e8565b6108ed81670de0b6b3a764000061230b565b60025550565b336109055f546001600160a01b031690565b6001600160a01b03161461092b5760405162461bcd60e51b81526004016107e8906122c2565b601e8260ff1611156109915760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20332560b81b60648201526084016107e8565b601e8160ff1611156109f85760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20332560b01b60648201526084016107e8565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610a3e5f546001600160a01b031690565b6001600160a01b031614610a645760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610aa05f546001600160a01b031690565b6001600160a01b031614610ac65760405162461bcd60e51b81526004016107e8906122c2565b620186a0610adf69d3c21bcecceda1000000600161230b565b610ae99190612322565b811015610b565760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016107e8565b6103e8610b6e69d3c21bcecceda1000000600561230b565b610b789190612322565b811115610be45760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016107e8565b600355565b33610bfb5f546001600160a01b031690565b6001600160a01b031614610c215760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610c5d5f546001600160a01b031690565b6001600160a01b031614610c835760405162461bcd60e51b81526004016107e8906122c2565b5f80546001600160a01b0319169055565b33610ca65f546001600160a01b031690565b6001600160a01b031614610ccc5760405162461bcd60e51b81526004016107e8906122c2565b670de0b6b3a76400006103e8610ced69d3c21bcecceda1000000600161230b565b610cf79190612322565b610d019190612322565b811015610d635760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016107e8565b610d7581670de0b6b3a764000061230b565b60015550565b33610d8d5f546001600160a01b031690565b6001600160a01b031614610db35760405162461bcd60e51b81526004016107e8906122c2565b6006805460ff60c81b19169055565b33610dd45f546001600160a01b031690565b6001600160a01b031614610dfa5760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b038116610e205760405162461bcd60e51b81526004016107e890612341565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b33610e545f546001600160a01b031690565b6001600160a01b031614610e7a5760405162461bcd60e51b81526004016107e8906122c2565b7f000000000000000000000000e002e4e1f083795e9cbc3f1c74182286e85472d26001600160a01b0316826001600160a01b031603610efb5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016107e8565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6107563384846115cd565b33610f435f546001600160a01b031690565b6001600160a01b031614610f695760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b038116610f8f5760405162461bcd60e51b81526004016107e890612341565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610fc35f546001600160a01b031690565b6001600160a01b031614610fe95760405162461bcd60e51b81526004016107e8906122c2565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561102d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110519190612371565b905061105e838383611d85565b505050565b336110755f546001600160a01b031690565b6001600160a01b03161461109b5760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b0381166110e35760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107e8565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f811461112c576040519150601f19603f3d011682016040523d82523d5f602084013e611131565b606091505b50509050806111765760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016107e8565b5050565b3361118c5f546001600160a01b031690565b6001600160a01b0316146111b25760405162461bcd60e51b81526004016107e8906122c2565b600654600160d01b900460ff16156111ff5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e8565b305f818152600760205260408082205460048054925163f305d71960e01b81529081019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561128b573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061105e9190612388565b336112c25f546001600160a01b031690565b6001600160a01b0316146112e85760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03811661130e5760405162461bcd60e51b81526004016107e890612341565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336113425f546001600160a01b031690565b6001600160a01b0316146113685760405162461bcd60e51b81526004016107e8906122c2565b6006805461ffff60b01b1916600160b01b60ff858116820260ff60b81b191692909217600160b81b858416810291909117938490556113b093908104831692919004166123b3565b60ff166064146111765760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b60648201526084016107e8565b336114225f546001600160a01b031690565b6001600160a01b0316146114485760405162461bcd60e51b81526004016107e8906122c2565b600654600160d01b900460ff16156114955760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e8565b6006805460ff60d01b1916600160d01b179055565b6001600160a01b03831661150c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e8565b6001600160a01b03821661156d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e8565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116315760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e8565b6001600160a01b0382166116935760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e8565b5f81116116f45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e8565b600654600160d01b900460ff1615801561174857505f546001600160a01b0384811691161480159061172f57506001600160a01b0383163014155b801561174857505f546001600160a01b03838116911614155b1561178b5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107e8565b600654600160c81b900460ff1615611a4c575f546001600160a01b038481169116148015906117c757505f546001600160a01b03838116911614155b80156117db57506001600160a01b03821615155b80156117f257506001600160a01b03821661dead14155b80156118085750600654600160c01b900460ff16155b15611a4c576001600160a01b0383165f908152600b602052604090205460ff16801561184c57506001600160a01b0382165f908152600a602052604090205460ff16155b1561191f576001548111156118b15760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016107e8565b6002546001600160a01b0383165f908152600760205260409020546118d690836123cc565b111561191a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e8565b611a4c565b6001600160a01b0382165f908152600b602052604090205460ff16801561195e57506001600160a01b0383165f908152600a602052604090205460ff16155b156119c45760015481111561191a5760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016107e8565b6001600160a01b0382165f908152600a602052604090205460ff16611a4c576002546001600160a01b0383165f90815260076020526040902054611a0890836123cc565b1115611a4c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e8565b600354305f90815260076020526040902054108015908190611a785750600654600160c01b900460ff16155b8015611a9c57506001600160a01b0384165f908152600b602052604090205460ff16155b8015611ac057506001600160a01b0384165f9081526009602052604090205460ff16155b8015611ae457506001600160a01b0383165f9081526009602052604090205460ff16155b15611b12576006805460ff60c01b1916600160c01b179055611b04611eac565b6006805460ff60c01b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c01b909204821615911680611b5e57506001600160a01b0384165f9081526009602052604090205460ff165b15611b6657505f5b6001600160a01b0385165f9081526007602052604090205483811015611bdd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107e8565b5f8215611d13576001600160a01b0386165f908152600b602052604090205460ff168015611c165750600654600160a81b900460ff1615155b15611c47576006546103e890611c3690600160a81b900460ff168761230b565b611c409190612322565b9050611ca6565b6001600160a01b0387165f908152600b602052604090205460ff168015611c795750600654600160a01b900460ff1615155b15611ca6576006546103e890611c9990600160a01b900460ff168761230b565b611ca39190612322565b90505b8015611d13576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d749089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611de091906123df565b5f604051808303815f865af19150503d805f8114611e19576040519150601f19603f3d011682016040523d82523d5f602084013e611e1e565b606091505b5091509150818015611e48575080511580611e48575080806020019051810190611e4891906123fa565b611ea55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016107e8565b5050505050565b6003545f611ebb82601461230b565b305f908152600760205260409020541115611ee157600354611ede90601461230b565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f1457611f14612415565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611f5c57611f5c612415565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611fb39086905f90869030904290600401612429565b5f604051808303815f87803b158015611fca575f80fd5b505af1158015611fdc573d5f803e3d5ffd5b504792505081159050612107576006545f9060649061200590600160b01b900460ff168461230b565b61200f9190612322565b90505f61201c8284612498565b6004546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114612067576040519150601f19603f3d011682016040523d82523d5f602084013e61206c565b606091505b50506006546040519196506001600160a01b03169083905f81818185875af1925050503d805f81146120b9576040519150601f19603f3d011682016040523d82523d5f602084013e6120be565b606091505b505060408051888152602081018490529081018490529095507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150505b50505050565b5f5b8381101561212757818101518382015260200161210f565b50505f910152565b602081525f825180602084015261214d81604085016020870161210d565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612177575f80fd5b919050565b5f806040838503121561218d575f80fd5b61219683612161565b946020939093013593505050565b5f805f606084860312156121b6575f80fd5b6121bf84612161565b92506121cd60208501612161565b9150604084013590509250925092565b5f602082840312156121ed575f80fd5b5035919050565b803560ff81168114612177575f80fd5b5f8060408385031215612215575f80fd5b61221e836121f4565b915061222c602084016121f4565b90509250929050565b8015158114612242575f80fd5b50565b5f8060408385031215612256575f80fd5b61225f83612161565b9150602083013561226f81612235565b809150509250929050565b5f6020828403121561228a575f80fd5b61229382612161565b9392505050565b5f80604083850312156122ab575f80fd5b6122b483612161565b915061222c60208401612161565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761075a5761075a6122f7565b5f8261233c57634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f60208284031215612381575f80fd5b5051919050565b5f805f6060848603121561239a575f80fd5b8351925060208401519150604084015190509250925092565b60ff818116838216019081111561075a5761075a6122f7565b8082018082111561075a5761075a6122f7565b5f82516123f081846020870161210d565b9190910192915050565b5f6020828403121561240a575f80fd5b815161229381612235565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156124775784516001600160a01b031683529383019391830191600101612452565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561075a5761075a6122f756fea26469706673582212209f9b8803f219d38dc90f6e2d551d610570c328ed1bcb5dd2222ffc13663342e864736f6c63430008150033

Deployed Bytecode Sourcemap

2224:18512:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5927:83;;;;;;;;;;-1:-1:-1;5997:5:0;;;;;;;;;;;;-1:-1:-1;;;5997:5:0;;;;5927:83;;;;;;;:::i;:::-;;;;;;;;6581:152;;;;;;;;;;-1:-1:-1;6581:152:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;6581:152:0;1107:187:1;3821:124:0;;;;;;;;;;;;3902:42;3821:124;;;;;-1:-1:-1;;;;;1489:32:1;;;1471:51;;1459:2;1444:18;3821:124:0;1299:229:1;6197:91:0;;;;;;;;;;-1:-1:-1;2410:16:0;6197:91;;;1679:25:1;;;1667:2;1652:18;6197:91:0;1533:177:1;3020:24:0;;;;;;;;;;-1:-1:-1;3020:24:0;;;;-1:-1:-1;;;3020:24:0;;;;;;;;;1887:4:1;1875:17;;;1857:36;;1845:2;1830:18;3020:24:0;1715:184:1;7277:603:0;;;;;;;;;;-1:-1:-1;7277:603:0;;;;;:::i;:::-;;:::i;16698:271::-;;;;;;;;;;-1:-1:-1;16698:271:0;;;;;:::i;:::-;;:::i;:::-;;6113:76;;;;;;;;;;-1:-1:-1;6179:2:0;6113:76;;3952:38;;;;;;;;;;;;;;;3113:33;;;;;;;;;;-1:-1:-1;3113:33:0;;;;-1:-1:-1;;;3113:33:0;;;;;;12504:436;;;;;;;;;;-1:-1:-1;12504:436:0;;;;;:::i;:::-;;:::i;13196:161::-;;;;;;;;;;-1:-1:-1;13196:161:0;;;;;:::i;:::-;;:::i;15466:435::-;;;;;;;;;;-1:-1:-1;15466:435:0;;;;;:::i;:::-;;:::i;13623:183::-;;;;;;;;;;-1:-1:-1;13623:183:0;;;;;:::i;:::-;;:::i;2979:32::-;;;;;;;;;;-1:-1:-1;2979:32:0;;;;-1:-1:-1;;;2979:32:0;;;;;;6296:110;;;;;;;;;;-1:-1:-1;6296:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;6380:18:0;6353:7;6380:18;;;:9;:18;;;;;;;6296:110;695:92;;;;;;;;;;;;;:::i;16166:275::-;;;;;;;;;;-1:-1:-1;16166:275:0;;;;;:::i;:::-;;:::i;11427:84::-;;;;;;;;;;;;;:::i;17488:177::-;;;;;;;;;;-1:-1:-1;17488:177:0;;;;;:::i;:::-;;:::i;18244:123::-;;;;;;;;;;-1:-1:-1;18244:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;18331:28:0;18307:4;18331:28;;;:19;:28;;;;;;;;;18244:123;474:87;;;;;;;;;;-1:-1:-1;520:7:0;547:6;-1:-1:-1;;;;;547:6:0;474:87;;6018;;;;;;;;;;-1:-1:-1;6090:7:0;;;;;;;;;;;;-1:-1:-1;;;6090:7:0;;;;6018:87;;14963:236;;;;;;;;;;-1:-1:-1;14963:236:0;;;;;:::i;:::-;;:::i;7086:183::-;;;;;;;;;;-1:-1:-1;7086:183:0;;;;;:::i;:::-;;:::i;17140:175::-;;;;;;;;;;-1:-1:-1;17140:175:0;;;;;:::i;:::-;;:::i;18697:240::-;;;;;;;;;;-1:-1:-1;18697:240:0;;;;;:::i;:::-;;:::i;2435:51::-;;;;;;;;;;;;;;;;19206:247;;;;;;;;;;-1:-1:-1;19206:247:0;;;;;:::i;:::-;;:::i;3051:25::-;;;;;;;;;;-1:-1:-1;3051:25:0;;;;-1:-1:-1;;;3051:25:0;;;;;;2941:31;;;;;;;;;;-1:-1:-1;2941:31:0;;;;-1:-1:-1;;;2941:31:0;;;;;;6414:159;;;;;;;;;;-1:-1:-1;6414:159:0;;;;;:::i;:::-;-1:-1:-1;;;;;6538:18:0;;;6511:7;6538:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6414:159;2540:62;;;;;;;;;;;;;;;;14300:332;;;:::i;17848:187::-;;;;;;;;;;-1:-1:-1;17848:187:0;;;;;:::i;:::-;;:::i;11843:291::-;;;;;;;;;;-1:-1:-1;11843:291:0;;;;;:::i;:::-;;:::i;2493:40::-;;;;;;;;;;;;;;;;13952:123;;;;;;;;;;;;;:::i;6581:152::-;6649:4;6666:37;6675:10;6687:7;6696:6;6666:8;:37::i;:::-;-1:-1:-1;6721:4:0;6581:152;;;;;:::o;7277:603::-;-1:-1:-1;;;;;7446:19:0;;7402:4;7446:19;;;:11;:19;;;;;;;;7466:10;7446:31;;;;;;;;-1:-1:-1;;7492:37:0;;7488:312;;7592:6;7572:16;:26;;7546:128;;;;-1:-1:-1;;;7546:128:0;;4149:2:1;7546:128:0;;;4131:21:1;4188:2;4168:18;;;4161:30;4227:34;4207:18;;;4200:62;-1:-1:-1;;;4278:18:1;;;4271:38;4326:19;;7546:128:0;;;;;;;;;7718:55;7727:6;7735:10;7766:6;7747:16;:25;7718:8;:55::i;:::-;7812:36;7822:6;7830:9;7841:6;7812:9;:36::i;:::-;-1:-1:-1;7868:4:0;;7277:603;-1:-1:-1;;;;7277:603:0:o;16698:271::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;16846:4:::1;16839:3;16818:17;2410:16:::0;16834:1:::1;16818:17;:::i;:::-;16817:25;;;;:::i;:::-;16816:34;;;;:::i;:::-;16800:12;:50;;16778:135;;;::::0;-1:-1:-1;;;16778:135:0;;5446:2:1;16778:135:0::1;::::0;::::1;5428:21:1::0;5485:2;5465:18;;;5458:30;5524:34;5504:18;;;5497:62;-1:-1:-1;;;5575:18:1;;;5568:33;5618:19;;16778:135:0::1;5244:399:1::0;16778:135:0::1;16936:25;:12:::0;16952:8:::1;16936:25;:::i;:::-;16924:9;:37:::0;-1:-1:-1;16698:271:0:o;12504:436::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;12658:2:::1;12641:13;:19;;;;12619:110;;;::::0;-1:-1:-1;;;12619:110:0;;5850:2:1;12619:110:0::1;::::0;::::1;5832:21:1::0;5889:2;5869:18;;;5862:30;5928:34;5908:18;;;5901:62;-1:-1:-1;;;5979:18:1;;;5972:39;6028:19;;12619:110:0::1;5648:405:1::0;12619:110:0::1;12780:2;12762:14;:20;;;;12740:112;;;::::0;-1:-1:-1;;;12740:112:0;;6260:2:1;12740:112:0::1;::::0;::::1;6242:21:1::0;6299:2;6279:18;;;6272:30;6338:34;6318:18;;;6311:62;-1:-1:-1;;;6389:18:1;;;6382:40;6439:19;;12740:112:0::1;6058:406:1::0;12740:112:0::1;12863:12;:28:::0;;-1:-1:-1;;;;12902:30:0;-1:-1:-1;;;12863:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;12902:30:0;;-1:-1:-1;;;12902:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;12504:436::o;13196:161::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13310:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;13310:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13196:161::o;15466:435::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;15605:6:::1;15584:17;2410:16:::0;15600:1:::1;15584:17;:::i;:::-;15583:28;;;;:::i;:::-;15566:13;:45;;15544:148;;;::::0;-1:-1:-1;;;15544:148:0;;6671:2:1;15544:148:0::1;::::0;::::1;6653:21:1::0;6710:2;6690:18;;;6683:30;6749:34;6729:18;;;6722:62;-1:-1:-1;;;6800:18:1;;;6793:51;6861:19;;15544:148:0::1;6469:417:1::0;15544:148:0::1;15764:4;15743:17;2410:16:::0;15759:1:::1;15743:17;:::i;:::-;15742:26;;;;:::i;:::-;15725:13;:43;;15703:145;;;::::0;-1:-1:-1;;;15703:145:0;;7093:2:1;15703:145:0::1;::::0;::::1;7075:21:1::0;7132:2;7112:18;;;7105:30;7171:34;7151:18;;;7144:62;-1:-1:-1;;;7222:18:1;;;7215:50;7282:19;;15703:145:0::1;6891:416:1::0;15703:145:0::1;15859:18;:34:::0;15466:435::o;13623:183::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13747:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;13747:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13623:183::o;695:92::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;777:1:::1;760:19:::0;;-1:-1:-1;;;;;;760:19:0::1;::::0;;695:92::o;16166:275::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;16304:4:::1;16296;16275:17;2410:16:::0;16291:1:::1;16275:17;:::i;:::-;16274:26;;;;:::i;:::-;16273:35;;;;:::i;:::-;16261:8;:47;;16239:139;;;::::0;-1:-1:-1;;;16239:139:0;;7514:2:1;16239:139:0::1;::::0;::::1;7496:21:1::0;7553:2;7533:18;;;7526:30;7592:34;7572:18;;;7565:62;-1:-1:-1;;;7643:18:1;;;7636:40;7693:19;;16239:139:0::1;7312:406:1::0;16239:139:0::1;16412:21;:8:::0;16424::::1;16412:21;:::i;:::-;16389:20;:44:::0;-1:-1:-1;16166:275:0:o;11427:84::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;11481:14:::1;:22:::0;;-1:-1:-1;;;;11481:22:0::1;::::0;;11427:84::o;17488:177::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17572:24:0;::::1;17564:59;;;;-1:-1:-1::0;;;17564:59:0::1;;;;;;;:::i;:::-;17634:10;:23:::0;;-1:-1:-1;;;;;;17634:23:0::1;-1:-1:-1::0;;;;;17634:23:0;;;::::1;::::0;;;::::1;::::0;;17488:177::o;14963:236::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;15097:13:::1;-1:-1:-1::0;;;;;15089:21:0::1;:4;-1:-1:-1::0;;;;;15089:21:0::1;::::0;15081:60:::1;;;::::0;-1:-1:-1;;;15081:60:0;;8276:2:1;15081:60:0::1;::::0;::::1;8258:21:1::0;8315:2;8295:18;;;8288:30;8354:28;8334:18;;;8327:56;8400:18;;15081:60:0::1;8074:350:1::0;15081:60:0::1;-1:-1:-1::0;;;;;15152:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;15152:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14963:236::o;7086:183::-;7182:4;7199:40;7209:10;7221:9;7232:6;7199:9;:40::i;17140:175::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17223:24:0;::::1;17215:59;;;;-1:-1:-1::0;;;17215:59:0::1;;;;;;;:::i;:::-;17285:9;:22:::0;;-1:-1:-1;;;;;;17285:22:0::1;-1:-1:-1::0;;;;;17285:22:0;;;::::1;::::0;;;::::1;::::0;;17140:175::o;18697:240::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;18809:38:::1;::::0;-1:-1:-1;;;18809:38:0;;18841:4:::1;18809:38;::::0;::::1;1471:51:1::0;18782:24:0::1;::::0;-1:-1:-1;;;;;18809:23:0;::::1;::::0;::::1;::::0;1444:18:1;;18809:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18782:65;;18858:51;18881:5;18888:2;18892:16;18858:22;:51::i;:::-;18771:166;18697:240:::0;;:::o;19206:247::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19284:18:0;::::1;19276:46;;;::::0;-1:-1:-1;;;19276:46:0;;8820:2:1;19276:46:0::1;::::0;::::1;8802:21:1::0;8859:2;8839:18;;;8832:30;-1:-1:-1;;;8878:18:1;;;8871:45;8933:18;;19276:46:0::1;8618:339:1::0;19276:46:0::1;19336:12;19354:4;-1:-1:-1::0;;;;;19354:9:0::1;19371:21;19354:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19335:62;;;19416:7;19408:37;;;::::0;-1:-1:-1;;;19408:37:0;;9374:2:1;19408:37:0::1;::::0;::::1;9356:21:1::0;9413:2;9393:18;;;9386:30;-1:-1:-1;;;9432:18:1;;;9425:47;9489:18;;19408:37:0::1;9172:341:1::0;19408:37:0::1;19265:188;19206:247:::0;:::o;14300:332::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;14370:8:::1;::::0;-1:-1:-1;;;14370:8:0;::::1;;;14369:9;14361:38;;;::::0;-1:-1:-1;;;14361:38:0;;9720:2:1;14361:38:0::1;::::0;::::1;9702:21:1::0;9759:2;9739:18;;;9732:30;-1:-1:-1;;;9778:18:1;;;9771:46;9834:18;;14361:38:0::1;9518:340:1::0;14361:38:0::1;14482:4;14502:24;::::0;;;:9:::1;:24;::::0;;;;;;14573:10:::1;::::0;;14410:214;;-1:-1:-1;;;14410:214:0;;;;::::1;10204:34:1::0;;;;10254:18;;;10247:34;10297:18;;;10290:34;;;10340:18;;;10333:34;;;;-1:-1:-1;;;;;14573:10:0::1;10383:19:1::0;;;10376:44;14598:15:0::1;10436:19:1::0;;;10429:35;3902:42:0::1;::::0;14410:31:::1;::::0;14449:9:::1;::::0;10138:19:1;;14410:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17848:187::-:0;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17937:24:0;::::1;17929:59;;;;-1:-1:-1::0;;;17929:59:0::1;;;;;;;:::i;:::-;17999:15;:28:::0;;-1:-1:-1;;;;;;17999:28:0::1;-1:-1:-1::0;;;;;17999:28:0;;;::::1;::::0;;;::::1;::::0;;17848:187::o;11843:291::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;11958:6:::1;:16:::0;;-1:-1:-1;;;;11985:18:0;-1:-1:-1;;;11958:16:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;11985:18:0;;;;;-1:-1:-1;;;11985:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12037:16:::1;::::0;12046:7;;::::1;::::0;::::1;::::0;12037:6;;::::1;;:16;:::i;:::-;12036:25;;12058:3;12036:25;12014:112;;;::::0;-1:-1:-1;;;12014:112:0;;11141:2:1;12014:112:0::1;::::0;::::1;11123:21:1::0;11180:2;11160:18;;;11153:30;11219:34;11199:18;;;11192:62;-1:-1:-1;;;11270:18:1;;;11263:35;11315:19;;12014:112:0::1;10939:401:1::0;13952:123:0;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;14012:8:::1;::::0;-1:-1:-1;;;14012:8:0;::::1;;;14011:9;14003:38;;;::::0;-1:-1:-1;;;14003:38:0;;9720:2:1;14003:38:0::1;::::0;::::1;9702:21:1::0;9759:2;9739:18;;;9732:30;-1:-1:-1;;;9778:18:1;;;9771:46;9834:18;;14003:38:0::1;9518:340:1::0;14003:38:0::1;14052:8;:15:::0;;-1:-1:-1;;;;14052:15:0::1;-1:-1:-1::0;;;14052:15:0::1;::::0;;13952:123::o;6741:337::-;-1:-1:-1;;;;;6834:19:0;;6826:68;;;;-1:-1:-1;;;6826:68:0;;11547:2:1;6826:68:0;;;11529:21:1;11586:2;11566:18;;;11559:30;11625:34;11605:18;;;11598:62;-1:-1:-1;;;11676:18:1;;;11669:34;11720:19;;6826:68:0;11345:400:1;6826:68:0;-1:-1:-1;;;;;6913:21:0;;6905:68;;;;-1:-1:-1;;;6905:68:0;;11952:2:1;6905:68:0;;;11934:21:1;11991:2;11971:18;;;11964:30;12030:34;12010:18;;;12003:62;-1:-1:-1;;;12081:18:1;;;12074:32;12123:19;;6905:68:0;11750:398:1;6905:68:0;-1:-1:-1;;;;;6986:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7038:32;;1679:25:1;;;7038:32:0;;1652:18:1;7038:32:0;;;;;;;6741:337;;;:::o;7888:3342::-;-1:-1:-1;;;;;7976:18:0;;7968:68;;;;-1:-1:-1;;;7968:68:0;;12355:2:1;7968:68:0;;;12337:21:1;12394:2;12374:18;;;12367:30;12433:34;12413:18;;;12406:62;-1:-1:-1;;;12484:18:1;;;12477:35;12529:19;;7968:68:0;12153:401:1;7968:68:0;-1:-1:-1;;;;;8055:16:0;;8047:64;;;;-1:-1:-1;;;8047:64:0;;12761:2:1;8047:64:0;;;12743:21:1;12800:2;12780:18;;;12773:30;12839:34;12819:18;;;12812:62;-1:-1:-1;;;12890:18:1;;;12883:33;12933:19;;8047:64:0;12559:399:1;8047:64:0;8139:1;8130:6;:10;8122:64;;;;-1:-1:-1;;;8122:64:0;;13165:2:1;8122:64:0;;;13147:21:1;13204:2;13184:18;;;13177:30;13243:34;13223:18;;;13216:62;-1:-1:-1;;;13294:18:1;;;13287:39;13343:19;;8122:64:0;12963:405:1;8122:64:0;8218:8;;-1:-1:-1;;;8218:8:0;;;;8217:9;:85;;;;-1:-1:-1;520:7:0;547:6;-1:-1:-1;;;;;8244:15:0;;;547:6;;8244:15;;;;:40;;-1:-1:-1;;;;;;8263:21:0;;8279:4;8263:21;;8244:40;:57;;;;-1:-1:-1;520:7:0;547:6;-1:-1:-1;;;;;8288:13:0;;;547:6;;8288:13;;8244:57;8199:171;;;8329:29;;-1:-1:-1;;;8329:29:0;;13575:2:1;8329:29:0;;;13557:21:1;13614:2;13594:18;;;13587:30;-1:-1:-1;;;13633:18:1;;;13626:49;13692:18;;8329:29:0;13373:343:1;8199:171:0;8386:14;;-1:-1:-1;;;8386:14:0;;;;8382:1345;;;520:7;547:6;-1:-1:-1;;;;;8439:15:0;;;547:6;;8439:15;;;;:49;;-1:-1:-1;520:7:0;547:6;-1:-1:-1;;;;;8475:13:0;;;547:6;;8475:13;;8439:49;:86;;;;-1:-1:-1;;;;;;8509:16:0;;;;8439:86;:128;;;;-1:-1:-1;;;;;;8546:21:0;;8560:6;8546:21;;8439:128;:158;;;;-1:-1:-1;8589:8:0;;-1:-1:-1;;;8589:8:0;;;;8588:9;8439:158;8417:1299;;;-1:-1:-1;;;;;8658:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;8715:35:0;;;;;;:31;:35;;;;;;;;8714:36;8658:92;8632:1069;;;8837:20;;8827:6;:30;;8793:153;;;;-1:-1:-1;;;8793:153:0;;13923:2:1;8793:153:0;;;13905:21:1;13962:2;13942:18;;;13935:30;14001:34;13981:18;;;13974:62;-1:-1:-1;;;14052:18:1;;;14045:35;14097:19;;8793:153:0;13721:401:1;8793:153:0;9029:9;;-1:-1:-1;;;;;6380:18:0;;6353:7;6380:18;;;:9;:18;;;;;;9003:22;;:6;:22;:::i;:::-;:35;;8969:140;;;;-1:-1:-1;;;8969:140:0;;14459:2:1;8969:140:0;;;14441:21:1;14498:2;14478:18;;;14471:30;-1:-1:-1;;;14517:18:1;;;14510:49;14576:18;;8969:140:0;14257:343:1;8969:140:0;8632:1069;;;-1:-1:-1;;;;;9161:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;9216:37:0;;;;;;:31;:37;;;;;;;;9215:38;9161:92;9135:566;;;9340:20;;9330:6;:30;;9296:154;;;;-1:-1:-1;;;9296:154:0;;14807:2:1;9296:154:0;;;14789:21:1;14846:2;14826:18;;;14819:30;14885:34;14865:18;;;14858:62;-1:-1:-1;;;14936:18:1;;;14929:36;14982:19;;9296:154:0;14605:402:1;9135:566:0;-1:-1:-1;;;;;9481:35:0;;;;;;:31;:35;;;;;;;;9476:225;;9601:9;;-1:-1:-1;;;;;6380:18:0;;6353:7;6380:18;;;:9;:18;;;;;;9575:22;;:6;:22;:::i;:::-;:35;;9541:140;;;;-1:-1:-1;;;9541:140:0;;14459:2:1;9541:140:0;;;14441:21:1;14498:2;14478:18;;;14471:30;-1:-1:-1;;;14517:18:1;;;14510:49;14576:18;;9541:140:0;14257:343:1;9541:140:0;9782:18;;9772:4;9739:12;6380:18;;;:9;:18;;;;;;-1:-1:-1;9754:46:0;;;;;9831:33;;-1:-1:-1;9856:8:0;;-1:-1:-1;;;9856:8:0;;;;9855:9;9831:33;:82;;;;-1:-1:-1;;;;;;9882:31:0;;;;;;:25;:31;;;;;;;;9881:32;9831:82;:125;;;;-1:-1:-1;;;;;;9931:25:0;;;;;;:19;:25;;;;;;;;9930:26;9831:125;:166;;;;-1:-1:-1;;;;;;9974:23:0;;;;;;:19;:23;;;;;;;;9973:24;9831:166;9813:294;;;10024:8;:15;;-1:-1:-1;;;;10024:15:0;-1:-1:-1;;;10024:15:0;;;10054:10;:8;:10::i;:::-;10079:8;:16;;-1:-1:-1;;;;10079:16:0;;;9813:294;10135:8;;-1:-1:-1;;;;;10160:25:0;;10119:12;10160:25;;;:19;:25;;;;;;10135:8;-1:-1:-1;;;10135:8:0;;;;;10134:9;;10160:25;;:52;;-1:-1:-1;;;;;;10189:23:0;;;;;;:19;:23;;;;;;;;10160:52;10156:100;;;-1:-1:-1;10239:5:0;10156:100;-1:-1:-1;;;;;10292:15:0;;10268:21;10292:15;;;:9;:15;;;;;;10340:23;;;;10318:111;;;;-1:-1:-1;;;10318:111:0;;15214:2:1;10318:111:0;;;15196:21:1;15253:2;15233:18;;;15226:30;15292:34;15272:18;;;15265:62;-1:-1:-1;;;15343:18:1;;;15336:36;15389:19;;10318:111:0;15012:402:1;10318:111:0;10442:12;10473:7;10469:602;;;-1:-1:-1;;;;;10501:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;10534:13:0;;-1:-1:-1;;;10534:13:0;;;;:17;;10501:50;10497:264;;;10589:13;;10606:4;;10580:22;;-1:-1:-1;;;10589:13:0;;;;10580:6;:22;:::i;:::-;10579:31;;;;:::i;:::-;10572:38;;10497:264;;;-1:-1:-1;;;;;10636:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;10671:12:0;;-1:-1:-1;;;10671:12:0;;;;:16;;10636:51;10632:129;;;10725:12;;10741:4;;10716:21;;-1:-1:-1;;;10725:12:0;;;;10716:6;:21;:::i;:::-;10715:30;;;;:::i;:::-;10708:37;;10632:129;10781:8;;10777:283;;-1:-1:-1;;;;;10888:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;10952:4;10934:24;;;;;;;:32;;;;;;11009:35;1679:25:1;;;10852:13:0;;;;;10952:4;;10888:15;11009:35;;1652:18:1;11009:35:0;;;;;;;10777:283;-1:-1:-1;;;;;11106:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;11146:13;;;;;;;;;;:23;;;;;;11196:26;;;;;;11125:6;1679:25:1;;1667:2;1652:18;;1533:177;11196:26:0;;;;;;;;7957:3273;;;;7888:3342;;;:::o;819:381::-;964:59;;;-1:-1:-1;;;;;15611:32:1;;;964:59:0;;;15593:51:1;15660:18;;;;15653:34;;;964:59:0;;;;;;;;;;15566:18:1;;;;964:59:0;;;;;;;-1:-1:-1;;;;;964:59:0;-1:-1:-1;;;964:59:0;;;939:95;;-1:-1:-1;;;;939:10:0;;;;:95;;964:59;939:95;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;903:131;;;;1067:7;:57;;;;-1:-1:-1;1079:11:0;;:16;;:44;;;1110:4;1099:24;;;;;;;;;;;;:::i;:::-;1045:147;;;;-1:-1:-1;;;1045:147:0;;16442:2:1;1045:147:0;;;16424:21:1;16481:2;16461:18;;;16454:30;16520:34;16500:18;;;16493:62;-1:-1:-1;;;16571:18:1;;;16564:38;16619:19;;1045:147:0;16240:404:1;1045:147:0;892:308;;819:381;;;:::o;19721:1012::-;19784:18;;19760:21;19869:23;19784:18;19890:2;19869:23;:::i;:::-;19860:4;6353:7;6380:18;;;:9;:18;;;;;;19842:50;19838:122;;;19925:18;;:23;;19946:2;19925:23;:::i;:::-;19909:39;;19838:122;19996:16;;;20010:1;19996:16;;;;;;;;19972:21;;19996:16;;;;;;;;;;-1:-1:-1;19996:16:0;19972:40;;20041:4;20023;20028:1;20023:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20023:23:0;;;-1:-1:-1;;;;;20023:23:0;;;;;2890:42;20057:4;20062:1;20057:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20057:14:0;;;:7;;;;;;;;;;;:14;20084:198;;-1:-1:-1;;;20084:198:0;;3902:42;;20084:66;;:198;;20165:13;;20193:1;;20209:4;;20236;;20256:15;;20084:198;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20316:21:0;;-1:-1:-1;;20352:14:0;;;-1:-1:-1;20348:378:0;;20417:6;;20383:17;;20427:3;;20404:19;;-1:-1:-1;;;20417:6:0;;;;20404:10;:19;:::i;:::-;20403:27;;;;:::i;:::-;20383:47;-1:-1:-1;20445:18:0;20466:22;20383:47;20466:10;:22;:::i;:::-;20527:10;;20519:47;;20445:43;;-1:-1:-1;;;;;;20527:10:0;;20445:43;;20519:47;;;;20445:43;20527:10;20519:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20603:9:0;;20595:45;;20505:61;;-1:-1:-1;;;;;;20603:9:0;;20626;;20595:45;;;;20626:9;20603;20595:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20662:52:0;;;18233:25:1;;;18289:2;18274:18;;18267:34;;;18317:18;;;18310:34;;;20581:59:0;;-1:-1:-1;20662:52:0;;18221:2:1;18206:18;20662:52:0;;;;;;;20368:358;;20348:378;19749:984;;;;19721:1012::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:173::-;738:20;;-1:-1:-1;;;;;787:31:1;;777:42;;767:70;;833:1;830;823:12;767:70;670:173;;;:::o;848:254::-;916:6;924;977:2;965:9;956:7;952:23;948:32;945:52;;;993:1;990;983:12;945:52;1016:29;1035:9;1016:29;:::i;:::-;1006:39;1092:2;1077:18;;;;1064:32;;-1:-1:-1;;;848:254:1:o;1904:328::-;1981:6;1989;1997;2050:2;2038:9;2029:7;2025:23;2021:32;2018:52;;;2066:1;2063;2056:12;2018:52;2089:29;2108:9;2089:29;:::i;:::-;2079:39;;2137:38;2171:2;2160:9;2156:18;2137:38;:::i;:::-;2127:48;;2222:2;2211:9;2207:18;2194:32;2184:42;;1904:328;;;;;:::o;2237:180::-;2296:6;2349:2;2337:9;2328:7;2324:23;2320:32;2317:52;;;2365:1;2362;2355:12;2317:52;-1:-1:-1;2388:23:1;;2237:180;-1:-1:-1;2237:180:1:o;2630:156::-;2696:20;;2756:4;2745:16;;2735:27;;2725:55;;2776:1;2773;2766:12;2791:252;2855:6;2863;2916:2;2904:9;2895:7;2891:23;2887:32;2884:52;;;2932:1;2929;2922:12;2884:52;2955:27;2972:9;2955:27;:::i;:::-;2945:37;;3001:36;3033:2;3022:9;3018:18;3001:36;:::i;:::-;2991:46;;2791:252;;;;;:::o;3048:118::-;3134:5;3127:13;3120:21;3113:5;3110:32;3100:60;;3156:1;3153;3146:12;3100:60;3048:118;:::o;3171:315::-;3236:6;3244;3297:2;3285:9;3276:7;3272:23;3268:32;3265:52;;;3313:1;3310;3303:12;3265:52;3336:29;3355:9;3336:29;:::i;:::-;3326:39;;3415:2;3404:9;3400:18;3387:32;3428:28;3450:5;3428:28;:::i;:::-;3475:5;3465:15;;;3171:315;;;;;:::o;3491:186::-;3550:6;3603:2;3591:9;3582:7;3578:23;3574:32;3571:52;;;3619:1;3616;3609:12;3571:52;3642:29;3661:9;3642:29;:::i;:::-;3632:39;3491:186;-1:-1:-1;;;3491:186:1:o;3682:260::-;3750:6;3758;3811:2;3799:9;3790:7;3786:23;3782:32;3779:52;;;3827:1;3824;3817:12;3779:52;3850:29;3869:9;3850:29;:::i;:::-;3840:39;;3898:38;3932:2;3921:9;3917:18;3898:38;:::i;4356:356::-;4558:2;4540:21;;;4577:18;;;4570:30;4636:34;4631:2;4616:18;;4609:62;4703:2;4688:18;;4356:356::o;4717:127::-;4778:10;4773:3;4769:20;4766:1;4759:31;4809:4;4806:1;4799:15;4833:4;4830:1;4823:15;4849:168;4922:9;;;4953;;4970:15;;;4964:22;;4950:37;4940:71;;4991:18;;:::i;5022:217::-;5062:1;5088;5078:132;;5132:10;5127:3;5123:20;5120:1;5113:31;5167:4;5164:1;5157:15;5195:4;5192:1;5185:15;5078:132;-1:-1:-1;5224:9:1;;5022:217::o;7723:346::-;7925:2;7907:21;;;7964:2;7944:18;;;7937:30;-1:-1:-1;;;7998:2:1;7983:18;;7976:52;8060:2;8045:18;;7723:346::o;8429:184::-;8499:6;8552:2;8540:9;8531:7;8527:23;8523:32;8520:52;;;8568:1;8565;8558:12;8520:52;-1:-1:-1;8591:16:1;;8429:184;-1:-1:-1;8429:184:1:o;10475:306::-;10563:6;10571;10579;10632:2;10620:9;10611:7;10607:23;10603:32;10600:52;;;10648:1;10645;10638:12;10600:52;10677:9;10671:16;10661:26;;10727:2;10716:9;10712:18;10706:25;10696:35;;10771:2;10760:9;10756:18;10750:25;10740:35;;10475:306;;;;;:::o;10786:148::-;10874:4;10853:12;;;10867;;;10849:31;;10892:13;;10889:39;;;10908:18;;:::i;14127:125::-;14192:9;;;14213:10;;;14210:36;;;14226:18;;:::i;15698:287::-;15827:3;15865:6;15859:13;15881:66;15940:6;15935:3;15928:4;15920:6;15916:17;15881:66;:::i;:::-;15963:16;;;;;15698:287;-1:-1:-1;;15698:287:1:o;15990:245::-;16057:6;16110:2;16098:9;16089:7;16085:23;16081:32;16078:52;;;16126:1;16123;16116:12;16078:52;16158:9;16152:16;16177:28;16199:5;16177:28;:::i;16781:127::-;16842:10;16837:3;16833:20;16830:1;16823:31;16873:4;16870:1;16863:15;16897:4;16894:1;16887:15;16913:980;17175:4;17223:3;17212:9;17208:19;17254:6;17243:9;17236:25;17280:2;17318:6;17313:2;17302:9;17298:18;17291:34;17361:3;17356:2;17345:9;17341:18;17334:31;17385:6;17420;17414:13;17451:6;17443;17436:22;17489:3;17478:9;17474:19;17467:26;;17528:2;17520:6;17516:15;17502:29;;17549:1;17559:195;17573:6;17570:1;17567:13;17559:195;;;17638:13;;-1:-1:-1;;;;;17634:39:1;17622:52;;17729:15;;;;17694:12;;;;17670:1;17588:9;17559:195;;;-1:-1:-1;;;;;;;17810:32:1;;;;17805:2;17790:18;;17783:60;-1:-1:-1;;;17874:3:1;17859:19;17852:35;17771:3;16913:980;-1:-1:-1;;;16913:980:1:o;17898:128::-;17965:9;;;17986:11;;;17983:37;;;18000:18;;:::i

Swarm Source

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