ETH Price: $3,604.85 (+4.41%)
 

Overview

Max Total Supply

1,000,000 RECUR

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
44,638.529879019381346345 RECUR

Value
$0.00
0x1462FeD8eF41bD7Bf69218774154d80703F5707F
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:
RECURFI

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-21
*/

/**
 *Submitted for verification at Etherscan.io on 2024-11-19
*/

/**
BetBook - A fully decentralized prediction market using orderbook design and powered by Azuro.

https://t.me/recurfi
https://x.com/recurfii
https://docs.recur.fi
https://medium.com/@recurfi
**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.28;
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 RECURFI is Ownable {
    string private constant _name = unicode"Recur Fi";
    string private constant _symbol = unicode"RECUR";
    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 = 0xC65901e9917B3239F630f59038f5820E0f425547;
    address private treasuryWallet =
    0x68Ee8539CB66e80093005193dbd78E422a970C29;
    address private revWallet = 0x1EFB1408afBbFAd97656f207541BCF19f6d562E1;
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

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

    uint8 public revFee = 15;
    uint8 public teamFee = 85;

    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(treasuryWallet, 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(treasuryWallet, 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[treasuryWallet] = 50_000 * 1e18;
        emit Transfer(address(0), treasuryWallet, _balances[treasuryWallet]); // Transfer to the treasury 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 launchRecur() 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 updateTreasuryWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        treasuryWallet = 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":"launchRecur","outputs":[],"stateMutability":"payable","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":[{"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":"newAddress","type":"address"}],"name":"updateTreasuryWallet","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"}]

60a060405269021e19e0c9bab2400000600181905560025561271061002f69d3c21bcecceda10000006005610668565b6100399190610691565b600355600480546001600160a01b031990811673c65901e9917b3239f630f59038f5820e0f42554717909155600580549091167368ee8539cb66e80093005193dbd78e422a970c2917905560068054790100550f96961efb1408afbbfad97656f207541bcf19f6d562e1600161ff0160c01b03199091161790553480156100be575f5ffd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801561011e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014291906106b0565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af11580156101a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c591906106b0565b6001600160a01b031660808190525f908152600b60205260409020805460ff191660011790556102066101ff5f546001600160a01b031690565b6001610442565b610211306001610442565b61021e61dead6001610442565b600454610235906001600160a01b03166001610442565b60055461024c906001600160a01b03166001610442565b600654610263906001600160a01b03166001610442565b61028273e2fe530c047f2d85298b07d9333c05737f1435fb6001610442565b61029d6102965f546001600160a01b031690565b60016104c6565b6102bc737a250d5630b4cf539739df2c5dacb4c659f2488d60016104c6565b6102c73060016104c6565b6102d461dead60016104c6565b6080516102e29060016104c6565b6004546102f9906001600160a01b031660016104c6565b600654610310906001600160a01b031660016104c6565b600554610327906001600160a01b031660016104c6565b61034673e2fe530c047f2d85298b07d9333c05737f1435fb60016104c6565b305f81815260076020908152604080832069b3fe97a2fafd2f4000009081905590519081525f516020612bd85f395f51905f52910160405180910390a3335f81815260076020908152604080832069152d02c7e14af68000009081905590519081525f516020612bd85f395f51905f52910160405180910390a3600580546001600160a01b039081165f90815260076020526040808220690a968163f0a57b4000009055925490911680825282822054925190925f516020612bd85f395f51905f529161041591815260200190565b60405180910390a361043d30737a250d5630b4cf539739df2c5dacb4c659f2488d5f19610545565b6106dd565b336104545f546001600160a01b031690565b6001600160a01b03161461049c5760405162461bcd60e51b815260206004820181905260248201525f516020612bb85f395f51905f5260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b336104d85f546001600160a01b031690565b6001600160a01b03161461051b5760405162461bcd60e51b815260206004820181905260248201525f516020612bb85f395f51905f526044820152606401610493565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0383166105a75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610493565b6001600160a01b0382166106085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610493565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b808202811582820484141761068b57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826106ab57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156106c0575f5ffd5b81516001600160a01b03811681146106d6575f5ffd5b9392505050565b6080516124bc6106fc5f395f81816103970152610ef901526124bc5ff3fe608060405260043610610220575f3560e01c80637cb332bb1161011e578063bc205ad3116100a8578063dd62ed3e1161006d578063dd62ed3e146106a6578063e2f45605146106ea578063f5ec7234146106ff578063f8b45b051461071e578063fb201b1d14610733575f5ffd5b8063bc205ad314610613578063c8c8ebe414610632578063d201b01e14610647578063d7c94efd14610666578063d85ba06314610686575f5ffd5b806395d89b41116100ee57806395d89b41146105815780639a7a23d6146105ae578063a9059cbb146105cd578063adfa29e5146105ec578063b7c6e5a91461060b575f5ffd5b80637cb332bb146104f0578063809d458d1461050f57806385ecafd71461052e5780638da5cb5b14610565575f5ffd5b80634a62bb65116101aa5780636a486a8e1161016f5780636a486a8e1461045557806370a0823114610475578063715018a6146104a957806374010ece146104bd578063751039fc146104dc575f5ffd5b80634a62bb65146103b95780634fcd2446146103d9578063590ffdce146103f85780636402511e1461041757806366650dae14610436575f5ffd5b806321d37e39116101f057806321d37e391461030157806323b872dd1461033357806327a14fc214610352578063313ce5671461037357806349bd5a5e14610386575f5ffd5b806306fdde031461022b578063095ea7b31461026d5780631694505e1461029c57806318160ddd146102db575f5ffd5b3661022757005b5f5ffd5b348015610236575f5ffd5b50604080518082019091526008815267526563757220466960c01b60208201525b604051610264919061210a565b60405180910390f35b348015610278575f5ffd5b5061028c61028736600461215a565b610747565b6040519015158152602001610264565b3480156102a7575f5ffd5b506102c3737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610264565b3480156102e6575f5ffd5b5069d3c21bcecceda10000005b604051908152602001610264565b34801561030c575f5ffd5b5060065461032190600160b01b900460ff1681565b60405160ff9091168152602001610264565b34801561033e575f5ffd5b5061028c61034d366004612182565b61075d565b34801561035d575f5ffd5b5061037161036c3660046121bc565b610811565b005b34801561037e575f5ffd5b506012610321565b348015610391575f5ffd5b506102c37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c4575f5ffd5b5060065461028c90600160c81b900460ff1681565b3480156103e4575f5ffd5b506103716103f33660046121e3565b6108f0565b348015610403575f5ffd5b50610371610412366004612224565b610a29565b348015610422575f5ffd5b506103716104313660046121bc565b610a8b565b348015610441575f5ffd5b50610371610450366004612224565b610be6565b348015610460575f5ffd5b5060065461032190600160a81b900460ff1681565b348015610480575f5ffd5b506102f361048f366004612259565b6001600160a01b03165f9081526007602052604090205490565b3480156104b4575f5ffd5b50610371610c48565b3480156104c8575f5ffd5b506103716104d73660046121bc565b610c91565b3480156104e7575f5ffd5b50610371610d78565b3480156104fb575f5ffd5b5061037161050a366004612259565b610dbf565b34801561051a575f5ffd5b50610371610529366004612259565b610e3f565b348015610539575f5ffd5b5061028c610548366004612259565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610570575f5ffd5b505f546001600160a01b03166102c3565b34801561058c575f5ffd5b506040805180820190915260058152642922a1aaa960d91b6020820152610257565b3480156105b9575f5ffd5b506103716105c8366004612224565b610ebf565b3480156105d8575f5ffd5b5061028c6105e736600461215a565b610fa2565b3480156105f7575f5ffd5b50610371610606366004612259565b610fae565b61037161102e565b34801561061e575f5ffd5b5061037161062d366004612279565b611169565b34801561063d575f5ffd5b506102f360015481565b348015610652575f5ffd5b50610371610661366004612259565b611216565b348015610671575f5ffd5b5060065461032190600160b81b900460ff1681565b348015610691575f5ffd5b5060065461032190600160a01b900460ff1681565b3480156106b1575f5ffd5b506102f36106c0366004612279565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156106f5575f5ffd5b506102f360035481565b34801561070a575f5ffd5b506103716107193660046121e3565b61132d565b348015610729575f5ffd5b506102f360025481565b34801561073e575f5ffd5b5061037161140d565b5f6107533384846114a7565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146107fb57828110156107ee5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107fb85338584036114a7565b6108068585856115ca565b506001949350505050565b336108235f546001600160a01b031690565b6001600160a01b0316146108495760405162461bcd60e51b81526004016107e5906122a1565b670de0b6b3a7640000606461086969d3c21bcecceda100000060016122ea565b6108739190612301565b61087d9190612301565b8110156108d85760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526220312560e81b60648201526084016107e5565b6108ea81670de0b6b3a76400006122ea565b60025550565b336109025f546001600160a01b031690565b6001600160a01b0316146109285760405162461bcd60e51b81526004016107e5906122a1565b601e8260ff16111561098e5760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20332560b81b60648201526084016107e5565b601e8160ff1611156109f55760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20332560b01b60648201526084016107e5565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610a3b5f546001600160a01b031690565b6001600160a01b031614610a615760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610a9d5f546001600160a01b031690565b6001600160a01b031614610ac35760405162461bcd60e51b81526004016107e5906122a1565b620186a0610adc69d3c21bcecceda100000060016122ea565b610ae69190612301565b811015610b535760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016107e5565b6103e8610b6b69d3c21bcecceda100000060056122ea565b610b759190612301565b811115610be15760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016107e5565b600355565b33610bf85f546001600160a01b031690565b6001600160a01b031614610c1e5760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610c5a5f546001600160a01b031690565b6001600160a01b031614610c805760405162461bcd60e51b81526004016107e5906122a1565b5f80546001600160a01b0319169055565b33610ca35f546001600160a01b031690565b6001600160a01b031614610cc95760405162461bcd60e51b81526004016107e5906122a1565b670de0b6b3a76400006103e8610cea69d3c21bcecceda100000060016122ea565b610cf49190612301565b610cfe9190612301565b811015610d605760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016107e5565b610d7281670de0b6b3a76400006122ea565b60015550565b33610d8a5f546001600160a01b031690565b6001600160a01b031614610db05760405162461bcd60e51b81526004016107e5906122a1565b6006805460ff60c81b19169055565b33610dd15f546001600160a01b031690565b6001600160a01b031614610df75760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b038116610e1d5760405162461bcd60e51b81526004016107e590612320565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b33610e515f546001600160a01b031690565b6001600160a01b031614610e775760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b038116610e9d5760405162461bcd60e51b81526004016107e590612320565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b33610ed15f546001600160a01b031690565b6001600160a01b031614610ef75760405162461bcd60e51b81526004016107e5906122a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f785760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016107e5565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6107533384846115ca565b33610fc05f546001600160a01b031690565b6001600160a01b031614610fe65760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b03811661100c5760405162461bcd60e51b81526004016107e590612320565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336110405f546001600160a01b031690565b6001600160a01b0316146110665760405162461bcd60e51b81526004016107e5906122a1565b600654600160d01b900460ff16156110b35760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e5565b305f818152600760205260408082205460048054925163f305d71960e01b81529081019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561113f573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111649190612350565b505050565b3361117b5f546001600160a01b031690565b6001600160a01b0316146111a15760405162461bcd60e51b81526004016107e5906122a1565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156111e5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611209919061237b565b9050611164838383611d82565b336112285f546001600160a01b031690565b6001600160a01b03161461124e5760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b0381166112965760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107e5565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146112df576040519150601f19603f3d011682016040523d82523d5f602084013e6112e4565b606091505b50509050806113295760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016107e5565b5050565b3361133f5f546001600160a01b031690565b6001600160a01b0316146113655760405162461bcd60e51b81526004016107e5906122a1565b6006805461ffff60b01b1916600160b01b60ff858116820260ff60b81b191692909217600160b81b858416810291909117938490556113ad9390810483169291900416612392565b60ff166064146113295760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b60648201526084016107e5565b3361141f5f546001600160a01b031690565b6001600160a01b0316146114455760405162461bcd60e51b81526004016107e5906122a1565b600654600160d01b900460ff16156114925760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e5565b6006805460ff60d01b1916600160d01b179055565b6001600160a01b0383166115095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e5565b6001600160a01b03821661156a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e5565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661162e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e5565b6001600160a01b0382166116905760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e5565b5f81116116f15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e5565b600654600160d01b900460ff1615801561174557505f546001600160a01b0384811691161480159061172c57506001600160a01b0383163014155b801561174557505f546001600160a01b03838116911614155b156117885760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107e5565b600654600160c81b900460ff1615611a49575f546001600160a01b038481169116148015906117c457505f546001600160a01b03838116911614155b80156117d857506001600160a01b03821615155b80156117ef57506001600160a01b03821661dead14155b80156118055750600654600160c01b900460ff16155b15611a49576001600160a01b0383165f908152600b602052604090205460ff16801561184957506001600160a01b0382165f908152600a602052604090205460ff16155b1561191c576001548111156118ae5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016107e5565b6002546001600160a01b0383165f908152600760205260409020546118d390836123ab565b11156119175760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e5565b611a49565b6001600160a01b0382165f908152600b602052604090205460ff16801561195b57506001600160a01b0383165f908152600a602052604090205460ff16155b156119c1576001548111156119175760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016107e5565b6001600160a01b0382165f908152600a602052604090205460ff16611a49576002546001600160a01b0383165f90815260076020526040902054611a0590836123ab565b1115611a495760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e5565b600354305f90815260076020526040902054108015908190611a755750600654600160c01b900460ff16155b8015611a9957506001600160a01b0384165f908152600b602052604090205460ff16155b8015611abd57506001600160a01b0384165f9081526009602052604090205460ff16155b8015611ae157506001600160a01b0383165f9081526009602052604090205460ff16155b15611b0f576006805460ff60c01b1916600160c01b179055611b01611ea9565b6006805460ff60c01b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c01b909204821615911680611b5b57506001600160a01b0384165f9081526009602052604090205460ff165b15611b6357505f5b6001600160a01b0385165f9081526007602052604090205483811015611bda5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107e5565b5f8215611d10576001600160a01b0386165f908152600b602052604090205460ff168015611c135750600654600160a81b900460ff1615155b15611c44576006546103e890611c3390600160a81b900460ff16876122ea565b611c3d9190612301565b9050611ca3565b6001600160a01b0387165f908152600b602052604090205460ff168015611c765750600654600160a01b900460ff1615155b15611ca3576006546103e890611c9690600160a01b900460ff16876122ea565b611ca09190612301565b90505b8015611d10576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d719089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611ddd91906123be565b5f604051808303815f865af19150503d805f8114611e16576040519150601f19603f3d011682016040523d82523d5f602084013e611e1b565b606091505b5091509150818015611e45575080511580611e45575080806020019051810190611e4591906123d4565b611ea25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016107e5565b5050505050565b6003545f611eb88260146122ea565b305f908152600760205260409020541115611ede57600354611edb9060146122ea565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f1157611f116123ef565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611f5957611f596123ef565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611fb09086905f90869030904290600401612403565b5f604051808303815f87803b158015611fc7575f5ffd5b505af1158015611fd9573d5f5f3e3d5ffd5b504792505081159050612104576006545f9060649061200290600160b01b900460ff16846122ea565b61200c9190612301565b90505f6120198284612473565b6004546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114612064576040519150601f19603f3d011682016040523d82523d5f602084013e612069565b606091505b50506006546040519196506001600160a01b03169083905f81818185875af1925050503d805f81146120b6576040519150601f19603f3d011682016040523d82523d5f602084013e6120bb565b606091505b505060408051888152602081018490529081018490529095507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150505b50505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114612155575f5ffd5b919050565b5f5f6040838503121561216b575f5ffd5b6121748361213f565b946020939093013593505050565b5f5f5f60608486031215612194575f5ffd5b61219d8461213f565b92506121ab6020850161213f565b929592945050506040919091013590565b5f602082840312156121cc575f5ffd5b5035919050565b803560ff81168114612155575f5ffd5b5f5f604083850312156121f4575f5ffd5b6121fd836121d3565b915061220b602084016121d3565b90509250929050565b8015158114612221575f5ffd5b50565b5f5f60408385031215612235575f5ffd5b61223e8361213f565b9150602083013561224e81612214565b809150509250929050565b5f60208284031215612269575f5ffd5b6122728261213f565b9392505050565b5f5f6040838503121561228a575f5ffd5b6122938361213f565b915061220b6020840161213f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610757576107576122d6565b5f8261231b57634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f5f5f60608486031215612362575f5ffd5b5050815160208301516040909301519094929350919050565b5f6020828403121561238b575f5ffd5b5051919050565b60ff8181168382160190811115610757576107576122d6565b80820180821115610757576107576122d6565b5f82518060208501845e5f920191825250919050565b5f602082840312156123e4575f5ffd5b815161227281612214565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156124535783516001600160a01b031683526020938401939092019160010161242c565b50506001600160a01b039590951660608401525050608001529392505050565b81810381811115610757576107576122d656fea26469706673582212200bd4a7e9f45e456fa02750fd9ec88cf814c62c557deece512a8504bc0334770564736f6c634300081c00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x608060405260043610610220575f3560e01c80637cb332bb1161011e578063bc205ad3116100a8578063dd62ed3e1161006d578063dd62ed3e146106a6578063e2f45605146106ea578063f5ec7234146106ff578063f8b45b051461071e578063fb201b1d14610733575f5ffd5b8063bc205ad314610613578063c8c8ebe414610632578063d201b01e14610647578063d7c94efd14610666578063d85ba06314610686575f5ffd5b806395d89b41116100ee57806395d89b41146105815780639a7a23d6146105ae578063a9059cbb146105cd578063adfa29e5146105ec578063b7c6e5a91461060b575f5ffd5b80637cb332bb146104f0578063809d458d1461050f57806385ecafd71461052e5780638da5cb5b14610565575f5ffd5b80634a62bb65116101aa5780636a486a8e1161016f5780636a486a8e1461045557806370a0823114610475578063715018a6146104a957806374010ece146104bd578063751039fc146104dc575f5ffd5b80634a62bb65146103b95780634fcd2446146103d9578063590ffdce146103f85780636402511e1461041757806366650dae14610436575f5ffd5b806321d37e39116101f057806321d37e391461030157806323b872dd1461033357806327a14fc214610352578063313ce5671461037357806349bd5a5e14610386575f5ffd5b806306fdde031461022b578063095ea7b31461026d5780631694505e1461029c57806318160ddd146102db575f5ffd5b3661022757005b5f5ffd5b348015610236575f5ffd5b50604080518082019091526008815267526563757220466960c01b60208201525b604051610264919061210a565b60405180910390f35b348015610278575f5ffd5b5061028c61028736600461215a565b610747565b6040519015158152602001610264565b3480156102a7575f5ffd5b506102c3737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610264565b3480156102e6575f5ffd5b5069d3c21bcecceda10000005b604051908152602001610264565b34801561030c575f5ffd5b5060065461032190600160b01b900460ff1681565b60405160ff9091168152602001610264565b34801561033e575f5ffd5b5061028c61034d366004612182565b61075d565b34801561035d575f5ffd5b5061037161036c3660046121bc565b610811565b005b34801561037e575f5ffd5b506012610321565b348015610391575f5ffd5b506102c37f0000000000000000000000004ece60ee60e93ec57eb66f296d558a3e6370744181565b3480156103c4575f5ffd5b5060065461028c90600160c81b900460ff1681565b3480156103e4575f5ffd5b506103716103f33660046121e3565b6108f0565b348015610403575f5ffd5b50610371610412366004612224565b610a29565b348015610422575f5ffd5b506103716104313660046121bc565b610a8b565b348015610441575f5ffd5b50610371610450366004612224565b610be6565b348015610460575f5ffd5b5060065461032190600160a81b900460ff1681565b348015610480575f5ffd5b506102f361048f366004612259565b6001600160a01b03165f9081526007602052604090205490565b3480156104b4575f5ffd5b50610371610c48565b3480156104c8575f5ffd5b506103716104d73660046121bc565b610c91565b3480156104e7575f5ffd5b50610371610d78565b3480156104fb575f5ffd5b5061037161050a366004612259565b610dbf565b34801561051a575f5ffd5b50610371610529366004612259565b610e3f565b348015610539575f5ffd5b5061028c610548366004612259565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610570575f5ffd5b505f546001600160a01b03166102c3565b34801561058c575f5ffd5b506040805180820190915260058152642922a1aaa960d91b6020820152610257565b3480156105b9575f5ffd5b506103716105c8366004612224565b610ebf565b3480156105d8575f5ffd5b5061028c6105e736600461215a565b610fa2565b3480156105f7575f5ffd5b50610371610606366004612259565b610fae565b61037161102e565b34801561061e575f5ffd5b5061037161062d366004612279565b611169565b34801561063d575f5ffd5b506102f360015481565b348015610652575f5ffd5b50610371610661366004612259565b611216565b348015610671575f5ffd5b5060065461032190600160b81b900460ff1681565b348015610691575f5ffd5b5060065461032190600160a01b900460ff1681565b3480156106b1575f5ffd5b506102f36106c0366004612279565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156106f5575f5ffd5b506102f360035481565b34801561070a575f5ffd5b506103716107193660046121e3565b61132d565b348015610729575f5ffd5b506102f360025481565b34801561073e575f5ffd5b5061037161140d565b5f6107533384846114a7565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146107fb57828110156107ee5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107fb85338584036114a7565b6108068585856115ca565b506001949350505050565b336108235f546001600160a01b031690565b6001600160a01b0316146108495760405162461bcd60e51b81526004016107e5906122a1565b670de0b6b3a7640000606461086969d3c21bcecceda100000060016122ea565b6108739190612301565b61087d9190612301565b8110156108d85760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526220312560e81b60648201526084016107e5565b6108ea81670de0b6b3a76400006122ea565b60025550565b336109025f546001600160a01b031690565b6001600160a01b0316146109285760405162461bcd60e51b81526004016107e5906122a1565b601e8260ff16111561098e5760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20332560b81b60648201526084016107e5565b601e8160ff1611156109f55760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20332560b01b60648201526084016107e5565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610a3b5f546001600160a01b031690565b6001600160a01b031614610a615760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610a9d5f546001600160a01b031690565b6001600160a01b031614610ac35760405162461bcd60e51b81526004016107e5906122a1565b620186a0610adc69d3c21bcecceda100000060016122ea565b610ae69190612301565b811015610b535760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016107e5565b6103e8610b6b69d3c21bcecceda100000060056122ea565b610b759190612301565b811115610be15760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016107e5565b600355565b33610bf85f546001600160a01b031690565b6001600160a01b031614610c1e5760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610c5a5f546001600160a01b031690565b6001600160a01b031614610c805760405162461bcd60e51b81526004016107e5906122a1565b5f80546001600160a01b0319169055565b33610ca35f546001600160a01b031690565b6001600160a01b031614610cc95760405162461bcd60e51b81526004016107e5906122a1565b670de0b6b3a76400006103e8610cea69d3c21bcecceda100000060016122ea565b610cf49190612301565b610cfe9190612301565b811015610d605760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016107e5565b610d7281670de0b6b3a76400006122ea565b60015550565b33610d8a5f546001600160a01b031690565b6001600160a01b031614610db05760405162461bcd60e51b81526004016107e5906122a1565b6006805460ff60c81b19169055565b33610dd15f546001600160a01b031690565b6001600160a01b031614610df75760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b038116610e1d5760405162461bcd60e51b81526004016107e590612320565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b33610e515f546001600160a01b031690565b6001600160a01b031614610e775760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b038116610e9d5760405162461bcd60e51b81526004016107e590612320565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b33610ed15f546001600160a01b031690565b6001600160a01b031614610ef75760405162461bcd60e51b81526004016107e5906122a1565b7f0000000000000000000000004ece60ee60e93ec57eb66f296d558a3e637074416001600160a01b0316826001600160a01b031603610f785760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016107e5565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6107533384846115ca565b33610fc05f546001600160a01b031690565b6001600160a01b031614610fe65760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b03811661100c5760405162461bcd60e51b81526004016107e590612320565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336110405f546001600160a01b031690565b6001600160a01b0316146110665760405162461bcd60e51b81526004016107e5906122a1565b600654600160d01b900460ff16156110b35760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e5565b305f818152600760205260408082205460048054925163f305d71960e01b81529081019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561113f573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111649190612350565b505050565b3361117b5f546001600160a01b031690565b6001600160a01b0316146111a15760405162461bcd60e51b81526004016107e5906122a1565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156111e5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611209919061237b565b9050611164838383611d82565b336112285f546001600160a01b031690565b6001600160a01b03161461124e5760405162461bcd60e51b81526004016107e5906122a1565b6001600160a01b0381166112965760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107e5565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146112df576040519150601f19603f3d011682016040523d82523d5f602084013e6112e4565b606091505b50509050806113295760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016107e5565b5050565b3361133f5f546001600160a01b031690565b6001600160a01b0316146113655760405162461bcd60e51b81526004016107e5906122a1565b6006805461ffff60b01b1916600160b01b60ff858116820260ff60b81b191692909217600160b81b858416810291909117938490556113ad9390810483169291900416612392565b60ff166064146113295760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b60648201526084016107e5565b3361141f5f546001600160a01b031690565b6001600160a01b0316146114455760405162461bcd60e51b81526004016107e5906122a1565b600654600160d01b900460ff16156114925760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e5565b6006805460ff60d01b1916600160d01b179055565b6001600160a01b0383166115095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e5565b6001600160a01b03821661156a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e5565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661162e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e5565b6001600160a01b0382166116905760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e5565b5f81116116f15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e5565b600654600160d01b900460ff1615801561174557505f546001600160a01b0384811691161480159061172c57506001600160a01b0383163014155b801561174557505f546001600160a01b03838116911614155b156117885760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107e5565b600654600160c81b900460ff1615611a49575f546001600160a01b038481169116148015906117c457505f546001600160a01b03838116911614155b80156117d857506001600160a01b03821615155b80156117ef57506001600160a01b03821661dead14155b80156118055750600654600160c01b900460ff16155b15611a49576001600160a01b0383165f908152600b602052604090205460ff16801561184957506001600160a01b0382165f908152600a602052604090205460ff16155b1561191c576001548111156118ae5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016107e5565b6002546001600160a01b0383165f908152600760205260409020546118d390836123ab565b11156119175760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e5565b611a49565b6001600160a01b0382165f908152600b602052604090205460ff16801561195b57506001600160a01b0383165f908152600a602052604090205460ff16155b156119c1576001548111156119175760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016107e5565b6001600160a01b0382165f908152600a602052604090205460ff16611a49576002546001600160a01b0383165f90815260076020526040902054611a0590836123ab565b1115611a495760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e5565b600354305f90815260076020526040902054108015908190611a755750600654600160c01b900460ff16155b8015611a9957506001600160a01b0384165f908152600b602052604090205460ff16155b8015611abd57506001600160a01b0384165f9081526009602052604090205460ff16155b8015611ae157506001600160a01b0383165f9081526009602052604090205460ff16155b15611b0f576006805460ff60c01b1916600160c01b179055611b01611ea9565b6006805460ff60c01b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c01b909204821615911680611b5b57506001600160a01b0384165f9081526009602052604090205460ff165b15611b6357505f5b6001600160a01b0385165f9081526007602052604090205483811015611bda5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107e5565b5f8215611d10576001600160a01b0386165f908152600b602052604090205460ff168015611c135750600654600160a81b900460ff1615155b15611c44576006546103e890611c3390600160a81b900460ff16876122ea565b611c3d9190612301565b9050611ca3565b6001600160a01b0387165f908152600b602052604090205460ff168015611c765750600654600160a01b900460ff1615155b15611ca3576006546103e890611c9690600160a01b900460ff16876122ea565b611ca09190612301565b90505b8015611d10576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d719089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611ddd91906123be565b5f604051808303815f865af19150503d805f8114611e16576040519150601f19603f3d011682016040523d82523d5f602084013e611e1b565b606091505b5091509150818015611e45575080511580611e45575080806020019051810190611e4591906123d4565b611ea25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016107e5565b5050505050565b6003545f611eb88260146122ea565b305f908152600760205260409020541115611ede57600354611edb9060146122ea565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f1157611f116123ef565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611f5957611f596123ef565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611fb09086905f90869030904290600401612403565b5f604051808303815f87803b158015611fc7575f5ffd5b505af1158015611fd9573d5f5f3e3d5ffd5b504792505081159050612104576006545f9060649061200290600160b01b900460ff16846122ea565b61200c9190612301565b90505f6120198284612473565b6004546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114612064576040519150601f19603f3d011682016040523d82523d5f602084013e612069565b606091505b50506006546040519196506001600160a01b03169083905f81818185875af1925050503d805f81146120b6576040519150601f19603f3d011682016040523d82523d5f602084013e6120bb565b606091505b505060408051888152602081018490529081018490529095507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150505b50505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114612155575f5ffd5b919050565b5f5f6040838503121561216b575f5ffd5b6121748361213f565b946020939093013593505050565b5f5f5f60608486031215612194575f5ffd5b61219d8461213f565b92506121ab6020850161213f565b929592945050506040919091013590565b5f602082840312156121cc575f5ffd5b5035919050565b803560ff81168114612155575f5ffd5b5f5f604083850312156121f4575f5ffd5b6121fd836121d3565b915061220b602084016121d3565b90509250929050565b8015158114612221575f5ffd5b50565b5f5f60408385031215612235575f5ffd5b61223e8361213f565b9150602083013561224e81612214565b809150509250929050565b5f60208284031215612269575f5ffd5b6122728261213f565b9392505050565b5f5f6040838503121561228a575f5ffd5b6122938361213f565b915061220b6020840161213f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610757576107576122d6565b5f8261231b57634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f5f5f60608486031215612362575f5ffd5b5050815160208301516040909301519094929350919050565b5f6020828403121561238b575f5ffd5b5051919050565b60ff8181168382160190811115610757576107576122d6565b80820180821115610757576107576122d6565b5f82518060208501845e5f920191825250919050565b5f602082840312156123e4575f5ffd5b815161227281612214565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156124535783516001600160a01b031683526020938401939092019160010161242c565b50506001600160a01b039590951660608401525050608001529392505050565b81810381811115610757576107576122d656fea26469706673582212200bd4a7e9f45e456fa02750fd9ec88cf814c62c557deece512a8504bc0334770564736f6c634300081c0033

Deployed Bytecode Sourcemap

2213:18499:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5905:83;;;;;;;;;;-1:-1:-1;5975:5:0;;;;;;;;;;;;-1:-1:-1;;;5975:5:0;;;;5905:83;;;;;;;:::i;:::-;;;;;;;;6559:152;;;;;;;;;;-1:-1:-1;6559:152:0;;;;;:::i;:::-;;:::i;:::-;;;1085:14:1;;1078:22;1060:41;;1048:2;1033:18;6559:152:0;920:187:1;3805:124:0;;;;;;;;;;;;3886:42;3805:124;;;;;-1:-1:-1;;;;;1302:32:1;;;1284:51;;1272:2;1257:18;3805:124:0;1112:229:1;6175:91:0;;;;;;;;;;-1:-1:-1;2399:16:0;6175:91;;;1492:25:1;;;1480:2;1465:18;6175:91:0;1346:177:1;3004:24:0;;;;;;;;;;-1:-1:-1;3004:24:0;;;;-1:-1:-1;;;3004:24:0;;;;;;;;;1700:4:1;1688:17;;;1670:36;;1658:2;1643:18;3004:24:0;1528:184:1;7255:603:0;;;;;;;;;;-1:-1:-1;7255:603:0;;;;;:::i;:::-;;:::i;16676:271::-;;;;;;;;;;-1:-1:-1;16676:271:0;;;;;:::i;:::-;;:::i;:::-;;6091:76;;;;;;;;;;-1:-1:-1;6157:2:0;6091:76;;3936:38;;;;;;;;;;;;;;;3097:33;;;;;;;;;;-1:-1:-1;3097:33:0;;;;-1:-1:-1;;;3097:33:0;;;;;;12482:436;;;;;;;;;;-1:-1:-1;12482:436:0;;;;;:::i;:::-;;:::i;13174:161::-;;;;;;;;;;-1:-1:-1;13174:161:0;;;;;:::i;:::-;;:::i;15444:435::-;;;;;;;;;;-1:-1:-1;15444:435:0;;;;;:::i;:::-;;:::i;13601:183::-;;;;;;;;;;-1:-1:-1;13601:183:0;;;;;:::i;:::-;;:::i;2963:32::-;;;;;;;;;;-1:-1:-1;2963:32:0;;;;-1:-1:-1;;;2963:32:0;;;;;;6274:110;;;;;;;;;;-1:-1:-1;6274:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;6358:18:0;6331:7;6358:18;;;:9;:18;;;;;;;6274:110;684:92;;;;;;;;;;;;;:::i;16144:275::-;;;;;;;;;;-1:-1:-1;16144:275:0;;;;;:::i;:::-;;:::i;11405:84::-;;;;;;;;;;;;;:::i;17466:177::-;;;;;;;;;;-1:-1:-1;17466:177:0;;;;;:::i;:::-;;:::i;17826:185::-;;;;;;;;;;-1:-1:-1;17826:185:0;;;;;:::i;:::-;;:::i;18220:123::-;;;;;;;;;;-1:-1:-1;18220:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;18307:28:0;18283:4;18307:28;;;:19;:28;;;;;;;;;18220:123;463:87;;;;;;;;;;-1:-1:-1;509:7:0;536:6;-1:-1:-1;;;;;536:6:0;463:87;;5996;;;;;;;;;;-1:-1:-1;6068:7:0;;;;;;;;;;;;-1:-1:-1;;;6068:7:0;;;;5996:87;;14941:236;;;;;;;;;;-1:-1:-1;14941:236:0;;;;;:::i;:::-;;:::i;7064:183::-;;;;;;;;;;-1:-1:-1;7064:183:0;;;;;:::i;:::-;;:::i;17118:175::-;;;;;;;;;;-1:-1:-1;17118:175:0;;;;;:::i;:::-;;:::i;14278:332::-;;;:::i;18673:240::-;;;;;;;;;;-1:-1:-1;18673:240:0;;;;;:::i;:::-;;:::i;2424:51::-;;;;;;;;;;;;;;;;19182:247;;;;;;;;;;-1:-1:-1;19182:247:0;;;;;:::i;:::-;;:::i;3035:25::-;;;;;;;;;;-1:-1:-1;3035:25:0;;;;-1:-1:-1;;;3035:25:0;;;;;;2925:31;;;;;;;;;;-1:-1:-1;2925:31:0;;;;-1:-1:-1;;;2925:31:0;;;;;;6392:159;;;;;;;;;;-1:-1:-1;6392:159:0;;;;;:::i;:::-;-1:-1:-1;;;;;6516:18:0;;;6489:7;6516:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6392:159;2529:62;;;;;;;;;;;;;;;;11821:291;;;;;;;;;;-1:-1:-1;11821:291:0;;;;;:::i;:::-;;:::i;2482:40::-;;;;;;;;;;;;;;;;13930:123;;;;;;;;;;;;;:::i;6559:152::-;6627:4;6644:37;6653:10;6665:7;6674:6;6644:8;:37::i;:::-;-1:-1:-1;6699:4:0;6559:152;;;;;:::o;7255:603::-;-1:-1:-1;;;;;7424:19:0;;7380:4;7424:19;;;:11;:19;;;;;;;;7444:10;7424:31;;;;;;;;-1:-1:-1;;7470:37:0;;7466:312;;7570:6;7550:16;:26;;7524:128;;;;-1:-1:-1;;;7524:128:0;;4054:2:1;7524:128:0;;;4036:21:1;4093:2;4073:18;;;4066:30;4132:34;4112:18;;;4105:62;-1:-1:-1;;;4183:18:1;;;4176:38;4231:19;;7524:128:0;;;;;;;;;7696:55;7705:6;7713:10;7744:6;7725:16;:25;7696:8;:55::i;:::-;7790:36;7800:6;7808:9;7819:6;7790:9;:36::i;:::-;-1:-1:-1;7846:4:0;;7255:603;-1:-1:-1;;;;7255:603:0:o;16676:271::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;16824:4:::1;16817:3;16796:17;2399:16:::0;16812:1:::1;16796:17;:::i;:::-;16795:25;;;;:::i;:::-;16794:34;;;;:::i;:::-;16778:12;:50;;16756:135;;;::::0;-1:-1:-1;;;16756:135:0;;5351:2:1;16756:135:0::1;::::0;::::1;5333:21:1::0;5390:2;5370:18;;;5363:30;5429:34;5409:18;;;5402:62;-1:-1:-1;;;5480:18:1;;;5473:33;5523:19;;16756:135:0::1;5149:399:1::0;16756:135:0::1;16914:25;:12:::0;16930:8:::1;16914:25;:::i;:::-;16902:9;:37:::0;-1:-1:-1;16676:271:0:o;12482:436::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;12636:2:::1;12619:13;:19;;;;12597:110;;;::::0;-1:-1:-1;;;12597:110:0;;5755:2:1;12597:110:0::1;::::0;::::1;5737:21:1::0;5794:2;5774:18;;;5767:30;5833:34;5813:18;;;5806:62;-1:-1:-1;;;5884:18:1;;;5877:39;5933:19;;12597:110:0::1;5553:405:1::0;12597:110:0::1;12758:2;12740:14;:20;;;;12718:112;;;::::0;-1:-1:-1;;;12718:112:0;;6165:2:1;12718:112:0::1;::::0;::::1;6147:21:1::0;6204:2;6184:18;;;6177:30;6243:34;6223:18;;;6216:62;-1:-1:-1;;;6294:18:1;;;6287:40;6344:19;;12718:112:0::1;5963:406:1::0;12718:112:0::1;12841:12;:28:::0;;-1:-1:-1;;;;12880:30:0;-1:-1:-1;;;12841:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;12880:30:0;;-1:-1:-1;;;12880:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;12482:436::o;13174:161::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13288:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;13288:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13174:161::o;15444:435::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;15583:6:::1;15562:17;2399:16:::0;15578:1:::1;15562:17;:::i;:::-;15561:28;;;;:::i;:::-;15544:13;:45;;15522:148;;;::::0;-1:-1:-1;;;15522:148:0;;6576:2:1;15522:148:0::1;::::0;::::1;6558:21:1::0;6615:2;6595:18;;;6588:30;6654:34;6634:18;;;6627:62;-1:-1:-1;;;6705:18:1;;;6698:51;6766:19;;15522:148:0::1;6374:417:1::0;15522:148:0::1;15742:4;15721:17;2399:16:::0;15737:1:::1;15721:17;:::i;:::-;15720:26;;;;:::i;:::-;15703:13;:43;;15681:145;;;::::0;-1:-1:-1;;;15681:145:0;;6998:2:1;15681:145:0::1;::::0;::::1;6980:21:1::0;7037:2;7017:18;;;7010:30;7076:34;7056:18;;;7049:62;-1:-1:-1;;;7127:18:1;;;7120:50;7187:19;;15681:145:0::1;6796:416:1::0;15681:145:0::1;15837:18;:34:::0;15444:435::o;13601:183::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13725:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;13725:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13601:183::o;684:92::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;766:1:::1;749:19:::0;;-1:-1:-1;;;;;;749:19:0::1;::::0;;684:92::o;16144:275::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;16282:4:::1;16274;16253:17;2399:16:::0;16269:1:::1;16253:17;:::i;:::-;16252:26;;;;:::i;:::-;16251:35;;;;:::i;:::-;16239:8;:47;;16217:139;;;::::0;-1:-1:-1;;;16217:139:0;;7419:2:1;16217:139:0::1;::::0;::::1;7401:21:1::0;7458:2;7438:18;;;7431:30;7497:34;7477:18;;;7470:62;-1:-1:-1;;;7548:18:1;;;7541:40;7598:19;;16217:139:0::1;7217:406:1::0;16217:139:0::1;16390:21;:8:::0;16402::::1;16390:21;:::i;:::-;16367:20;:44:::0;-1:-1:-1;16144:275:0:o;11405:84::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;11459:14:::1;:22:::0;;-1:-1:-1;;;;11459:22:0::1;::::0;;11405:84::o;17466:177::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17550:24:0;::::1;17542:59;;;;-1:-1:-1::0;;;17542:59:0::1;;;;;;;:::i;:::-;17612:10;:23:::0;;-1:-1:-1;;;;;;17612:23:0::1;-1:-1:-1::0;;;;;17612:23:0;;;::::1;::::0;;;::::1;::::0;;17466:177::o;17826:185::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17914:24:0;::::1;17906:59;;;;-1:-1:-1::0;;;17906:59:0::1;;;;;;;:::i;:::-;17976:14;:27:::0;;-1:-1:-1;;;;;;17976:27:0::1;-1:-1:-1::0;;;;;17976:27:0;;;::::1;::::0;;;::::1;::::0;;17826:185::o;14941:236::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;15075:13:::1;-1:-1:-1::0;;;;;15067:21:0::1;:4;-1:-1:-1::0;;;;;15067:21:0::1;::::0;15059:60:::1;;;::::0;-1:-1:-1;;;15059:60:0;;8181:2:1;15059:60:0::1;::::0;::::1;8163:21:1::0;8220:2;8200:18;;;8193:30;8259:28;8239:18;;;8232:56;8305:18;;15059:60:0::1;7979:350:1::0;15059:60:0::1;-1:-1:-1::0;;;;;15130:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;15130:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14941:236::o;7064:183::-;7160:4;7177:40;7187:10;7199:9;7210:6;7177:9;:40::i;17118:175::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17201:24:0;::::1;17193:59;;;;-1:-1:-1::0;;;17193:59:0::1;;;;;;;:::i;:::-;17263:9;:22:::0;;-1:-1:-1;;;;;;17263:22:0::1;-1:-1:-1::0;;;;;17263:22:0;;;::::1;::::0;;;::::1;::::0;;17118:175::o;14278:332::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;14348:8:::1;::::0;-1:-1:-1;;;14348:8:0;::::1;;;14347:9;14339:38;;;::::0;-1:-1:-1;;;14339:38:0;;8536:2:1;14339:38:0::1;::::0;::::1;8518:21:1::0;8575:2;8555:18;;;8548:30;-1:-1:-1;;;8594:18:1;;;8587:46;8650:18;;14339:38:0::1;8334:340:1::0;14339:38:0::1;14460:4;14480:24;::::0;;;:9:::1;:24;::::0;;;;;;14551:10:::1;::::0;;14388:214;;-1:-1:-1;;;14388:214:0;;;;::::1;8982:51:1::0;;;;9049:18;;;9042:34;9092:18;;;9085:34;;;9135:18;;;9128:34;;;;-1:-1:-1;;;;;14551:10:0::1;9178:19:1::0;;;9171:61;14576:15:0::1;9248:19:1::0;;;9241:35;3886:42:0::1;::::0;14388:31:::1;::::0;14427:9:::1;::::0;8954:19:1;;14388:214:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14278:332::o:0;18673:240::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;18785:38:::1;::::0;-1:-1:-1;;;18785:38:0;;18817:4:::1;18785:38;::::0;::::1;1284:51:1::0;18758:24:0::1;::::0;-1:-1:-1;;;;;18785:23:0;::::1;::::0;::::1;::::0;1257:18:1;;18785:38:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18758:65;;18834:51;18857:5;18864:2;18868:16;18834:22;:51::i;19182:247::-:0;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19260:18:0;::::1;19252:46;;;::::0;-1:-1:-1;;;19252:46:0;;10185:2:1;19252:46:0::1;::::0;::::1;10167:21:1::0;10224:2;10204:18;;;10197:30;-1:-1:-1;;;10243:18:1;;;10236:45;10298:18;;19252:46:0::1;9983:339:1::0;19252:46:0::1;19312:12;19330:4;-1:-1:-1::0;;;;;19330:9:0::1;19347:21;19330:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19311:62;;;19392:7;19384:37;;;::::0;-1:-1:-1;;;19384:37:0;;10739:2:1;19384:37:0::1;::::0;::::1;10721:21:1::0;10778:2;10758:18;;;10751:30;-1:-1:-1;;;10797:18:1;;;10790:47;10854:18;;19384:37:0::1;10537:341:1::0;19384:37:0::1;19241:188;19182:247:::0;:::o;11821:291::-;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;11936:6:::1;:16:::0;;-1:-1:-1;;;;11963:18:0;-1:-1:-1;;;11936:16:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;11963:18:0;;;;;-1:-1:-1;;;11963:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12015:16:::1;::::0;12024:7;;::::1;::::0;::::1;::::0;12015:6;;::::1;;:16;:::i;:::-;12014:25;;12036:3;12014:25;11992:112;;;::::0;-1:-1:-1;;;11992:112:0;;11238:2:1;11992:112:0::1;::::0;::::1;11220:21:1::0;11277:2;11257:18;;;11250:30;11316:34;11296:18;;;11289:62;-1:-1:-1;;;11367:18:1;;;11360:35;11412:19;;11992:112:0::1;11036:401:1::0;13930:123:0;609:10;598:7;509;536:6;-1:-1:-1;;;;;536:6:0;;463:87;598:7;-1:-1:-1;;;;;598:21:0;;590:66;;;;-1:-1:-1;;;590:66:0;;;;;;;:::i;:::-;13990:8:::1;::::0;-1:-1:-1;;;13990:8:0;::::1;;;13989:9;13981:38;;;::::0;-1:-1:-1;;;13981:38:0;;8536:2:1;13981:38:0::1;::::0;::::1;8518:21:1::0;8575:2;8555:18;;;8548:30;-1:-1:-1;;;8594:18:1;;;8587:46;8650:18;;13981:38:0::1;8334:340:1::0;13981:38:0::1;14030:8;:15:::0;;-1:-1:-1;;;;14030:15:0::1;-1:-1:-1::0;;;14030:15:0::1;::::0;;13930:123::o;6719:337::-;-1:-1:-1;;;;;6812:19:0;;6804:68;;;;-1:-1:-1;;;6804:68:0;;11644:2:1;6804:68:0;;;11626:21:1;11683:2;11663:18;;;11656:30;11722:34;11702:18;;;11695:62;-1:-1:-1;;;11773:18:1;;;11766:34;11817:19;;6804:68:0;11442:400:1;6804:68:0;-1:-1:-1;;;;;6891:21:0;;6883:68;;;;-1:-1:-1;;;6883:68:0;;12049:2:1;6883:68:0;;;12031:21:1;12088:2;12068:18;;;12061:30;12127:34;12107:18;;;12100:62;-1:-1:-1;;;12178:18:1;;;12171:32;12220:19;;6883:68:0;11847:398:1;6883:68:0;-1:-1:-1;;;;;6964:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7016:32;;1492:25:1;;;7016:32:0;;1465:18:1;7016:32:0;;;;;;;6719:337;;;:::o;7866:3342::-;-1:-1:-1;;;;;7954:18:0;;7946:68;;;;-1:-1:-1;;;7946:68:0;;12452:2:1;7946:68:0;;;12434:21:1;12491:2;12471:18;;;12464:30;12530:34;12510:18;;;12503:62;-1:-1:-1;;;12581:18:1;;;12574:35;12626:19;;7946:68:0;12250:401:1;7946:68:0;-1:-1:-1;;;;;8033:16:0;;8025:64;;;;-1:-1:-1;;;8025:64:0;;12858:2:1;8025:64:0;;;12840:21:1;12897:2;12877:18;;;12870:30;12936:34;12916:18;;;12909:62;-1:-1:-1;;;12987:18:1;;;12980:33;13030:19;;8025:64:0;12656:399:1;8025:64:0;8117:1;8108:6;:10;8100:64;;;;-1:-1:-1;;;8100:64:0;;13262:2:1;8100:64:0;;;13244:21:1;13301:2;13281:18;;;13274:30;13340:34;13320:18;;;13313:62;-1:-1:-1;;;13391:18:1;;;13384:39;13440:19;;8100:64:0;13060:405:1;8100:64:0;8196:8;;-1:-1:-1;;;8196:8:0;;;;8195:9;:85;;;;-1:-1:-1;509:7:0;536:6;-1:-1:-1;;;;;8222:15:0;;;536:6;;8222:15;;;;:40;;-1:-1:-1;;;;;;8241:21:0;;8257:4;8241:21;;8222:40;:57;;;;-1:-1:-1;509:7:0;536:6;-1:-1:-1;;;;;8266:13:0;;;536:6;;8266:13;;8222:57;8177:171;;;8307:29;;-1:-1:-1;;;8307:29:0;;13672:2:1;8307:29:0;;;13654:21:1;13711:2;13691:18;;;13684:30;-1:-1:-1;;;13730:18:1;;;13723:49;13789:18;;8307:29:0;13470:343:1;8177:171:0;8364:14;;-1:-1:-1;;;8364:14:0;;;;8360:1345;;;509:7;536:6;-1:-1:-1;;;;;8417:15:0;;;536:6;;8417:15;;;;:49;;-1:-1:-1;509:7:0;536:6;-1:-1:-1;;;;;8453:13:0;;;536:6;;8453:13;;8417:49;:86;;;;-1:-1:-1;;;;;;8487:16:0;;;;8417:86;:128;;;;-1:-1:-1;;;;;;8524:21:0;;8538:6;8524:21;;8417:128;:158;;;;-1:-1:-1;8567:8:0;;-1:-1:-1;;;8567:8:0;;;;8566:9;8417:158;8395:1299;;;-1:-1:-1;;;;;8636:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;8693:35:0;;;;;;:31;:35;;;;;;;;8692:36;8636:92;8610:1069;;;8815:20;;8805:6;:30;;8771:153;;;;-1:-1:-1;;;8771:153:0;;14020:2:1;8771:153:0;;;14002:21:1;14059:2;14039:18;;;14032:30;14098:34;14078:18;;;14071:62;-1:-1:-1;;;14149:18:1;;;14142:35;14194:19;;8771:153:0;13818:401:1;8771:153:0;9007:9;;-1:-1:-1;;;;;6358:18:0;;6331:7;6358:18;;;:9;:18;;;;;;8981:22;;:6;:22;:::i;:::-;:35;;8947:140;;;;-1:-1:-1;;;8947:140:0;;14556:2:1;8947:140:0;;;14538:21:1;14595:2;14575:18;;;14568:30;-1:-1:-1;;;14614:18:1;;;14607:49;14673:18;;8947:140:0;14354:343:1;8947:140:0;8610:1069;;;-1:-1:-1;;;;;9139:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;9194:37:0;;;;;;:31;:37;;;;;;;;9193:38;9139:92;9113:566;;;9318:20;;9308:6;:30;;9274:154;;;;-1:-1:-1;;;9274:154:0;;14904:2:1;9274:154:0;;;14886:21:1;14943:2;14923:18;;;14916:30;14982:34;14962:18;;;14955:62;-1:-1:-1;;;15033:18:1;;;15026:36;15079:19;;9274:154:0;14702:402:1;9113:566:0;-1:-1:-1;;;;;9459:35:0;;;;;;:31;:35;;;;;;;;9454:225;;9579:9;;-1:-1:-1;;;;;6358:18:0;;6331:7;6358:18;;;:9;:18;;;;;;9553:22;;:6;:22;:::i;:::-;:35;;9519:140;;;;-1:-1:-1;;;9519:140:0;;14556:2:1;9519:140:0;;;14538:21:1;14595:2;14575:18;;;14568:30;-1:-1:-1;;;14614:18:1;;;14607:49;14673:18;;9519:140:0;14354:343:1;9519:140:0;9760:18;;9750:4;9717:12;6358:18;;;:9;:18;;;;;;-1:-1:-1;9732:46:0;;;;;9809:33;;-1:-1:-1;9834:8:0;;-1:-1:-1;;;9834:8:0;;;;9833:9;9809:33;:82;;;;-1:-1:-1;;;;;;9860:31:0;;;;;;:25;:31;;;;;;;;9859:32;9809:82;:125;;;;-1:-1:-1;;;;;;9909:25:0;;;;;;:19;:25;;;;;;;;9908:26;9809:125;:166;;;;-1:-1:-1;;;;;;9952:23:0;;;;;;:19;:23;;;;;;;;9951:24;9809:166;9791:294;;;10002:8;:15;;-1:-1:-1;;;;10002:15:0;-1:-1:-1;;;10002:15:0;;;10032:10;:8;:10::i;:::-;10057:8;:16;;-1:-1:-1;;;;10057:16:0;;;9791:294;10113:8;;-1:-1:-1;;;;;10138:25:0;;10097:12;10138:25;;;:19;:25;;;;;;10113:8;-1:-1:-1;;;10113:8:0;;;;;10112:9;;10138:25;;:52;;-1:-1:-1;;;;;;10167:23:0;;;;;;:19;:23;;;;;;;;10138:52;10134:100;;;-1:-1:-1;10217:5:0;10134:100;-1:-1:-1;;;;;10270:15:0;;10246:21;10270:15;;;:9;:15;;;;;;10318:23;;;;10296:111;;;;-1:-1:-1;;;10296:111:0;;15311:2:1;10296:111:0;;;15293:21:1;15350:2;15330:18;;;15323:30;15389:34;15369:18;;;15362:62;-1:-1:-1;;;15440:18:1;;;15433:36;15486:19;;10296:111:0;15109:402:1;10296:111:0;10420:12;10447:602;;;;-1:-1:-1;;;;;10479:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;10512:13:0;;-1:-1:-1;;;10512:13:0;;;;:17;;10479:50;10475:264;;;10567:13;;10584:4;;10558:22;;-1:-1:-1;;;10567:13:0;;;;10558:6;:22;:::i;:::-;10557:31;;;;:::i;:::-;10550:38;;10475:264;;;-1:-1:-1;;;;;10614:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;10649:12:0;;-1:-1:-1;;;10649:12:0;;;;:16;;10614:51;10610:129;;;10703:12;;10719:4;;10694:21;;-1:-1:-1;;;10703:12:0;;;;10694:6;:21;:::i;:::-;10693:30;;;;:::i;:::-;10686:37;;10610:129;10759:8;;10755:283;;-1:-1:-1;;;;;10866:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;10930:4;10912:24;;;;;;;:32;;;;;;10987:35;1492:25:1;;;10830:13:0;;;;;10930:4;;10866:15;10987:35;;1465:18:1;10987:35:0;;;;;;;10755:283;-1:-1:-1;;;;;11084:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;11124:13;;;;;;;;;;:23;;;;;;11174:26;;;;;;11103:6;1492:25:1;;1480:2;1465:18;;1346:177;11174:26:0;;;;;;;;7935:3273;;;;7866:3342;;;:::o;808:381::-;953:59;;;-1:-1:-1;;;;;15708:32:1;;;953:59:0;;;15690:51:1;15757:18;;;;15750:34;;;953:59:0;;;;;;;;;;15663:18:1;;;;953:59:0;;;;;;;-1:-1:-1;;;;;953:59:0;-1:-1:-1;;;953:59:0;;;928:95;;-1:-1:-1;;;;928:10:0;;;;:95;;953:59;928:95;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:131;;;;1056:7;:57;;;;-1:-1:-1;1068:11:0;;:16;;:44;;;1099:4;1088:24;;;;;;;;;;;;:::i;:::-;1034:147;;;;-1:-1:-1;;;1034:147:0;;16553:2:1;1034:147:0;;;16535:21:1;16592:2;16572:18;;;16565:30;16631:34;16611:18;;;16604:62;-1:-1:-1;;;16682:18:1;;;16675:38;16730:19;;1034:147:0;16351:404:1;1034:147:0;881:308;;808:381;;;:::o;19697:1012::-;19760:18;;19736:21;19845:23;19760:18;19866:2;19845:23;:::i;:::-;19836:4;6331:7;6358:18;;;:9;:18;;;;;;19818:50;19814:122;;;19901:18;;:23;;19922:2;19901:23;:::i;:::-;19885:39;;19814:122;19972:16;;;19986:1;19972:16;;;;;;;;19948:21;;19972:16;;;;;;;;;;-1:-1:-1;19972:16:0;19948:40;;20017:4;19999;20004:1;19999:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19999:23:0;;;-1:-1:-1;;;;;19999:23:0;;;;;2874:42;20033:4;20038:1;20033:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20033:14:0;;;:7;;;;;;;;;;;:14;20060:198;;-1:-1:-1;;;20060:198:0;;3886:42;;20060:66;;:198;;20141:13;;20169:1;;20185:4;;20212;;20232:15;;20060:198;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20292:21:0;;-1:-1:-1;;20328:14:0;;;-1:-1:-1;20324:378:0;;20393:6;;20359:17;;20403:3;;20380:19;;-1:-1:-1;;;20393:6:0;;;;20380:10;:19;:::i;:::-;20379:27;;;;:::i;:::-;20359:47;-1:-1:-1;20421:18:0;20442:22;20359:47;20442:10;:22;:::i;:::-;20503:10;;20495:47;;20421:43;;-1:-1:-1;;;;;;20503:10:0;;20421:43;;20495:47;;;;20421:43;20503:10;20495:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20579:9:0;;20571:45;;20481:61;;-1:-1:-1;;;;;;20579:9:0;;20602;;20571:45;;;;20602:9;20579;20571:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20638:52:0;;;18323:25:1;;;18379:2;18364:18;;18357:34;;;18407:18;;;18400:34;;;20557:59:0;;-1:-1:-1;20638:52:0;;18311:2:1;18296:18;20638:52:0;;;;;;;20344:358;;20324:378;19725:984;;;;19697:1012::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:1;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:300::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;881:2;866:18;;;;853:32;;-1:-1:-1;;;615:300:1:o;1717:374::-;1794:6;1802;1810;1863:2;1851:9;1842:7;1838:23;1834:32;1831:52;;;1879:1;1876;1869:12;1831:52;1902:29;1921:9;1902:29;:::i;:::-;1892:39;;1950:38;1984:2;1973:9;1969:18;1950:38;:::i;:::-;1717:374;;1940:48;;-1:-1:-1;;;2057:2:1;2042:18;;;;2029:32;;1717:374::o;2096:226::-;2155:6;2208:2;2196:9;2187:7;2183:23;2179:32;2176:52;;;2224:1;2221;2214:12;2176:52;-1:-1:-1;2269:23:1;;2096:226;-1:-1:-1;2096:226:1:o;2535:156::-;2601:20;;2661:4;2650:16;;2640:27;;2630:55;;2681:1;2678;2671:12;2696:252;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2860:27;2877:9;2860:27;:::i;:::-;2850:37;;2906:36;2938:2;2927:9;2923:18;2906:36;:::i;:::-;2896:46;;2696:252;;;;;:::o;2953:118::-;3039:5;3032:13;3025:21;3018:5;3015:32;3005:60;;3061:1;3058;3051:12;3005:60;2953:118;:::o;3076:315::-;3141:6;3149;3202:2;3190:9;3181:7;3177:23;3173:32;3170:52;;;3218:1;3215;3208:12;3170:52;3241:29;3260:9;3241:29;:::i;:::-;3231:39;;3320:2;3309:9;3305:18;3292:32;3333:28;3355:5;3333:28;:::i;:::-;3380:5;3370:15;;;3076:315;;;;;:::o;3396:186::-;3455:6;3508:2;3496:9;3487:7;3483:23;3479:32;3476:52;;;3524:1;3521;3514:12;3476:52;3547:29;3566:9;3547:29;:::i;:::-;3537:39;3396:186;-1:-1:-1;;;3396:186:1:o;3587:260::-;3655:6;3663;3716:2;3704:9;3695:7;3691:23;3687:32;3684:52;;;3732:1;3729;3722:12;3684:52;3755:29;3774:9;3755:29;:::i;:::-;3745:39;;3803:38;3837:2;3826:9;3822:18;3803:38;:::i;4261:356::-;4463:2;4445:21;;;4482:18;;;4475:30;4541:34;4536:2;4521:18;;4514:62;4608:2;4593:18;;4261:356::o;4622:127::-;4683:10;4678:3;4674:20;4671:1;4664:31;4714:4;4711:1;4704:15;4738:4;4735:1;4728:15;4754:168;4827:9;;;4858;;4875:15;;;4869:22;;4855:37;4845:71;;4896:18;;:::i;4927:217::-;4967:1;4993;4983:132;;5037:10;5032:3;5028:20;5025:1;5018:31;5072:4;5069:1;5062:15;5100:4;5097:1;5090:15;4983:132;-1:-1:-1;5129:9:1;;4927:217::o;7628:346::-;7830:2;7812:21;;;7869:2;7849:18;;;7842:30;-1:-1:-1;;;7903:2:1;7888:18;;7881:52;7965:2;7950:18;;7628:346::o;9287:456::-;9375:6;9383;9391;9444:2;9432:9;9423:7;9419:23;9415:32;9412:52;;;9460:1;9457;9450:12;9412:52;-1:-1:-1;;9505:16:1;;9611:2;9596:18;;9590:25;9707:2;9692:18;;;9686:25;9505:16;;9590:25;;-1:-1:-1;9686:25:1;9287:456;-1:-1:-1;9287:456:1:o;9748:230::-;9818:6;9871:2;9859:9;9850:7;9846:23;9842:32;9839:52;;;9887:1;9884;9877:12;9839:52;-1:-1:-1;9932:16:1;;9748:230;-1:-1:-1;9748:230:1:o;10883:148::-;10971:4;10950:12;;;10964;;;10946:31;;10989:13;;10986:39;;;11005:18;;:::i;14224:125::-;14289:9;;;14310:10;;;14307:36;;;14323:18;;:::i;15795:301::-;15924:3;15962:6;15956:13;16008:6;16001:4;15993:6;15989:17;15984:3;15978:37;16070:1;16034:16;;16059:13;;;-1:-1:-1;16034:16:1;15795:301;-1:-1:-1;15795:301:1:o;16101:245::-;16168:6;16221:2;16209:9;16200:7;16196:23;16192:32;16189:52;;;16237:1;16234;16227:12;16189:52;16269:9;16263:16;16288:28;16310:5;16288:28;:::i;16892:127::-;16953:10;16948:3;16944:20;16941:1;16934:31;16984:4;16981:1;16974:15;17008:4;17005:1;16998:15;17024:959;17286:4;17334:3;17323:9;17319:19;17365:6;17354:9;17347:25;17408:6;17403:2;17392:9;17388:18;17381:34;17451:3;17446:2;17435:9;17431:18;17424:31;17475:6;17510;17504:13;17541:6;17533;17526:22;17579:3;17568:9;17564:19;17557:26;;17618:2;17610:6;17606:15;17592:29;;17639:1;17649:195;17663:6;17660:1;17657:13;17649:195;;;17728:13;;-1:-1:-1;;;;;17724:39:1;17712:52;;17793:2;17819:15;;;;17784:12;;;;17760:1;17678:9;17649:195;;;-1:-1:-1;;;;;;;17900:32:1;;;;17895:2;17880:18;;17873:60;-1:-1:-1;;17964:3:1;17949:19;17942:35;17861:3;17024:959;-1:-1:-1;;;17024:959:1:o;17988:128::-;18055:9;;;18076:11;;;18073:37;;;18090:18;;:::i

Swarm Source

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