ETH Price: $3,342.52 (-1.03%)
Gas: 6.2 Gwei

Token

MineAI (MineAI)
 

Overview

Max Total Supply

100,000,000,000 MineAI

Holders

126

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,872,328.438336379588162452 MineAI

Value
$0.00
0xa5d0b8ea789c1c806c13440a5cc449768ab4c5c0
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:
MineAI

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-06
*/

/*
website: https://mineai.co/
x: https://x.com/TheMineAI
telegram: https://t.me/mineaitoken
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

contract MineAI is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "MineAI";
    string private constant _symbol = "MineAI";
    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 100000000000 * 10 ** _decimals;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;

    address payable private _ownerWallet;
    uint256 private _buyTax = 10;
    uint256 private _sellTax = 10;
    uint256 private _taxSwapThreshold = 750000 * 10 ** _decimals;
    uint256 private _maxTaxSwap = 300000 * 10 ** _decimals;
    uint256 private liquidityPercentage = 50;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event BuyTaxUpdate(uint256 tax);
    event SellTaxUpdate(uint256 tax);
    event LiquidityAdd(
        uint256 amountToken,
        uint256 amountETH,
        uint256 liquidity
    );
    event OwnerWalletChange(address owner);
    event UpdateTaxSwapThreshold(uint256 taxSwapThreshold);
    event UpdateMaxTaxSwap(uint256 maxTaxSwap);
    event SetLiquidityPercentage(uint256 newLiquidityPercentage);

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _balances[_msgSender()] = _tTotal;
        _ownerWallet = payable(_msgSender());
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(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 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");

        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            if (from == uniswapV2Pair && !_isExcludedFromFee[to]) {
                taxAmount = amount.mul(_buyTax).div(100);
            } else if (
                to == uniswapV2Pair &&
                !_isExcludedFromFee[from] &&
                from != address(this)
            ) {
                taxAmount = amount.mul(_sellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance >= _taxSwapThreshold &&
                from != address(this)
            ) {
                uint256 swapToken = min(balanceOf(address(this)), _maxTaxSwap);
                swapTokensForEth(swapToken);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    uint256 liquidityETHAmount = contractETHBalance
                        .mul(liquidityPercentage)
                        .div(100);
                    addLiquidity(balanceOf(address(this)), liquidityETHAmount);
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _ownerWallet.transfer(amount);
    }

    function manualSwap() external {
        require(
            _msgSender() == _ownerWallet,
            "Only tax wallet can trigger manual swap"
        );
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            swapTokensForEth(contractTokenBalance);
        }
    }

    function manualSend() external {
        require(
            _msgSender() == _ownerWallet,
            "Only tax wallet can trigger manual send"
        );
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

    function setBuyTax(uint256 newBuyTax) external onlyOwner {
        require(newBuyTax <= 15, "Buy tax cannot exceed 15%");
        _buyTax = newBuyTax;

        emit BuyTaxUpdate(newBuyTax);
    }

    function setSellTax(uint256 newSellTax) external onlyOwner {
        require(newSellTax <= 15, "Sell tax cannot exceed 15%");
        _sellTax = newSellTax;

        emit SellTaxUpdate(newSellTax);
    }

    function setLiquidityPercentage(
        uint256 newLiquidityPercentage
    ) external onlyOwner {
        require(
            newLiquidityPercentage <= 100,
            "Liquidity percentage cannot exceed 100%"
        );
        liquidityPercentage = newLiquidityPercentage;

        emit SetLiquidityPercentage(newLiquidityPercentage);
    }

    function excludeMultipleFromFee(
        address[] calldata accounts,
        bool excluded
    ) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        ) = uniswapV2Router.addLiquidityETH{value: ethAmount}(
                address(this),
                tokenAmount,
                0,
                0,
                _ownerWallet,
                block.timestamp
            );

        emit LiquidityAdd(amountToken, amountETH, liquidity);
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        _ownerWallet = newOwnerWallet;

        emit OwnerWalletChange(newOwnerWallet);
    }

    function updateMaxTaxSwap(uint256 maxTaxSwap) external onlyOwner {
        _maxTaxSwap = maxTaxSwap;

        emit UpdateMaxTaxSwap(maxTaxSwap);
    }

    function updateTaxSwapThreshold(
        uint256 taxSwapThreshold
    ) external onlyOwner {
        _taxSwapThreshold = taxSwapThreshold;

        emit UpdateTaxSwapThreshold(taxSwapThreshold);
    }

    function recoverEmergency() external onlyOwner {
        sendETHToFee(address(this).balance);
    }

    function enableTrading() external onlyOwner {
        require(!tradingOpen, "Trading is already open");
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        addLiquidity(balanceOf(address(this)), address(this).balance);

        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );

        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}
}

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":"tax","type":"uint256"}],"name":"BuyTaxUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"LiquidityAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnerWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tax","type":"uint256"}],"name":"SellTaxUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newLiquidityPercentage","type":"uint256"}],"name":"SetLiquidityPercentage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTaxSwap","type":"uint256"}],"name":"UpdateMaxTaxSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxSwapThreshold","type":"uint256"}],"name":"UpdateTaxSwapThreshold","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverEmergency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityPercentage","type":"uint256"}],"name":"setLiquidityPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[{"internalType":"uint256","name":"maxTaxSwap","type":"uint256"}],"name":"updateMaxTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxSwapThreshold","type":"uint256"}],"name":"updateTaxSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600a600555600a6006556012600a6200001e91906200028e565b6200002d90620b71b0620002a5565b6007556200003e6012600a6200028e565b6200004d90620493e0620002a5565b6008556032600955600b805462ffffff60a01b1916905534801562000070575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000bf6012600a6200028e565b620000d09064174876e800620002a5565b335f81815260016020818152604080842095909555600480546001600160a01b0319168517905582546001600160a01b0316835260039052838220805460ff199081168317909155308352938220805490941617909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001576012600a6200028e565b620001689064174876e800620002a5565b60405190815260200160405180910390a3620002bf565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620001d357815f1904821115620001b757620001b76200017f565b80851615620001c557918102915b93841c939080029062000198565b509250929050565b5f82620001eb5750600162000288565b81620001f957505f62000288565b81600181146200021257600281146200021d576200023d565b600191505062000288565b60ff8411156200023157620002316200017f565b50506001821b62000288565b5060208310610133831016604e8410600b841016171562000262575081810a62000288565b6200026e838362000193565b805f19048211156200028457620002846200017f565b0290505b92915050565b5f6200029e60ff841683620001db565b9392505050565b80820281158282048414176200028857620002886200017f565b611bb480620002cd5f395ff3fe60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb1461037c578063bb542ef01461039b578063dc1052e2146103ba578063dd62ed3e146103d9578063f42938901461041d578063fc76729c14610431575f80fd5b8063715018a6146102f05780638a8c523c146103045780638cd09d50146103185780638da5cb5b146103375780638f8deb041461035d57806395d89b411461016b575f80fd5b80631a37225a116101045780631a37225a1461021857806323b872dd14610237578063313ce5671461025657806351bc3c85146102715780635342acb41461028557806370a08231146102bc575f80fd5b8063034832bd1461014a57806306fdde031461016b578063095ea7b3146101a857806309df275e146101d757806318160ddd146101f6575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b50610169610164366004611748565b610445565b005b348015610176575f80fd5b5060408051808201825260068152654d696e65414960d01b6020820152905161019f919061175f565b60405180910390f35b3480156101b3575f80fd5b506101c76101c23660046117bf565b6104b3565b604051901515815260200161019f565b3480156101e2575f80fd5b506101696101f1366004611748565b6104c9565b348015610201575f80fd5b5061020a610527565b60405190815260200161019f565b348015610223575f80fd5b50610169610232366004611748565b610548565b348015610242575f80fd5b506101c76102513660046117e9565b610607565b348015610261575f80fd5b506040516012815260200161019f565b34801561027c575f80fd5b50610169610656565b348015610290575f80fd5b506101c761029f366004611827565b6001600160a01b03165f9081526003602052604090205460ff1690565b3480156102c7575f80fd5b5061020a6102d6366004611827565b6001600160a01b03165f9081526001602052604090205490565b3480156102fb575f80fd5b506101696106ea565b34801561030f575f80fd5b5061016961075b565b348015610323575f80fd5b50610169610332366004611748565b610a56565b348015610342575f80fd5b505f546040516001600160a01b03909116815260200161019f565b348015610368575f80fd5b5061016961037736600461184f565b610b05565b348015610387575f80fd5b506101c76103963660046117bf565b610b98565b3480156103a6575f80fd5b506101696103b5366004611827565b610ba4565b3480156103c5575f80fd5b506101696103d4366004611748565b610c1b565b3480156103e4575f80fd5b5061020a6103f33660046118ce565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610428575f80fd5b50610169610cca565b34801561043c575f80fd5b50610169610d4d565b5f546001600160a01b031633146104775760405162461bcd60e51b815260040161046e90611905565b60405180910390fd5b60078190556040518181527fe77bc8853e8c957947c02a925b4c99572ca7bd2f91e922c256934fedba79a016906020015b60405180910390a150565b5f6104bf338484610d81565b5060015b92915050565b5f546001600160a01b031633146104f25760405162461bcd60e51b815260040161046e90611905565b60088190556040518181527ff165cf0b4ab9c43341e3cf3ae4ef6e2f30990cdfc6dfb364eaf9c5b23428f96d906020016104a8565b5f6105346012600a611a2e565b6105439064174876e800611a3c565b905090565b5f546001600160a01b031633146105715760405162461bcd60e51b815260040161046e90611905565b60648111156105d25760405162461bcd60e51b815260206004820152602760248201527f4c69717569646974792070657263656e746167652063616e6e6f7420657863656044820152666564203130302560c81b606482015260840161046e565b60098190556040518181527fed9c75b39eedad23d98525ccd9bac84a4441de7b53ef6499d77ce80027772b70906020016104a8565b5f610613848484610ea4565b6001600160a01b0384165f9081526002602090815260408083203380855292529091205461064c91869161064790866112ec565b610d81565b5060019392505050565b6004546001600160a01b0316336001600160a01b0316146106c95760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207461782077616c6c65742063616e2074726967676572206d616e756044820152660616c20737761760cc1b606482015260840161046e565b305f9081526001602052604090205480156106e7576106e78161134e565b50565b5f546001600160a01b031633146107135760405162461bcd60e51b815260040161046e90611905565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107845760405162461bcd60e51b815260040161046e90611905565b600b54600160a01b900460ff16156107de5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161046e565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556108289130919061081990601290611a2e565b6106479064174876e800611a3c565b600a5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610878573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089c9190611a53565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091f9190611a53565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610969573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098d9190611a53565b600b80546001600160a01b0319166001600160a01b0392909216919091179055305f908152600160205260409020546109c690476114be565b600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610a18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611a6e565b50600b805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610a7f5760405162461bcd60e51b815260040161046e90611905565b600f811115610ad05760405162461bcd60e51b815260206004820152601a60248201527f53656c6c207461782063616e6e6f742065786365656420313525000000000000604482015260640161046e565b60068190556040518181527fa3c7d2c9b682edd36ce728b0908b6223813d7676d1da69f5047dec843f7e64e6906020016104a8565b5f546001600160a01b03163314610b2e5760405162461bcd60e51b815260040161046e90611905565b5f5b82811015610b92578160035f868685818110610b4e57610b4e611a89565b9050602002016020810190610b639190611827565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610b30565b50505050565b5f6104bf338484610ea4565b5f546001600160a01b03163314610bcd5760405162461bcd60e51b815260040161046e90611905565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fb20a85f31d6178a78ae8f917b6fa7aa86600f111ecab2b41c44d92f38fa56201906020016104a8565b5f546001600160a01b03163314610c445760405162461bcd60e51b815260040161046e90611905565b600f811115610c955760405162461bcd60e51b815260206004820152601960248201527f427579207461782063616e6e6f74206578636565642031352500000000000000604482015260640161046e565b60058190556040518181527f981be54b1fc7934066e749221f7fbdced2c3c7a8fe33efe2c229510e4bd88be7906020016104a8565b6004546001600160a01b0316336001600160a01b031614610d3d5760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207461782077616c6c65742063616e2074726967676572206d616e75604482015266185b081cd95b9960ca1b606482015260840161046e565b4780156106e7576106e7816115c3565b5f546001600160a01b03163314610d765760405162461bcd60e51b815260040161046e90611905565b610d7f476115c3565b565b6001600160a01b038316610de35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046e565b6001600160a01b038216610e445760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f085760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046e565b6001600160a01b038216610f6a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046e565b5f8111610fcb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161046e565b5f80546001600160a01b03858116911614801590610ff657505f546001600160a01b03848116911614155b156111af57600b546001600160a01b03858116911614801561103057506001600160a01b0383165f9081526003602052604090205460ff16155b1561105c57611055606461104f600554856115fe90919063ffffffff16565b9061167c565b90506110c8565b600b546001600160a01b03848116911614801561109157506001600160a01b0384165f9081526003602052604090205460ff16155b80156110a657506001600160a01b0384163014155b156110c8576110c5606461104f600654856115fe90919063ffffffff16565b90505b305f90815260016020526040902054600b54600160a81b900460ff161580156110fe5750600b546001600160a01b038581169116145b80156111135750600b54600160b01b900460ff165b801561112157506007548110155b801561113657506001600160a01b0385163014155b156111ad57305f90815260016020526040812054611156906008546116d6565b90506111618161134e565b4780156111aa575f611183606461104f600954856115fe90919063ffffffff16565b305f9081526001602052604090205490915061119f90826114be565b6111a8476115c3565b505b50505b505b801561122757305f908152600160205260409020546111ce90826116ea565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061121e9085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461124990836112ec565b6001600160a01b0385165f9081526001602052604090205561128c61126e83836112ec565b6001600160a01b0385165f90815260016020526040902054906116ea565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112d585856112ec565b60405190815260200160405180910390a350505050565b5f8282111561133d5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015260640161046e565b6113478284611a9d565b9392505050565b600b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061139457611394611a89565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140f9190611a53565b8160018151811061142257611422611a89565b6001600160a01b039283166020918202929092010152600a546114489130911684610d81565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906114809085905f90869030904290600401611ab0565b5f604051808303815f87803b158015611497575f80fd5b505af11580156114a9573d5f803e3d5ffd5b5050600b805460ff60a81b1916905550505050565b600a546114d69030906001600160a01b031684610d81565b600a546004805460405163f305d71960e01b81523092810192909252602482018590525f60448301819052606483018190526001600160a01b0391821660848401524260a484015292839283929091169063f305d71990869060c40160606040518083038185885af115801561154e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115739190611b21565b604080518481526020810184905290810182905292955090935091507f39bf1607295d1bfb66e0d6f4984ace27536f0dadaa7b0aba21525d990e352d8e9060600160405180910390a15050505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156115fa573d5f803e3d5ffd5b5050565b5f825f0361160d57505f6104c3565b5f6116188385611a3c565b9050826116258583611b4c565b146113475760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161046e565b5f8082116116cc5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015260640161046e565b6113478284611b4c565b5f8183116116e45782611347565b50919050565b5f806116f68385611b6b565b9050838110156113475760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161046e565b5f60208284031215611758575f80fd5b5035919050565b5f602080835283518060208501525f5b8181101561178b5785810183015185820160400152820161176f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106e7575f80fd5b5f80604083850312156117d0575f80fd5b82356117db816117ab565b946020939093013593505050565b5f805f606084860312156117fb575f80fd5b8335611806816117ab565b92506020840135611816816117ab565b929592945050506040919091013590565b5f60208284031215611837575f80fd5b8135611347816117ab565b80151581146106e7575f80fd5b5f805f60408486031215611861575f80fd5b833567ffffffffffffffff80821115611878575f80fd5b818601915086601f83011261188b575f80fd5b813581811115611899575f80fd5b8760208260051b85010111156118ad575f80fd5b602092830195509350508401356118c381611842565b809150509250925092565b5f80604083850312156118df575f80fd5b82356118ea816117ab565b915060208301356118fa816117ab565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561198857815f190482111561196e5761196e61193a565b8085161561197b57918102915b93841c9390800290611953565b509250929050565b5f8261199e575060016104c3565b816119aa57505f6104c3565b81600181146119c057600281146119ca576119e6565b60019150506104c3565b60ff8411156119db576119db61193a565b50506001821b6104c3565b5060208310610133831016604e8410600b8410161715611a09575081810a6104c3565b611a13838361194e565b805f1904821115611a2657611a2661193a565b029392505050565b5f61134760ff841683611990565b80820281158282048414176104c3576104c361193a565b5f60208284031215611a63575f80fd5b8151611347816117ab565b5f60208284031215611a7e575f80fd5b815161134781611842565b634e487b7160e01b5f52603260045260245ffd5b818103818111156104c3576104c361193a565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611b005784516001600160a01b031683529383019391830191600101611adb565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611b33575f80fd5b8351925060208401519150604084015190509250925092565b5f82611b6657634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104c3576104c361193a56fea2646970667358221220d336122d70d1175379bede70176bfea8347ba46942a78a1845453aa0a7324a8564736f6c63430008180033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb1461037c578063bb542ef01461039b578063dc1052e2146103ba578063dd62ed3e146103d9578063f42938901461041d578063fc76729c14610431575f80fd5b8063715018a6146102f05780638a8c523c146103045780638cd09d50146103185780638da5cb5b146103375780638f8deb041461035d57806395d89b411461016b575f80fd5b80631a37225a116101045780631a37225a1461021857806323b872dd14610237578063313ce5671461025657806351bc3c85146102715780635342acb41461028557806370a08231146102bc575f80fd5b8063034832bd1461014a57806306fdde031461016b578063095ea7b3146101a857806309df275e146101d757806318160ddd146101f6575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b50610169610164366004611748565b610445565b005b348015610176575f80fd5b5060408051808201825260068152654d696e65414960d01b6020820152905161019f919061175f565b60405180910390f35b3480156101b3575f80fd5b506101c76101c23660046117bf565b6104b3565b604051901515815260200161019f565b3480156101e2575f80fd5b506101696101f1366004611748565b6104c9565b348015610201575f80fd5b5061020a610527565b60405190815260200161019f565b348015610223575f80fd5b50610169610232366004611748565b610548565b348015610242575f80fd5b506101c76102513660046117e9565b610607565b348015610261575f80fd5b506040516012815260200161019f565b34801561027c575f80fd5b50610169610656565b348015610290575f80fd5b506101c761029f366004611827565b6001600160a01b03165f9081526003602052604090205460ff1690565b3480156102c7575f80fd5b5061020a6102d6366004611827565b6001600160a01b03165f9081526001602052604090205490565b3480156102fb575f80fd5b506101696106ea565b34801561030f575f80fd5b5061016961075b565b348015610323575f80fd5b50610169610332366004611748565b610a56565b348015610342575f80fd5b505f546040516001600160a01b03909116815260200161019f565b348015610368575f80fd5b5061016961037736600461184f565b610b05565b348015610387575f80fd5b506101c76103963660046117bf565b610b98565b3480156103a6575f80fd5b506101696103b5366004611827565b610ba4565b3480156103c5575f80fd5b506101696103d4366004611748565b610c1b565b3480156103e4575f80fd5b5061020a6103f33660046118ce565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610428575f80fd5b50610169610cca565b34801561043c575f80fd5b50610169610d4d565b5f546001600160a01b031633146104775760405162461bcd60e51b815260040161046e90611905565b60405180910390fd5b60078190556040518181527fe77bc8853e8c957947c02a925b4c99572ca7bd2f91e922c256934fedba79a016906020015b60405180910390a150565b5f6104bf338484610d81565b5060015b92915050565b5f546001600160a01b031633146104f25760405162461bcd60e51b815260040161046e90611905565b60088190556040518181527ff165cf0b4ab9c43341e3cf3ae4ef6e2f30990cdfc6dfb364eaf9c5b23428f96d906020016104a8565b5f6105346012600a611a2e565b6105439064174876e800611a3c565b905090565b5f546001600160a01b031633146105715760405162461bcd60e51b815260040161046e90611905565b60648111156105d25760405162461bcd60e51b815260206004820152602760248201527f4c69717569646974792070657263656e746167652063616e6e6f7420657863656044820152666564203130302560c81b606482015260840161046e565b60098190556040518181527fed9c75b39eedad23d98525ccd9bac84a4441de7b53ef6499d77ce80027772b70906020016104a8565b5f610613848484610ea4565b6001600160a01b0384165f9081526002602090815260408083203380855292529091205461064c91869161064790866112ec565b610d81565b5060019392505050565b6004546001600160a01b0316336001600160a01b0316146106c95760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207461782077616c6c65742063616e2074726967676572206d616e756044820152660616c20737761760cc1b606482015260840161046e565b305f9081526001602052604090205480156106e7576106e78161134e565b50565b5f546001600160a01b031633146107135760405162461bcd60e51b815260040161046e90611905565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107845760405162461bcd60e51b815260040161046e90611905565b600b54600160a01b900460ff16156107de5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161046e565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556108289130919061081990601290611a2e565b6106479064174876e800611a3c565b600a5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610878573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089c9190611a53565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091f9190611a53565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610969573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098d9190611a53565b600b80546001600160a01b0319166001600160a01b0392909216919091179055305f908152600160205260409020546109c690476114be565b600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610a18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611a6e565b50600b805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610a7f5760405162461bcd60e51b815260040161046e90611905565b600f811115610ad05760405162461bcd60e51b815260206004820152601a60248201527f53656c6c207461782063616e6e6f742065786365656420313525000000000000604482015260640161046e565b60068190556040518181527fa3c7d2c9b682edd36ce728b0908b6223813d7676d1da69f5047dec843f7e64e6906020016104a8565b5f546001600160a01b03163314610b2e5760405162461bcd60e51b815260040161046e90611905565b5f5b82811015610b92578160035f868685818110610b4e57610b4e611a89565b9050602002016020810190610b639190611827565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610b30565b50505050565b5f6104bf338484610ea4565b5f546001600160a01b03163314610bcd5760405162461bcd60e51b815260040161046e90611905565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fb20a85f31d6178a78ae8f917b6fa7aa86600f111ecab2b41c44d92f38fa56201906020016104a8565b5f546001600160a01b03163314610c445760405162461bcd60e51b815260040161046e90611905565b600f811115610c955760405162461bcd60e51b815260206004820152601960248201527f427579207461782063616e6e6f74206578636565642031352500000000000000604482015260640161046e565b60058190556040518181527f981be54b1fc7934066e749221f7fbdced2c3c7a8fe33efe2c229510e4bd88be7906020016104a8565b6004546001600160a01b0316336001600160a01b031614610d3d5760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207461782077616c6c65742063616e2074726967676572206d616e75604482015266185b081cd95b9960ca1b606482015260840161046e565b4780156106e7576106e7816115c3565b5f546001600160a01b03163314610d765760405162461bcd60e51b815260040161046e90611905565b610d7f476115c3565b565b6001600160a01b038316610de35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046e565b6001600160a01b038216610e445760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f085760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046e565b6001600160a01b038216610f6a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046e565b5f8111610fcb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161046e565b5f80546001600160a01b03858116911614801590610ff657505f546001600160a01b03848116911614155b156111af57600b546001600160a01b03858116911614801561103057506001600160a01b0383165f9081526003602052604090205460ff16155b1561105c57611055606461104f600554856115fe90919063ffffffff16565b9061167c565b90506110c8565b600b546001600160a01b03848116911614801561109157506001600160a01b0384165f9081526003602052604090205460ff16155b80156110a657506001600160a01b0384163014155b156110c8576110c5606461104f600654856115fe90919063ffffffff16565b90505b305f90815260016020526040902054600b54600160a81b900460ff161580156110fe5750600b546001600160a01b038581169116145b80156111135750600b54600160b01b900460ff165b801561112157506007548110155b801561113657506001600160a01b0385163014155b156111ad57305f90815260016020526040812054611156906008546116d6565b90506111618161134e565b4780156111aa575f611183606461104f600954856115fe90919063ffffffff16565b305f9081526001602052604090205490915061119f90826114be565b6111a8476115c3565b505b50505b505b801561122757305f908152600160205260409020546111ce90826116ea565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061121e9085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461124990836112ec565b6001600160a01b0385165f9081526001602052604090205561128c61126e83836112ec565b6001600160a01b0385165f90815260016020526040902054906116ea565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112d585856112ec565b60405190815260200160405180910390a350505050565b5f8282111561133d5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015260640161046e565b6113478284611a9d565b9392505050565b600b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061139457611394611a89565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140f9190611a53565b8160018151811061142257611422611a89565b6001600160a01b039283166020918202929092010152600a546114489130911684610d81565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906114809085905f90869030904290600401611ab0565b5f604051808303815f87803b158015611497575f80fd5b505af11580156114a9573d5f803e3d5ffd5b5050600b805460ff60a81b1916905550505050565b600a546114d69030906001600160a01b031684610d81565b600a546004805460405163f305d71960e01b81523092810192909252602482018590525f60448301819052606483018190526001600160a01b0391821660848401524260a484015292839283929091169063f305d71990869060c40160606040518083038185885af115801561154e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115739190611b21565b604080518481526020810184905290810182905292955090935091507f39bf1607295d1bfb66e0d6f4984ace27536f0dadaa7b0aba21525d990e352d8e9060600160405180910390a15050505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156115fa573d5f803e3d5ffd5b5050565b5f825f0361160d57505f6104c3565b5f6116188385611a3c565b9050826116258583611b4c565b146113475760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161046e565b5f8082116116cc5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015260640161046e565b6113478284611b4c565b5f8183116116e45782611347565b50919050565b5f806116f68385611b6b565b9050838110156113475760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161046e565b5f60208284031215611758575f80fd5b5035919050565b5f602080835283518060208501525f5b8181101561178b5785810183015185820160400152820161176f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106e7575f80fd5b5f80604083850312156117d0575f80fd5b82356117db816117ab565b946020939093013593505050565b5f805f606084860312156117fb575f80fd5b8335611806816117ab565b92506020840135611816816117ab565b929592945050506040919091013590565b5f60208284031215611837575f80fd5b8135611347816117ab565b80151581146106e7575f80fd5b5f805f60408486031215611861575f80fd5b833567ffffffffffffffff80821115611878575f80fd5b818601915086601f83011261188b575f80fd5b813581811115611899575f80fd5b8760208260051b85010111156118ad575f80fd5b602092830195509350508401356118c381611842565b809150509250925092565b5f80604083850312156118df575f80fd5b82356118ea816117ab565b915060208301356118fa816117ab565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561198857815f190482111561196e5761196e61193a565b8085161561197b57918102915b93841c9390800290611953565b509250929050565b5f8261199e575060016104c3565b816119aa57505f6104c3565b81600181146119c057600281146119ca576119e6565b60019150506104c3565b60ff8411156119db576119db61193a565b50506001821b6104c3565b5060208310610133831016604e8410600b8410161715611a09575081810a6104c3565b611a13838361194e565b805f1904821115611a2657611a2661193a565b029392505050565b5f61134760ff841683611990565b80820281158282048414176104c3576104c361193a565b5f60208284031215611a63575f80fd5b8151611347816117ab565b5f60208284031215611a7e575f80fd5b815161134781611842565b634e487b7160e01b5f52603260045260245ffd5b818103818111156104c3576104c361193a565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611b005784516001600160a01b031683529383019391830191600101611adb565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611b33575f80fd5b8351925060208401519150604084015190509250925092565b5f82611b6657634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104c3576104c361193a56fea2646970667358221220d336122d70d1175379bede70176bfea8347ba46942a78a1845453aa0a7324a8564736f6c63430008180033

Deployed Bytecode Sourcemap

3443:10149:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12514:206;;;;;;;;;;-1:-1:-1;12514:206:0;;;;;:::i;:::-;;:::i;:::-;;5216:83;;;;;;;;;;-1:-1:-1;5286:5:0;;;;;;;;;;;-1:-1:-1;;;5286:5:0;;;;5216:83;;;;5286:5;5216:83;:::i;:::-;;;;;;;;6099:186;;;;;;;;;;-1:-1:-1;6099:186:0;;;;;:::i;:::-;;:::i;:::-;;;1373:14:1;;1366:22;1348:41;;1336:2;1321:18;6099:186:0;1208:187:1;12352:154:0;;;;;;;;;;-1:-1:-1;12352:154:0;;;;;:::i;:::-;;:::i;5493:95::-;;;;;;;;;;;;;:::i;:::-;;;1546:25:1;;;1534:2;1519:18;5493:95:0;1400:177:1;10836:355:0;;;;;;;;;;-1:-1:-1;10836:355:0;;;;;:::i;:::-;;:::i;6293:353::-;;;;;;;;;;-1:-1:-1;6293:353:0;;;;;:::i;:::-;;:::i;5402:83::-;;;;;;;;;;-1:-1:-1;5402:83:0;;3660:2;2185:36:1;;2173:2;2158:18;5402:83:0;2043:184:1;9733:338:0;;;;;;;;;;;;;:::i;11460:124::-;;;;;;;;;;-1:-1:-1;11460:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;11549:27:0;11525:4;11549:27;;;:18;:27;;;;;;;;;11460:124;5596:119;;;;;;;;;;-1:-1:-1;5596:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;5689:18:0;5662:7;5689:18;;;:9;:18;;;;;;;5596:119;2448:140;;;;;;;;;;;;;:::i;12837:715::-;;;;;;;;;;;;;:::i;10620:208::-;;;;;;;;;;-1:-1:-1;10620:208:0;;;;;:::i;:::-;;:::i;2234:79::-;;;;;;;;;;-1:-1:-1;2272:7:0;2299:6;2234:79;;-1:-1:-1;;;;;2299:6:0;;;2630:51:1;;2618:2;2603:18;2234:79:0;2484:203:1;11199:253:0;;;;;;;;;;-1:-1:-1;11199:253:0;;;;;:::i;:::-;;:::i;5723:192::-;;;;;;;;;;-1:-1:-1;5723:192:0;;;;;:::i;:::-;;:::i;12170:174::-;;;;;;;;;;-1:-1:-1;12170:174:0;;;;;:::i;:::-;;:::i;10412:200::-;;;;;;;;;;-1:-1:-1;10412:200:0;;;;;:::i;:::-;;:::i;5923:168::-;;;;;;;;;;-1:-1:-1;5923:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;6056:18:0;;;6029:7;6056:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5923:168;10079:325;;;;;;;;;;;;;:::i;12728:101::-;;;;;;;;;;;;;:::i;12514:206::-;2361:6;;-1:-1:-1;;;;;2361:6:0;277:10;2361:22;2353:67;;;;-1:-1:-1;;;2353:67:0;;;;;;;:::i;:::-;;;;;;;;;12618:17:::1;:36:::0;;;12672:40:::1;::::0;1546:25:1;;;12672:40:0::1;::::0;1534:2:1;1519:18;12672:40:0::1;;;;;;;;12514:206:::0;:::o;6099:186::-;6199:4;6216:39;277:10;6239:7;6248:6;6216:8;:39::i;:::-;-1:-1:-1;6273:4:0;6099:186;;;;;:::o;12352:154::-;2361:6;;-1:-1:-1;;;;;2361:6:0;277:10;2361:22;2353:67;;;;-1:-1:-1;;;2353:67:0;;;;;;;:::i;:::-;12428:11:::1;:24:::0;;;12470:28:::1;::::0;1546:25:1;;;12470:28:0::1;::::0;1534:2:1;1519:18;12470:28:0::1;1400:177:1::0;5493:95:0;5546:7;3719:15;3660:2;3719;:15;:::i;:::-;3704:30;;:12;:30;:::i;:::-;5566:14;;5493:95;:::o;10836:355::-;2361:6;;-1:-1:-1;;;;;2361:6:0;277:10;2361:22;2353:67;;;;-1:-1:-1;;;2353:67:0;;;;;;;:::i;:::-;10994:3:::1;10968:22;:29;;10946:118;;;::::0;-1:-1:-1;;;10946:118:0;;6468:2:1;10946:118:0::1;::::0;::::1;6450:21:1::0;6507:2;6487:18;;;6480:30;6546:34;6526:18;;;6519:62;-1:-1:-1;;;6597:18:1;;;6590:37;6644:19;;10946:118:0::1;6266:403:1::0;10946:118:0::1;11075:19;:44:::0;;;11137:46:::1;::::0;1546:25:1;;;11137:46:0::1;::::0;1534:2:1;1519:18;11137:46:0::1;1400:177:1::0;6293:353:0;6425:4;6442:36;6452:6;6460:9;6471:6;6442:9;:36::i;:::-;-1:-1:-1;;;;;6560:19:0;;;;;;:11;:19;;;;;;;;277:10;6560:33;;;;;;;;;6489:127;;6512:6;;6560:45;;6598:6;6560:37;:45::i;:::-;6489:8;:127::i;:::-;-1:-1:-1;6634:4:0;6293:353;;;;;:::o;9733:338::-;9813:12;;-1:-1:-1;;;;;9813:12:0;277:10;-1:-1:-1;;;;;9797:28:0;;9775:117;;;;-1:-1:-1;;;9775:117:0;;6876:2:1;9775:117:0;;;6858:21:1;6915:2;6895:18;;;6888:30;6954:34;6934:18;;;6927:62;-1:-1:-1;;;7005:18:1;;;6998:37;7052:19;;9775:117:0;6674:403:1;9775:117:0;9952:4;9903:28;5689:18;;;:9;:18;;;;;;9973:24;;9969:95;;10014:38;10031:20;10014:16;:38::i;:::-;9764:307;9733:338::o;2448:140::-;2361:6;;-1:-1:-1;;;;;2361:6:0;277:10;2361:22;2353:67;;;;-1:-1:-1;;;2353:67:0;;;;;;;:::i;:::-;2547:1:::1;2531:6:::0;;2510:40:::1;::::0;-1:-1:-1;;;;;2531:6:0;;::::1;::::0;2510:40:::1;::::0;2547:1;;2510:40:::1;2578:1;2561:19:::0;;-1:-1:-1;;;;;;2561:19:0::1;::::0;;2448:140::o;12837:715::-;2361:6;;-1:-1:-1;;;;;2361:6:0;277:10;2361:22;2353:67;;;;-1:-1:-1;;;2353:67:0;;;;;;;:::i;:::-;12901:11:::1;::::0;-1:-1:-1;;;12901:11:0;::::1;;;12900:12;12892:48;;;::::0;-1:-1:-1;;;12892:48:0;;7284:2:1;12892:48:0::1;::::0;::::1;7266:21:1::0;7323:2;7303:18;;;7296:30;7362:25;7342:18;;;7335:53;7405:18;;12892:48:0::1;7082:347:1::0;12892:48:0::1;12951:15;:104:::0;;-1:-1:-1;;;;;;12951:104:0::1;13002:42;12951:104:::0;;::::1;::::0;;13068:58:::1;::::0;13085:4:::1;::::0;13002:42;3719:15:::1;::::0;3660:2:::1;::::0;3719:15:::1;:::i;:::-;3704:30;::::0;:12:::1;:30;:::i;13068:58::-;13173:15;;;;;;;;;-1:-1:-1::0;;;;;13173:15:0::1;-1:-1:-1::0;;;;;13173:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13155:55:0::1;;13233:4;13253:15;;;;;;;;;-1:-1:-1::0;;;;;13253:15:0::1;-1:-1:-1::0;;;;;13253:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13155:131;::::0;-1:-1:-1;;;;;;13155:131:0::1;::::0;;;;;;-1:-1:-1;;;;;7920:15:1;;;13155:131:0::1;::::0;::::1;7902:34:1::0;7972:15;;7952:18;;;7945:43;7837:18;;13155:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13139:13;:147:::0;;-1:-1:-1;;;;;;13139:147:0::1;-1:-1:-1::0;;;;;13139:147:0;;;::::1;::::0;;;::::1;::::0;;13330:4:::1;-1:-1:-1::0;5689:18:0;;;-1:-1:-1;5689:18:0;;;;;;13299:61:::1;::::0;13338:21:::1;13299:12;:61::i;:::-;13380:13;::::0;13425:15:::1;::::0;13373:111:::1;::::0;-1:-1:-1;;;13373:111:0;;-1:-1:-1;;;;;13425:15:0;;::::1;13373:111;::::0;::::1;8173:51:1::0;-1:-1:-1;;8240:18:1;;;8233:34;13380:13:0;::::1;::::0;13373:29:::1;::::0;8146:18:1;;13373:111:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13497:11:0::1;:18:::0;;-1:-1:-1;;;;13526:18:0;-1:-1:-1;;;13526:18:0;;;12837:715::o;10620:208::-;2361:6;;-1:-1:-1;;;;;2361:6:0;277:10;2361:22;2353:67;;;;-1:-1:-1;;;2353:67:0;;;;;;;:::i;:::-;10712:2:::1;10698:10;:16;;10690:55;;;::::0;-1:-1:-1;;;10690:55:0;;8730:2:1;10690:55:0::1;::::0;::::1;8712:21:1::0;8769:2;8749:18;;;8742:30;8808:28;8788:18;;;8781:56;8854:18;;10690:55:0::1;8528:350:1::0;10690:55:0::1;10756:8;:21:::0;;;10795:25:::1;::::0;1546::1;;;10795::0::1;::::0;1534:2:1;1519:18;10795:25:0::1;1400:177:1::0;11199:253:0;2361:6;;-1:-1:-1;;;;;2361:6:0;277:10;2361:22;2353:67;;;;-1:-1:-1;;;2353:67:0;;;;;;;:::i;:::-;11335:9:::1;11330:115;11350:19:::0;;::::1;11330:115;;;11425:8;11391:18;:31;11410:8;;11419:1;11410:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11391:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11391:31:0;:42;;-1:-1:-1;;11391:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;11371:3:0::1;11330:115;;;;11199:253:::0;;;:::o;5723:192::-;5826:4;5843:42;277:10;5867:9;5878:6;5843:9;:42::i;12170:174::-;2361:6;;-1:-1:-1;;;;;2361:6:0;277:10;2361:22;2353:67;;;;-1:-1:-1;;;2353:67:0;;;;;;;:::i;:::-;12256:12:::1;:29:::0;;-1:-1:-1;;;;;;12256:29:0::1;-1:-1:-1::0;;;;;12256:29:0;::::1;::::0;;::::1;::::0;;;12303:33:::1;::::0;2630:51:1;;;12303:33:0::1;::::0;2618:2:1;2603:18;12303:33:0::1;2484:203:1::0;10412:200:0;2361:6;;-1:-1:-1;;;;;2361:6:0;277:10;2361:22;2353:67;;;;-1:-1:-1;;;2353:67:0;;;;;;;:::i;:::-;10501:2:::1;10488:9;:15;;10480:53;;;::::0;-1:-1:-1;;;10480:53:0;;9433:2:1;10480:53:0::1;::::0;::::1;9415:21:1::0;9472:2;9452:18;;;9445:30;9511:27;9491:18;;;9484:55;9556:18;;10480:53:0::1;9231:349:1::0;10480:53:0::1;10544:7;:19:::0;;;10581:23:::1;::::0;1546:25:1;;;10581:23:0::1;::::0;1534:2:1;1519:18;10581:23:0::1;1400:177:1::0;10079:325:0;10159:12;;-1:-1:-1;;;;;10159:12:0;277:10;-1:-1:-1;;;;;10143:28:0;;10121:117;;;;-1:-1:-1;;;10121:117:0;;9787:2:1;10121:117:0;;;9769:21:1;9826:2;9806:18;;;9799:30;9865:34;9845:18;;;9838:62;-1:-1:-1;;;9916:18:1;;;9909:37;9963:19;;10121:117:0;9585:403:1;10121:117:0;10278:21;10314:22;;10310:87;;10353:32;10366:18;10353:12;:32::i;12728:101::-;2361:6;;-1:-1:-1;;;;;2361:6:0;277:10;2361:22;2353:67;;;;-1:-1:-1;;;2353:67:0;;;;;;;:::i;:::-;12786:35:::1;12799:21;12786:12;:35::i;:::-;12728:101::o:0;6654:337::-;-1:-1:-1;;;;;6747:19:0;;6739:68;;;;-1:-1:-1;;;6739:68:0;;10195:2:1;6739:68:0;;;10177:21:1;10234:2;10214:18;;;10207:30;10273:34;10253:18;;;10246:62;-1:-1:-1;;;10324:18:1;;;10317:34;10368:19;;6739:68:0;9993:400:1;6739:68:0;-1:-1:-1;;;;;6826:21:0;;6818:68;;;;-1:-1:-1;;;6818:68:0;;10600:2:1;6818:68:0;;;10582:21:1;10639:2;10619:18;;;10612:30;10678:34;10658:18;;;10651:62;-1:-1:-1;;;10729:18:1;;;10722:32;10771:19;;6818:68:0;10398:398:1;6818:68:0;-1:-1:-1;;;;;6899:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6951:32;;1546:25:1;;;6951:32:0;;1519:18:1;6951:32:0;;;;;;;6654:337;;;:::o;6999:2016::-;-1:-1:-1;;;;;7087:18:0;;7079:68;;;;-1:-1:-1;;;7079:68:0;;11003:2:1;7079:68:0;;;10985:21:1;11042:2;11022:18;;;11015:30;11081:34;11061:18;;;11054:62;-1:-1:-1;;;11132:18:1;;;11125:35;11177:19;;7079:68:0;10801:401:1;7079:68:0;-1:-1:-1;;;;;7166:16:0;;7158:64;;;;-1:-1:-1;;;7158:64:0;;11409:2:1;7158:64:0;;;11391:21:1;11448:2;11428:18;;;11421:30;11487:34;11467:18;;;11460:62;-1:-1:-1;;;11538:18:1;;;11531:33;11581:19;;7158:64:0;11207:399:1;7158:64:0;7250:1;7241:6;:10;7233:64;;;;-1:-1:-1;;;7233:64:0;;11813:2:1;7233:64:0;;;11795:21:1;11852:2;11832:18;;;11825:30;11891:34;11871:18;;;11864:62;-1:-1:-1;;;11942:18:1;;;11935:39;11991:19;;7233:64:0;11611:405:1;7233:64:0;7310:17;2299:6;;-1:-1:-1;;;;;7346:15:0;;;2299:6;;7346:15;;;;:32;;-1:-1:-1;2272:7:0;2299:6;-1:-1:-1;;;;;7365:13:0;;;2299:6;;7365:13;;7346:32;7342:1300;;;7407:13;;-1:-1:-1;;;;;7399:21:0;;;7407:13;;7399:21;:48;;;;-1:-1:-1;;;;;;7425:22:0;;;;;;:18;:22;;;;;;;;7424:23;7399:48;7395:356;;;7480:28;7504:3;7480:19;7491:7;;7480:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;7468:40;;7395:356;;;7558:13;;-1:-1:-1;;;;;7552:19:0;;;7558:13;;7552:19;:65;;;;-1:-1:-1;;;;;;7593:24:0;;;;;;:18;:24;;;;;;;;7592:25;7552:65;:107;;;;-1:-1:-1;;;;;;7638:21:0;;7654:4;7638:21;;7552:107;7530:221;;;7706:29;7731:3;7706:20;7717:8;;7706:6;:10;;:20;;;;:::i;:29::-;7694:41;;7530:221;7816:4;7767:28;5689:18;;;:9;:18;;;;;;7860:6;;-1:-1:-1;;;7860:6:0;;;;7859:7;:47;;;;-1:-1:-1;7893:13:0;;-1:-1:-1;;;;;7887:19:0;;;7893:13;;7887:19;7859:47;:79;;;;-1:-1:-1;7927:11:0;;-1:-1:-1;;;7927:11:0;;;;7859:79;:141;;;;;7983:17;;7959:20;:41;;7859:141;:183;;;;-1:-1:-1;;;;;;8021:21:0;;8037:4;8021:21;;7859:183;7837:794;;;8119:4;8077:17;5689:18;;;:9;:18;;;;;;8097:42;;8127:11;;8097:3;:42::i;:::-;8077:62;;8158:27;8175:9;8158:16;:27::i;:::-;8233:21;8277:22;;8273:343;;8324:26;8353:104;8453:3;8353:69;8402:19;;8353:18;:48;;:69;;;;:::i;:104::-;8511:4;5662:7;5689:18;;;:9;:18;;;;;;8324:133;;-1:-1:-1;8480:58:0;;8519:18;8480:12;:58::i;:::-;8561:35;8574:21;8561:12;:35::i;:::-;8301:315;8273:343;8058:573;;7837:794;7380:1262;7342:1300;8658:13;;8654:172;;8733:4;8715:24;;;;:9;:24;;;;;;:39;;8744:9;8715:28;:39::i;:::-;8706:4;8688:24;;;;:9;:24;;;;;;;:66;;;;8774:40;;-1:-1:-1;;;;;8774:40:0;;;;;;;8804:9;1546:25:1;;1534:2;1519:18;;1400:177;8774:40:0;;;;;;;;8654:172;-1:-1:-1;;;;;8856:15:0;;;;;;:9;:15;;;;;;:27;;8876:6;8856:19;:27::i;:::-;-1:-1:-1;;;;;8838:15:0;;;;;;:9;:15;;;;;:45;8910:40;8928:21;:6;8939:9;8928:10;:21::i;:::-;-1:-1:-1;;;;;8910:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;8894:13:0;;;;;;;:9;:13;;;;;:56;;;;8966:41;;;8985:21;:6;8996:9;8985:10;:21::i;:::-;8966:41;;1546:25:1;;;1534:2;1519:18;8966:41:0;;;;;;;7068:1947;6999:2016;;;:::o;1310:158::-;1368:7;1401:1;1396;:6;;1388:49;;;;-1:-1:-1;;;1388:49:0;;12223:2:1;1388:49:0;;;12205:21:1;12262:2;12242:18;;;12235:30;12301:32;12281:18;;;12274:60;12351:18;;1388:49:0;12021:354:1;1388:49:0;1455:5;1459:1;1455;:5;:::i;:::-;1448:12;1310:158;-1:-1:-1;;;1310:158:0:o;9138:485::-;4872:6;:13;;-1:-1:-1;;;;4872:13:0;-1:-1:-1;;;4872:13:0;;;9240:16:::1;::::0;;9254:1:::1;9240:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9240:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9240:16:0::1;9216:40;;9285:4;9267;9272:1;9267:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9267:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9311:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;9311:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;9267:7;;9311:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9301:4;9306:1;9301:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9301:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9378:15:::1;::::0;9346:62:::1;::::0;9363:4:::1;::::0;9378:15:::1;9396:11:::0;9346:8:::1;:62::i;:::-;9419:15;::::0;:196:::1;::::0;-1:-1:-1;;;9419:196:0;;-1:-1:-1;;;;;9419:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;9500:11;;9419:15:::1;::::0;9542:4;;9569::::1;::::0;9589:15:::1;::::0;9419:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4908:6:0;:14;;-1:-1:-1;;;;4908:14:0;;;-1:-1:-1;;;;9138:485:0:o;11592:570::-;11705:15;;11673:62;;11690:4;;-1:-1:-1;;;;;11705:15:0;11723:11;11673:8;:62::i;:::-;11858:15;;12028:12;;;11858:231;;-1:-1:-1;;;11858:231:0;;11934:4;11858:231;;;13979:34:1;;;;14029:18;;;14022:34;;;11761:19:0;14072:18:1;;;14065:34;;;14115:18;;;14108:34;;;-1:-1:-1;;;;;12028:12:0;;;14158:19:1;;;14151:44;12059:15:0;14211:19:1;;;14204:35;11761:19:0;;;;;11858:15;;;;:31;;11897:9;;13913:19:1;;11858:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12107:47;;;14763:25:1;;;14819:2;14804:18;;14797:34;;;14847:18;;;14840:34;;;11746:343:0;;-1:-1:-1;11746:343:0;;-1:-1:-1;11746:343:0;-1:-1:-1;12107:47:0;;14751:2:1;14736:18;12107:47:0;;;;;;;11662:500;;;11592:570;;:::o;9631:94::-;9688:12;;:29;;-1:-1:-1;;;;;9688:12:0;;;;:29;;;;;9710:6;;9688:12;:29;:12;:29;9710:6;9688:12;:29;;;;;;;;;;;;;;;;;;;;;9631:94;:::o;1476:246::-;1534:7;1558:1;1563;1558:6;1554:47;;-1:-1:-1;1588:1:0;1581:8;;1554:47;1611:9;1623:5;1627:1;1623;:5;:::i;:::-;1611:17;-1:-1:-1;1656:1:0;1647:5;1651:1;1611:17;1647:5;:::i;:::-;:10;1639:56;;;;-1:-1:-1;;;1639:56:0;;15309:2:1;1639:56:0;;;15291:21:1;15348:2;15328:18;;;15321:30;15387:34;15367:18;;;15360:62;-1:-1:-1;;;15438:18:1;;;15431:31;15479:19;;1639:56:0;15107:397:1;1730:153:0;1788:7;1820:1;1816;:5;1808:44;;;;-1:-1:-1;;;1808:44:0;;15711:2:1;1808:44:0;;;15693:21:1;15750:2;15730:18;;;15723:30;15789:28;15769:18;;;15762:56;15835:18;;1808:44:0;15509:350:1;1808:44:0;1870:5;1874:1;1870;:5;:::i;9023:107::-;9080:7;9112:1;9108;:5;9107:15;;9121:1;9107:15;;;-1:-1:-1;9117:1:0;9023:107;-1:-1:-1;9023:107:0:o;1123:179::-;1181:7;;1213:5;1217:1;1213;:5;:::i;:::-;1201:17;;1242:1;1237;:6;;1229:46;;;;-1:-1:-1;;;1229:46:0;;16196:2:1;1229:46:0;;;16178:21:1;16235:2;16215:18;;;16208:30;16274:29;16254:18;;;16247:57;16321:18;;1229:46:0;15994:351:1;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;888:315;956:6;964;1017:2;1005:9;996:7;992:23;988:32;985:52;;;1033:1;1030;1023:12;985:52;1072:9;1059:23;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1193:2;1178:18;;;;1165:32;;-1:-1:-1;;;888:315:1:o;1582:456::-;1659:6;1667;1675;1728:2;1716:9;1707:7;1703:23;1699:32;1696:52;;;1744:1;1741;1734:12;1696:52;1783:9;1770:23;1802:31;1827:5;1802:31;:::i;:::-;1852:5;-1:-1:-1;1909:2:1;1894:18;;1881:32;1922:33;1881:32;1922:33;:::i;:::-;1582:456;;1974:7;;-1:-1:-1;;;2028:2:1;2013:18;;;;2000:32;;1582:456::o;2232:247::-;2291:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;2692:118::-;2778:5;2771:13;2764:21;2757:5;2754:32;2744:60;;2800:1;2797;2790:12;2815:750;2907:6;2915;2923;2976:2;2964:9;2955:7;2951:23;2947:32;2944:52;;;2992:1;2989;2982:12;2944:52;3032:9;3019:23;3061:18;3102:2;3094:6;3091:14;3088:34;;;3118:1;3115;3108:12;3088:34;3156:6;3145:9;3141:22;3131:32;;3201:7;3194:4;3190:2;3186:13;3182:27;3172:55;;3223:1;3220;3213:12;3172:55;3263:2;3250:16;3289:2;3281:6;3278:14;3275:34;;;3305:1;3302;3295:12;3275:34;3360:7;3353:4;3343:6;3340:1;3336:14;3332:2;3328:23;3324:34;3321:47;3318:67;;;3381:1;3378;3371:12;3318:67;3412:4;3404:13;;;;-1:-1:-1;3436:6:1;-1:-1:-1;;3477:20:1;;3464:34;3507:28;3464:34;3507:28;:::i;:::-;3554:5;3544:15;;;2815:750;;;;;:::o;3830:388::-;3898:6;3906;3959:2;3947:9;3938:7;3934:23;3930:32;3927:52;;;3975:1;3972;3965:12;3927:52;4014:9;4001:23;4033:31;4058:5;4033:31;:::i;:::-;4083:5;-1:-1:-1;4140:2:1;4125:18;;4112:32;4153:33;4112:32;4153:33;:::i;:::-;4205:7;4195:17;;;3830:388;;;;;:::o;4223:356::-;4425:2;4407:21;;;4444:18;;;4437:30;4503:34;4498:2;4483:18;;4476:62;4570:2;4555:18;;4223:356::o;4584:127::-;4645:10;4640:3;4636:20;4633:1;4626:31;4676:4;4673:1;4666:15;4700:4;4697:1;4690:15;4716:416;4805:1;4842:5;4805:1;4856:270;4877:7;4867:8;4864:21;4856:270;;;4936:4;4932:1;4928:6;4924:17;4918:4;4915:27;4912:53;;;4945:18;;:::i;:::-;4995:7;4985:8;4981:22;4978:55;;;5015:16;;;;4978:55;5094:22;;;;5054:15;;;;4856:270;;;4860:3;4716:416;;;;;:::o;5137:806::-;5186:5;5216:8;5206:80;;-1:-1:-1;5257:1:1;5271:5;;5206:80;5305:4;5295:76;;-1:-1:-1;5342:1:1;5356:5;;5295:76;5387:4;5405:1;5400:59;;;;5473:1;5468:130;;;;5380:218;;5400:59;5430:1;5421:10;;5444:5;;;5468:130;5505:3;5495:8;5492:17;5489:43;;;5512:18;;:::i;:::-;-1:-1:-1;;5568:1:1;5554:16;;5583:5;;5380:218;;5682:2;5672:8;5669:16;5663:3;5657:4;5654:13;5650:36;5644:2;5634:8;5631:16;5626:2;5620:4;5617:12;5613:35;5610:77;5607:159;;;-1:-1:-1;5719:19:1;;;5751:5;;5607:159;5798:34;5823:8;5817:4;5798:34;:::i;:::-;5868:6;5864:1;5860:6;5856:19;5847:7;5844:32;5841:58;;;5879:18;;:::i;:::-;5917:20;;5137:806;-1:-1:-1;;;5137:806:1:o;5948:140::-;6006:5;6035:47;6076:4;6066:8;6062:19;6056:4;6035:47;:::i;6093:168::-;6166:9;;;6197;;6214:15;;;6208:22;;6194:37;6184:71;;6235:18;;:::i;7434:251::-;7504:6;7557:2;7545:9;7536:7;7532:23;7528:32;7525:52;;;7573:1;7570;7563:12;7525:52;7605:9;7599:16;7624:31;7649:5;7624:31;:::i;8278:245::-;8345:6;8398:2;8386:9;8377:7;8373:23;8369:32;8366:52;;;8414:1;8411;8404:12;8366:52;8446:9;8440:16;8465:28;8487:5;8465:28;:::i;8883:127::-;8944:10;8939:3;8935:20;8932:1;8925:31;8975:4;8972:1;8965:15;8999:4;8996:1;8989:15;12380:128;12447:9;;;12468:11;;;12465:37;;;12482:18;;:::i;12645:980::-;12907:4;12955:3;12944:9;12940:19;12986:6;12975:9;12968:25;13012:2;13050:6;13045:2;13034:9;13030:18;13023:34;13093:3;13088:2;13077:9;13073:18;13066:31;13117:6;13152;13146:13;13183:6;13175;13168:22;13221:3;13210:9;13206:19;13199:26;;13260:2;13252:6;13248:15;13234:29;;13281:1;13291:195;13305:6;13302:1;13299:13;13291:195;;;13370:13;;-1:-1:-1;;;;;13366:39:1;13354:52;;13461:15;;;;13426:12;;;;13402:1;13320:9;13291:195;;;-1:-1:-1;;;;;;;13542:32:1;;;;13537:2;13522:18;;13515:60;-1:-1:-1;;;13606:3:1;13591:19;13584:35;13503:3;12645:980;-1:-1:-1;;;12645:980:1:o;14250:306::-;14338:6;14346;14354;14407:2;14395:9;14386:7;14382:23;14378:32;14375:52;;;14423:1;14420;14413:12;14375:52;14452:9;14446:16;14436:26;;14502:2;14491:9;14487:18;14481:25;14471:35;;14546:2;14535:9;14531:18;14525:25;14515:35;;14250:306;;;;;:::o;14885:217::-;14925:1;14951;14941:132;;14995:10;14990:3;14986:20;14983:1;14976:31;15030:4;15027:1;15020:15;15058:4;15055:1;15048:15;14941:132;-1:-1:-1;15087:9:1;;14885:217::o;15864:125::-;15929:9;;;15950:10;;;15947:36;;;15963:18;;:::i

Swarm Source

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