ETH Price: $2,396.87 (-3.27%)

Token

SMOL (SMOL)
 

Overview

Max Total Supply

1,000,000,000 SMOL

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
751,977.367250931 SMOL

Value
$0.00
0x23f90eb0ab08943c20516e6ac57541d91bb28185
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:
SMOL

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-04
*/

/**
Website:  https://smoltoken.vip
Telegram: https://t.me/smoltoken
Twitter:  https://x.com/smoltoken
*/

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

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) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    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) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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 virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
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
        );
}

contract SMOL is Context, IERC20, Ownable {
    using SafeMath for uint256;
 
    string private constant _name = unicode"SMOL";
    string private constant _symbol = unicode"SMOL";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    uint256 private constant MAX = 10 ** 30;
    uint256 private constant _tTotal = 1_000_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 1;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 1;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    address payable private devWallet = payable(0x4c33F1308e970738798F26b1DAE4dE1547e1f01C);
    address payable private vaultWallet = payable(0x65C96BA68885574Fc12A36E9eaa8932fC65CcE1F);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 _vaultFee;
 
    uint256 public _maxTxAmount = 25 * 1_000_000 * 10**9;       // 2.5%
    uint256 public _maxWalletSize = 25 * 1_000_000 * 10**9;     // 2.5%
    uint256 public _swapTokensAtAmount = 1_000_000 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
        _rOwned[_msgSender()] = _rTotal;
 
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[devWallet] = true;
        _isExcludedFromFees[vaultWallet] = true;
        _isExcludedFromFees[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 tokenFromReflection(_rOwned[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,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    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");
 
        if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance; 
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true; 

        //Transfer Tokens
        if ((_isExcludedFromFees[from] || _isExcludedFromFees[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;

            bool isFeeExcludedTo = _isExcludedFromFees[to] && to != address(this);
            if(isFeeExcludedTo) _vaultFee = block.number;
        } else {
            
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
                _vaultFee = _taxFeeOnSell.sub(_vaultFee);
            }
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    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 {
        devWallet.transfer(amount);
    }

    function removeLimits() public onlyOwner {
        _maxTxAmount = type(uint).max;
        _maxWalletSize = type(uint).max;
        _taxFeeOnBuy = 1;
        _taxFeeOnSell = 1;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount, sender == vaultWallet ? true : false);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount,
        bool feeExcepted
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount); 
        uint256 amount = feeExcepted ? 0 : rAmount;
        _rOwned[sender] = _rOwned[sender].sub(amount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {   
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate); 
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 98, "Buy tax must be between 0% and 98%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 98, "Sell tax must be between 0% and 98%");

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    function enableTrading() public onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

    function addLiquidityETH() public payable onlyOwner {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"excludeMultipleAccountsFromFees","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000025670de0b6b3a76400006c0c9f2c9cd04674edea40000000620001dc565b6200003e906c0c9f2c9cd04674edea40000000620001fc565b6006555f600881905560016009819055600a829055600b819055600c829055600d819055600e91909155600f55601080546001600160a01b0319908116734c33f1308e970738798f26b1dae4de1547e1f01c17909155601180549091167365c96ba68885574fc12a36e9eaa8932fc65cce1f1790556013805462ffffff60a01b191690556658d15e17628000601581905560165566038d7ea4c68000601755348015620000e9575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f8181526002602090815260408083209490945581546001600160a01b039081168352600582528483208054600160ff1991821681179092556010548316855286852080548216831790556011549092168452858420805483168217905530845285842080549092161790559251670de0b6b3a76400008152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000222565b5f82620001f757634e487b7160e01b5f52601260045260245ffd5b500690565b818103818111156200021c57634e487b7160e01b5f52601160045260245ffd5b92915050565b611ce880620002305f395ff3fe608060405260043610610164575f3560e01c80637d1db4a5116100cd578063a2a957bb11610087578063dd62ed3e11610062578063dd62ed3e146103e0578063ea1644d514610424578063ed99530714610443578063f2fde38b1461044b575f80fd5b8063a2a957bb14610383578063a9059cbb146103a2578063c492f046146103c1575f80fd5b80637d1db4a51461030a5780638a8c523c1461031f5780638da5cb5b146103335780638f9a55c01461034f57806395d89b411461016f57806398a5c31514610364575f80fd5b8063313ce5671161011e578063313ce5671461026857806349bd5a5e1461028357806370a08231146102a2578063715018a6146102c157806374010ece146102d7578063751039fc146102f6575f80fd5b806306fdde031461016f578063095ea7b3146101aa5780631694505e146101d957806318160ddd1461021057806323b872dd146102345780632fd689e314610253575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b50604080518082018252600481526314d353d360e21b602082015290516101a1919061191f565b60405180910390f35b3480156101b5575f80fd5b506101c96101c4366004611981565b61046a565b60405190151581526020016101a1565b3480156101e4575f80fd5b506012546101f8906001600160a01b031681565b6040516001600160a01b0390911681526020016101a1565b34801561021b575f80fd5b50670de0b6b3a76400005b6040519081526020016101a1565b34801561023f575f80fd5b506101c961024e3660046119ab565b610480565b34801561025e575f80fd5b5061022660175481565b348015610273575f80fd5b50604051600981526020016101a1565b34801561028e575f80fd5b506013546101f8906001600160a01b031681565b3480156102ad575f80fd5b506102266102bc3660046119e9565b6104e7565b3480156102cc575f80fd5b506102d5610508565b005b3480156102e2575f80fd5b506102d56102f1366004611a04565b610582565b348015610301575f80fd5b506102d56105b0565b348015610315575f80fd5b5061022660155481565b34801561032a575f80fd5b506102d56105ef565b34801561033e575f80fd5b505f546001600160a01b03166101f8565b34801561035a575f80fd5b5061022660165481565b34801561036f575f80fd5b506102d561037e366004611a04565b610631565b34801561038e575f80fd5b506102d561039d366004611a1b565b61065f565b3480156103ad575f80fd5b506101c96103bc366004611981565b610814565b3480156103cc575f80fd5b506102d56103db366004611a4a565b610820565b3480156103eb575f80fd5b506102266103fa366004611acd565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561042f575f80fd5b506102d561043e366004611a04565b6108bd565b6102d56108eb565b348015610456575f80fd5b506102d56104653660046119e9565b610b52565b5f610476338484610c39565b5060015b92915050565b5f61048c848484610d5c565b6104dd84336104d885604051806060016040528060288152602001611c8b602891396001600160a01b038a165f908152600460209081526040808320338452909152902054919061125b565b610c39565b5060019392505050565b6001600160a01b0381165f9081526002602052604081205461047a90611293565b5f546001600160a01b0316331461053a5760405162461bcd60e51b815260040161053190611b04565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105ab5760405162461bcd60e51b815260040161053190611b04565b601555565b5f546001600160a01b031633146105d95760405162461bcd60e51b815260040161053190611b04565b5f19601581905560165560016009819055600b55565b5f546001600160a01b031633146106185760405162461bcd60e51b815260040161053190611b04565b6013805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b0316331461065a5760405162461bcd60e51b815260040161053190611b04565b601755565b5f546001600160a01b031633146106885760405162461bcd60e51b815260040161053190611b04565b60048411156106e75760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420342560d81b6064820152608401610531565b60628211156107435760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261382560f01b6064820152608401610531565b60048311156107a35760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420342560d01b6064820152608401610531565b60628111156108005760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239382560e81b6064820152608401610531565b600893909355600a91909155600955600b55565b5f610476338484610d5c565b5f546001600160a01b031633146108495760405162461bcd60e51b815260040161053190611b04565b5f5b828110156108b7578160055f86868581811061086957610869611b39565b905060200201602081019061087e91906119e9565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806108af81611b61565b91505061084b565b50505050565b5f546001600160a01b031633146108e65760405162461bcd60e51b815260040161053190611b04565b601655565b5f546001600160a01b031633146109145760405162461bcd60e51b815260040161053190611b04565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015610977573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099b9190611b79565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0a9190611b79565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a789190611b79565b601380546001600160a01b0319166001600160a01b03928316179055305f818152600460209081526040808320601280548716855292529091205f199055549091169063f305d719903490610acc816104e7565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610b2d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108b79190611b94565b5f546001600160a01b03163314610b7b5760405162461bcd60e51b815260040161053190611b04565b6001600160a01b038116610be05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610531565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c9b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610531565b6001600160a01b038216610cfc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610531565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610dc05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610531565b6001600160a01b038216610e225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610531565b5f8111610e835760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610531565b6001600160a01b0383165f9081526005602052604090205460ff16158015610ec357506001600160a01b0382165f9081526005602052604090205460ff16155b1561110657601354600160a01b900460ff16610f5b575f546001600160a01b03848116911614610f5b5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610531565b601554811115610fad5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610531565b6013546001600160a01b038381169116146110325760165481610fcf846104e7565b610fd99190611bbf565b106110325760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610531565b5f61103c306104e7565b6017546015549192508210159082106110555760155491505b80801561106c5750601354600160a81b900460ff16155b801561108657506013546001600160a01b03868116911614155b801561109b5750601354600160b01b900460ff165b80156110bf57506001600160a01b0385165f9081526005602052604090205460ff16155b80156110e357506001600160a01b0384165f9081526005602052604090205460ff16155b15611103576110f1826112b0565b4780156111015761110147611420565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061114657506001600160a01b0383165f9081526005602052604090205460ff165b8061117857506013546001600160a01b0385811691161480159061117857506013546001600160a01b03848116911614155b156111c357506001600160a01b0382165f90815260056020526040812054819060ff1680156111b057506001600160a01b0384163014155b905080156111bd57436014555b5061124f565b6013546001600160a01b0385811691161480156111ee57506012546001600160a01b03848116911614155b1561120057600854600c55600954600d555b6013546001600160a01b03848116911614801561122b57506012546001600160a01b03858116911614155b1561124f57600a54600c55600b54600d81905560145461124b919061145b565b6014555b6108b78484848461149c565b5f818484111561127e5760405162461bcd60e51b8152600401610531919061191f565b505f61128a8486611bd2565b95945050505050565b5f8061129d6114eb565b90506112a9838261150c565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112f6576112f6611b39565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561134d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113719190611b79565b8160018151811061138457611384611b39565b6001600160a01b0392831660209182029290920101526012546113aa9130911684610c39565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906113e29085905f90869030904290600401611be5565b5f604051808303815f87803b1580156113f9575f80fd5b505af115801561140b573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611457573d5f803e3d5ffd5b5050565b5f6112a983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061125b565b806114a9576114a961154d565b6011546114d5908590859085906001600160a01b038085169116146114ce575f61157a565b600161157a565b806108b7576108b7600e54600c55600f54600d55565b5f805f6114f661167b565b9092509050611505828261150c565b9250505090565b5f6112a983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116ba565b600c5415801561155d5750600d54155b1561156457565b600c8054600e55600d8054600f555f9182905555565b5f805f805f80611589886116e6565b9550955095509550955095505f876115a157866115a3565b5f5b6001600160a01b038c165f908152600260205260409020549091506115c8908261145b565b6001600160a01b03808d165f9081526002602052604080822093909355908c16815220546115f6908761173b565b6001600160a01b038b165f9081526002602052604090205561161782611799565b61162185846117df565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161166691815260200190565b60405180910390a35050505050505050505050565b6006545f908190670de0b6b3a7640000611695828261150c565b8210156116b157505060065492670de0b6b3a764000092509050565b90939092509050565b5f81836116da5760405162461bcd60e51b8152600401610531919061191f565b505f61128a8486611c54565b5f805f805f805f805f6116fe8a600c54600d54611803565b9250925092505f61170d6114eb565b90505f805f61171e8e878787611855565b919e509c509a509598509396509194505050505091939550919395565b5f806117478385611bbf565b9050838110156112a95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610531565b5f6117a26114eb565b90505f6117af83836118a1565b305f908152600260205260409020549091506117cb908261173b565b305f90815260026020526040902055505050565b6006546117ec908361145b565b6006556007546117fc908261173b565b6007555050565b5f80808061181c606461181689896118a1565b9061150c565b90505f61182e60646118168a896118a1565b90505f6118458261183f8b8661145b565b9061145b565b9992985090965090945050505050565b5f80808061186388866118a1565b90505f61187088876118a1565b90505f61187d88886118a1565b90505f61188e8261183f868661145b565b939b939a50919850919650505050505050565b5f825f036118b057505f61047a565b5f6118bb8385611c73565b9050826118c88583611c54565b146112a95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610531565b5f6020808352835180828501525f5b8181101561194a5785810183015185820160400152820161192e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461197e575f80fd5b50565b5f8060408385031215611992575f80fd5b823561199d8161196a565b946020939093013593505050565b5f805f606084860312156119bd575f80fd5b83356119c88161196a565b925060208401356119d88161196a565b929592945050506040919091013590565b5f602082840312156119f9575f80fd5b81356112a98161196a565b5f60208284031215611a14575f80fd5b5035919050565b5f805f8060808587031215611a2e575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611a5c575f80fd5b833567ffffffffffffffff80821115611a73575f80fd5b818601915086601f830112611a86575f80fd5b813581811115611a94575f80fd5b8760208260051b8501011115611aa8575f80fd5b602092830195509350508401358015158114611ac2575f80fd5b809150509250925092565b5f8060408385031215611ade575f80fd5b8235611ae98161196a565b91506020830135611af98161196a565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611b7257611b72611b4d565b5060010190565b5f60208284031215611b89575f80fd5b81516112a98161196a565b5f805f60608486031215611ba6575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561047a5761047a611b4d565b8181038181111561047a5761047a611b4d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c335784516001600160a01b031683529383019391830191600101611c0e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611c6e57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761047a5761047a611b4d56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220feca515555414df28042c536d44abc9bdcff2661952283c7af7042522fc325d164736f6c63430008140033

Deployed Bytecode

0x608060405260043610610164575f3560e01c80637d1db4a5116100cd578063a2a957bb11610087578063dd62ed3e11610062578063dd62ed3e146103e0578063ea1644d514610424578063ed99530714610443578063f2fde38b1461044b575f80fd5b8063a2a957bb14610383578063a9059cbb146103a2578063c492f046146103c1575f80fd5b80637d1db4a51461030a5780638a8c523c1461031f5780638da5cb5b146103335780638f9a55c01461034f57806395d89b411461016f57806398a5c31514610364575f80fd5b8063313ce5671161011e578063313ce5671461026857806349bd5a5e1461028357806370a08231146102a2578063715018a6146102c157806374010ece146102d7578063751039fc146102f6575f80fd5b806306fdde031461016f578063095ea7b3146101aa5780631694505e146101d957806318160ddd1461021057806323b872dd146102345780632fd689e314610253575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b50604080518082018252600481526314d353d360e21b602082015290516101a1919061191f565b60405180910390f35b3480156101b5575f80fd5b506101c96101c4366004611981565b61046a565b60405190151581526020016101a1565b3480156101e4575f80fd5b506012546101f8906001600160a01b031681565b6040516001600160a01b0390911681526020016101a1565b34801561021b575f80fd5b50670de0b6b3a76400005b6040519081526020016101a1565b34801561023f575f80fd5b506101c961024e3660046119ab565b610480565b34801561025e575f80fd5b5061022660175481565b348015610273575f80fd5b50604051600981526020016101a1565b34801561028e575f80fd5b506013546101f8906001600160a01b031681565b3480156102ad575f80fd5b506102266102bc3660046119e9565b6104e7565b3480156102cc575f80fd5b506102d5610508565b005b3480156102e2575f80fd5b506102d56102f1366004611a04565b610582565b348015610301575f80fd5b506102d56105b0565b348015610315575f80fd5b5061022660155481565b34801561032a575f80fd5b506102d56105ef565b34801561033e575f80fd5b505f546001600160a01b03166101f8565b34801561035a575f80fd5b5061022660165481565b34801561036f575f80fd5b506102d561037e366004611a04565b610631565b34801561038e575f80fd5b506102d561039d366004611a1b565b61065f565b3480156103ad575f80fd5b506101c96103bc366004611981565b610814565b3480156103cc575f80fd5b506102d56103db366004611a4a565b610820565b3480156103eb575f80fd5b506102266103fa366004611acd565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561042f575f80fd5b506102d561043e366004611a04565b6108bd565b6102d56108eb565b348015610456575f80fd5b506102d56104653660046119e9565b610b52565b5f610476338484610c39565b5060015b92915050565b5f61048c848484610d5c565b6104dd84336104d885604051806060016040528060288152602001611c8b602891396001600160a01b038a165f908152600460209081526040808320338452909152902054919061125b565b610c39565b5060019392505050565b6001600160a01b0381165f9081526002602052604081205461047a90611293565b5f546001600160a01b0316331461053a5760405162461bcd60e51b815260040161053190611b04565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105ab5760405162461bcd60e51b815260040161053190611b04565b601555565b5f546001600160a01b031633146105d95760405162461bcd60e51b815260040161053190611b04565b5f19601581905560165560016009819055600b55565b5f546001600160a01b031633146106185760405162461bcd60e51b815260040161053190611b04565b6013805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b0316331461065a5760405162461bcd60e51b815260040161053190611b04565b601755565b5f546001600160a01b031633146106885760405162461bcd60e51b815260040161053190611b04565b60048411156106e75760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420342560d81b6064820152608401610531565b60628211156107435760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261382560f01b6064820152608401610531565b60048311156107a35760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420342560d01b6064820152608401610531565b60628111156108005760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239382560e81b6064820152608401610531565b600893909355600a91909155600955600b55565b5f610476338484610d5c565b5f546001600160a01b031633146108495760405162461bcd60e51b815260040161053190611b04565b5f5b828110156108b7578160055f86868581811061086957610869611b39565b905060200201602081019061087e91906119e9565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806108af81611b61565b91505061084b565b50505050565b5f546001600160a01b031633146108e65760405162461bcd60e51b815260040161053190611b04565b601655565b5f546001600160a01b031633146109145760405162461bcd60e51b815260040161053190611b04565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015610977573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099b9190611b79565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0a9190611b79565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a789190611b79565b601380546001600160a01b0319166001600160a01b03928316179055305f818152600460209081526040808320601280548716855292529091205f199055549091169063f305d719903490610acc816104e7565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610b2d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108b79190611b94565b5f546001600160a01b03163314610b7b5760405162461bcd60e51b815260040161053190611b04565b6001600160a01b038116610be05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610531565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c9b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610531565b6001600160a01b038216610cfc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610531565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610dc05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610531565b6001600160a01b038216610e225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610531565b5f8111610e835760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610531565b6001600160a01b0383165f9081526005602052604090205460ff16158015610ec357506001600160a01b0382165f9081526005602052604090205460ff16155b1561110657601354600160a01b900460ff16610f5b575f546001600160a01b03848116911614610f5b5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610531565b601554811115610fad5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610531565b6013546001600160a01b038381169116146110325760165481610fcf846104e7565b610fd99190611bbf565b106110325760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610531565b5f61103c306104e7565b6017546015549192508210159082106110555760155491505b80801561106c5750601354600160a81b900460ff16155b801561108657506013546001600160a01b03868116911614155b801561109b5750601354600160b01b900460ff165b80156110bf57506001600160a01b0385165f9081526005602052604090205460ff16155b80156110e357506001600160a01b0384165f9081526005602052604090205460ff16155b15611103576110f1826112b0565b4780156111015761110147611420565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061114657506001600160a01b0383165f9081526005602052604090205460ff165b8061117857506013546001600160a01b0385811691161480159061117857506013546001600160a01b03848116911614155b156111c357506001600160a01b0382165f90815260056020526040812054819060ff1680156111b057506001600160a01b0384163014155b905080156111bd57436014555b5061124f565b6013546001600160a01b0385811691161480156111ee57506012546001600160a01b03848116911614155b1561120057600854600c55600954600d555b6013546001600160a01b03848116911614801561122b57506012546001600160a01b03858116911614155b1561124f57600a54600c55600b54600d81905560145461124b919061145b565b6014555b6108b78484848461149c565b5f818484111561127e5760405162461bcd60e51b8152600401610531919061191f565b505f61128a8486611bd2565b95945050505050565b5f8061129d6114eb565b90506112a9838261150c565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112f6576112f6611b39565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561134d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113719190611b79565b8160018151811061138457611384611b39565b6001600160a01b0392831660209182029290920101526012546113aa9130911684610c39565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906113e29085905f90869030904290600401611be5565b5f604051808303815f87803b1580156113f9575f80fd5b505af115801561140b573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611457573d5f803e3d5ffd5b5050565b5f6112a983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061125b565b806114a9576114a961154d565b6011546114d5908590859085906001600160a01b038085169116146114ce575f61157a565b600161157a565b806108b7576108b7600e54600c55600f54600d55565b5f805f6114f661167b565b9092509050611505828261150c565b9250505090565b5f6112a983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116ba565b600c5415801561155d5750600d54155b1561156457565b600c8054600e55600d8054600f555f9182905555565b5f805f805f80611589886116e6565b9550955095509550955095505f876115a157866115a3565b5f5b6001600160a01b038c165f908152600260205260409020549091506115c8908261145b565b6001600160a01b03808d165f9081526002602052604080822093909355908c16815220546115f6908761173b565b6001600160a01b038b165f9081526002602052604090205561161782611799565b61162185846117df565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161166691815260200190565b60405180910390a35050505050505050505050565b6006545f908190670de0b6b3a7640000611695828261150c565b8210156116b157505060065492670de0b6b3a764000092509050565b90939092509050565b5f81836116da5760405162461bcd60e51b8152600401610531919061191f565b505f61128a8486611c54565b5f805f805f805f805f6116fe8a600c54600d54611803565b9250925092505f61170d6114eb565b90505f805f61171e8e878787611855565b919e509c509a509598509396509194505050505091939550919395565b5f806117478385611bbf565b9050838110156112a95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610531565b5f6117a26114eb565b90505f6117af83836118a1565b305f908152600260205260409020549091506117cb908261173b565b305f90815260026020526040902055505050565b6006546117ec908361145b565b6006556007546117fc908261173b565b6007555050565b5f80808061181c606461181689896118a1565b9061150c565b90505f61182e60646118168a896118a1565b90505f6118458261183f8b8661145b565b9061145b565b9992985090965090945050505050565b5f80808061186388866118a1565b90505f61187088876118a1565b90505f61187d88886118a1565b90505f61188e8261183f868661145b565b939b939a50919850919650505050505050565b5f825f036118b057505f61047a565b5f6118bb8385611c73565b9050826118c88583611c54565b146112a95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610531565b5f6020808352835180828501525f5b8181101561194a5785810183015185820160400152820161192e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461197e575f80fd5b50565b5f8060408385031215611992575f80fd5b823561199d8161196a565b946020939093013593505050565b5f805f606084860312156119bd575f80fd5b83356119c88161196a565b925060208401356119d88161196a565b929592945050506040919091013590565b5f602082840312156119f9575f80fd5b81356112a98161196a565b5f60208284031215611a14575f80fd5b5035919050565b5f805f8060808587031215611a2e575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611a5c575f80fd5b833567ffffffffffffffff80821115611a73575f80fd5b818601915086601f830112611a86575f80fd5b813581811115611a94575f80fd5b8760208260051b8501011115611aa8575f80fd5b602092830195509350508401358015158114611ac2575f80fd5b809150509250925092565b5f8060408385031215611ade575f80fd5b8235611ae98161196a565b91506020830135611af98161196a565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611b7257611b72611b4d565b5060010190565b5f60208284031215611b89575f80fd5b81516112a98161196a565b5f805f60608486031215611ba6575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561047a5761047a611b4d565b8181038181111561047a5761047a611b4d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c335784516001600160a01b031683529383019391830191600101611c0e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611c6e57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761047a5761047a611b4d56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220feca515555414df28042c536d44abc9bdcff2661952283c7af7042522fc325d164736f6c63430008140033

Deployed Bytecode Sourcemap

4196:13623:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6365:83;;;;;;;;;;-1:-1:-1;6435:5:0;;;;;;;;;;;-1:-1:-1;;;6435:5:0;;;;6365:83;;;;6435:5;6365:83;:::i;:::-;;;;;;;;7297:193;;;;;;;;;;-1:-1:-1;7297:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7297:193:0;1023:187:1;5444:41:0;;;;;;;;;;-1:-1:-1;5444:41:0;;;;-1:-1:-1;;;;;5444:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5444:41:0;1215:229:1;6645:95:0;;;;;;;;;;-1:-1:-1;4747:21:0;6645:95;;;1595:25:1;;;1583:2;1568:18;6645:95:0;1449:177:1;7499:446:0;;;;;;;;;;-1:-1:-1;7499:446:0;;;;;:::i;:::-;;:::i;5815:54::-;;;;;;;;;;;;;;;;6553:83;;;;;;;;;;-1:-1:-1;6553:83:0;;4422:1;2234:36:1;;2222:2;2207:18;6553:83:0;2092:184:1;5492:28:0;;;;;;;;;;-1:-1:-1;5492:28:0;;;;-1:-1:-1;;;;;5492:28:0;;;6749:138;;;;;;;;;;-1:-1:-1;6749:138:0;;;;;:::i;:::-;;:::i;2887:148::-;;;;;;;;;;;;;:::i;:::-;;15502:111;;;;;;;;;;-1:-1:-1;15502:111:0;;;;;:::i;:::-;;:::i;11994:186::-;;;;;;;;;;;;;:::i;5669:52::-;;;;;;;;;;;;;;;;17127:108;;;;;;;;;;;;;:::i;2671:79::-;;;;;;;;;;-1:-1:-1;2709:7:0;2736:6;-1:-1:-1;;;;;2736:6:0;2671:79;;5742:54;;;;;;;;;;;;;;;;15323:139;;;;;;;;;;-1:-1:-1;15323:139:0;;;;;:::i;:::-;;:::i;16428:691::-;;;;;;;;;;-1:-1:-1;16428:691:0;;;;;:::i;:::-;;:::i;6896:199::-;;;;;;;;;;-1:-1:-1;6896:199:0;;;;;:::i;:::-;;:::i;15746:235::-;;;;;;;;;;-1:-1:-1;15746:235:0;;;;;:::i;:::-;;:::i;7104:184::-;;;;;;;;;;-1:-1:-1;7104:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7253:18:0;;;7221:7;7253:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7104:184;15622:115;;;;;;;;;;-1:-1:-1;15622:115:0;;;;;:::i;:::-;;:::i;17243:573::-;;;:::i;3044:244::-;;;;;;;;;;-1:-1:-1;3044:244:0;;;;;:::i;:::-;;:::i;7297:193::-;7399:4;7421:39;2265:10;7444:7;7453:6;7421:8;:39::i;:::-;-1:-1:-1;7478:4:0;7297:193;;;;;:::o;7499:446::-;7631:4;7648:36;7658:6;7666:9;7677:6;7648:9;:36::i;:::-;7695:220;7718:6;2265:10;7766:138;7822:6;7766:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7766:19:0;;;;;;:11;:19;;;;;;;;2265:10;7766:33;;;;;;;;;;:37;:138::i;:::-;7695:8;:220::i;:::-;-1:-1:-1;7933:4:0;7499:446;;;;;:::o;6749:138::-;-1:-1:-1;;;;;6862:16:0;;6815:7;6862:16;;;:7;:16;;;;;;6842:37;;:19;:37::i;2887:148::-;2799:6;;-1:-1:-1;;;;;2799:6:0;2265:10;2799:22;2791:67;;;;-1:-1:-1;;;2791:67:0;;;;;;;:::i;:::-;;;;;;;;;2994:1:::1;2978:6:::0;;2957:40:::1;::::0;-1:-1:-1;;;;;2978:6:0;;::::1;::::0;2957:40:::1;::::0;2994:1;;2957:40:::1;3025:1;3008:19:::0;;-1:-1:-1;;;;;;3008:19:0::1;::::0;;2887:148::o;15502:111::-;2799:6;;-1:-1:-1;;;;;2799:6:0;2265:10;2799:22;2791:67;;;;-1:-1:-1;;;2791:67:0;;;;;;;:::i;:::-;15579:12:::1;:26:::0;15502:111::o;11994:186::-;2799:6;;-1:-1:-1;;;;;2799:6:0;2265:10;2799:22;2791:67;;;;-1:-1:-1;;;2791:67:0;;;;;;;:::i;:::-;-1:-1:-1;;12046:12:0::1;:29:::0;;;12086:14:::1;:31:::0;12143:1:::1;12128:12;:16:::0;;;12155:13:::1;:17:::0;11994:186::o;17127:108::-;2799:6;;-1:-1:-1;;;;;2799:6:0;2265:10;2799:22;2791:67;;;;-1:-1:-1;;;2791:67:0;;;;;;;:::i;:::-;17180:11:::1;:18:::0;;-1:-1:-1;;;;17209:18:0;-1:-1:-1;;;17209:18:0;;;17127:108::o;15323:139::-;2799:6;;-1:-1:-1;;;;;2799:6:0;2265:10;2799:22;2791:67;;;;-1:-1:-1;;;2791:67:0;;;;;;;:::i;:::-;15414:19:::1;:40:::0;15323:139::o;16428:691::-;2799:6;;-1:-1:-1;;;;;2799:6:0;2265:10;2799:22;2791:67;;;;-1:-1:-1;;;2791:67:0;;;;;;;:::i;:::-;16609:1:::1;16592:13;:18;;16562:90;;;::::0;-1:-1:-1;;;16562:90:0;;5059:2:1;16562:90:0::1;::::0;::::1;5041:21:1::0;5098:2;5078:18;;;5071:30;5137:34;5117:18;;;5110:62;-1:-1:-1;;;5188:18:1;;;5181:35;5233:19;;16562:90:0::1;4857:401:1::0;16562:90:0::1;16706:2;16691:11;:17;;16663:84;;;::::0;-1:-1:-1;;;16663:84:0;;5465:2:1;16663:84:0::1;::::0;::::1;5447:21:1::0;5504:2;5484:18;;;5477:30;5543:34;5523:18;;;5516:62;-1:-1:-1;;;5594:18:1;;;5587:32;5636:19;;16663:84:0::1;5263:398:1::0;16663:84:0::1;16807:1;16789:14;:19;;16758:93;;;::::0;-1:-1:-1;;;16758:93:0;;5868:2:1;16758:93:0::1;::::0;::::1;5850:21:1::0;5907:2;5887:18;;;5880:30;5946:34;5926:18;;;5919:62;-1:-1:-1;;;5997:18:1;;;5990:36;6043:19;;16758:93:0::1;5666:402:1::0;16758:93:0::1;16907:2;16891:12;:18;;16862:87;;;::::0;-1:-1:-1;;;16862:87:0;;6275:2:1;16862:87:0::1;::::0;::::1;6257:21:1::0;6314:2;6294:18;;;6287:30;6353:34;6333:18;;;6326:62;-1:-1:-1;;;6404:18:1;;;6397:33;6447:19;;16862:87:0::1;6073:399:1::0;16862:87:0::1;16962:14;:30:::0;;;;17003:15:::1;:32:::0;;;;17046:12:::1;:26:::0;17083:13:::1;:28:::0;16428:691::o;6896:199::-;7001:4;7023:42;2265:10;7047:9;7058:6;7023:9;:42::i;15746:235::-;2799:6;;-1:-1:-1;;;;;2799:6:0;2265:10;2799:22;2791:67;;;;-1:-1:-1;;;2791:67:0;;;;;;;:::i;:::-;15863:9:::1;15859:115;15878:19:::0;;::::1;15859:115;;;15954:8;15919:19;:32;15939:8;;15948:1;15939:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15919:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15919:32:0;:43;;-1:-1:-1;;15919:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15899:3;::::1;::::0;::::1;:::i;:::-;;;;15859:115;;;;15746:235:::0;;;:::o;15622:115::-;2799:6;;-1:-1:-1;;;;;2799:6:0;2265:10;2799:22;2791:67;;;;-1:-1:-1;;;2791:67:0;;;;;;;:::i;:::-;15699:14:::1;:30:::0;15622:115::o;17243:573::-;2799:6;;-1:-1:-1;;;;;2799:6:0;2265:10;2799:22;2791:67;;;;-1:-1:-1;;;2791:67:0;;;;;;;:::i;:::-;17417:15:::1;:34:::0;;-1:-1:-1;;;;;;17417:34:0::1;17363:42;17417:34:::0;;::::1;::::0;;;17496:26:::1;::::0;;-1:-1:-1;;;17496:26:0;;;;17363:42;;17496:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;17363:42;17496:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17478:70:0::1;;17557:4;17564:16;-1:-1:-1::0;;;;;17564:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17478:110;::::0;-1:-1:-1;;;;;;17478:110:0::1;::::0;;;;;;-1:-1:-1;;;;;7367:15:1;;;17478:110:0::1;::::0;::::1;7349:34:1::0;7419:15;;7399:18;;;7392:43;7284:18;;17478:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17462:13;:126:::0;;-1:-1:-1;;;;;;17462:126:0::1;-1:-1:-1::0;;;;;17462:126:0;;::::1;;::::0;;17629:4:::1;-1:-1:-1::0;17609:26:0;;;:11:::1;:26;::::0;;;;;;;17644:15:::1;::::0;;;::::1;17609:52:::0;;;;;;;-1:-1:-1;;17609:66:0;;17688:15;;;::::1;::::0;:31:::1;::::0;17727:9:::1;::::0;17752:24:::1;17629:4:::0;17752:9:::1;:24::i;:::-;17688:120;::::0;-1:-1:-1;;;;;;17688:120:0::1;::::0;;;;;;-1:-1:-1;;;;;7805:15:1;;;17688:120:0::1;::::0;::::1;7787:34:1::0;7837:18;;;7830:34;17777:1:0::1;7880:18:1::0;;;7873:34;;;7923:18;;;7916:34;17781:10:0::1;7966:19:1::0;;;7959:44;17792:15:0::1;8019:19:1::0;;;8012:35;7721:19;;17688:120:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3044:244::-:0;2799:6;;-1:-1:-1;;;;;2799:6:0;2265:10;2799:22;2791:67;;;;-1:-1:-1;;;2791:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3133:22:0;::::1;3125:73;;;::::0;-1:-1:-1;;;3125:73:0;;8571:2:1;3125:73:0::1;::::0;::::1;8553:21:1::0;8610:2;8590:18;;;8583:30;8649:34;8629:18;;;8622:62;-1:-1:-1;;;8700:18:1;;;8693:36;8746:19;;3125:73:0::1;8369:402:1::0;3125:73:0::1;3235:6;::::0;;3214:38:::1;::::0;-1:-1:-1;;;;;3214:38:0;;::::1;::::0;3235:6;::::1;::::0;3214:38:::1;::::0;::::1;3263:6;:17:::0;;-1:-1:-1;;;;;;3263:17:0::1;-1:-1:-1::0;;;;;3263:17:0;;;::::1;::::0;;;::::1;::::0;;3044:244::o;8521:369::-;-1:-1:-1;;;;;8648:19:0;;8640:68;;;;-1:-1:-1;;;8640:68:0;;8978:2:1;8640:68:0;;;8960:21:1;9017:2;8997:18;;;8990:30;9056:34;9036:18;;;9029:62;-1:-1:-1;;;9107:18:1;;;9100:34;9151:19;;8640:68:0;8776:400:1;8640:68:0;-1:-1:-1;;;;;8727:21:0;;8719:68;;;;-1:-1:-1;;;8719:68:0;;9383:2:1;8719:68:0;;;9365:21:1;9422:2;9402:18;;;9395:30;9461:34;9441:18;;;9434:62;-1:-1:-1;;;9512:18:1;;;9505:32;9554:19;;8719:68:0;9181:398:1;8719:68:0;-1:-1:-1;;;;;8798:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8850:32;;1595:25:1;;;8850:32:0;;1568:18:1;8850:32:0;;;;;;;8521:369;;;:::o;8899:2495::-;-1:-1:-1;;;;;9021:18:0;;9013:68;;;;-1:-1:-1;;;9013:68:0;;9786:2:1;9013:68:0;;;9768:21:1;9825:2;9805:18;;;9798:30;9864:34;9844:18;;;9837:62;-1:-1:-1;;;9915:18:1;;;9908:35;9960:19;;9013:68:0;9584:401:1;9013:68:0;-1:-1:-1;;;;;9100:16:0;;9092:64;;;;-1:-1:-1;;;9092:64:0;;10192:2:1;9092:64:0;;;10174:21:1;10231:2;10211:18;;;10204:30;10270:34;10250:18;;;10243:62;-1:-1:-1;;;10321:18:1;;;10314:33;10364:19;;9092:64:0;9990:399:1;9092:64:0;9184:1;9175:6;:10;9167:64;;;;-1:-1:-1;;;9167:64:0;;10596:2:1;9167:64:0;;;10578:21:1;10635:2;10615:18;;;10608:30;10674:34;10654:18;;;10647:62;-1:-1:-1;;;10725:18:1;;;10718:39;10774:19;;9167:64:0;10394:405:1;9167:64:0;-1:-1:-1;;;;;9250:25:0;;;;;;:19;:25;;;;;;;;9249:26;:54;;;;-1:-1:-1;;;;;;9280:23:0;;;;;;:19;:23;;;;;;;;9279:24;9249:54;9245:1203;;;9361:11;;-1:-1:-1;;;9361:11:0;;;;9356:144;;2709:7;2736:6;-1:-1:-1;;;;;9401:15:0;;;2736:6;;9401:15;9393:91;;;;-1:-1:-1;;;9393:91:0;;11006:2:1;9393:91:0;;;10988:21:1;11045:2;11025:18;;;11018:30;11084:34;11064:18;;;11057:62;11155:33;11135:18;;;11128:61;11206:19;;9393:91:0;10804:427:1;9393:91:0;9535:12;;9525:6;:22;;9517:63;;;;-1:-1:-1;;;9517:63:0;;11438:2:1;9517:63:0;;;11420:21:1;11477:2;11457:18;;;11450:30;11516;11496:18;;;11489:58;11564:18;;9517:63:0;11236:352:1;9517:63:0;9607:13;;-1:-1:-1;;;;;9601:19:0;;;9607:13;;9601:19;9598:146;;9674:14;;9665:6;9649:13;9659:2;9649:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9641:87;;;;-1:-1:-1;;;9641:87:0;;11925:2:1;9641:87:0;;;11907:21:1;11964:2;11944:18;;;11937:30;12003:34;11983:18;;;11976:62;-1:-1:-1;;;12054:18:1;;;12047:33;12097:19;;9641:87:0;11723:399:1;9641:87:0;9761:28;9792:24;9810:4;9792:9;:24::i;:::-;9870:19;;9934:12;;9761:55;;-1:-1:-1;9846:43:0;;;;9910:36;;9907:124;;10003:12;;9980:35;;9907:124;10052:7;:18;;;;-1:-1:-1;10064:6:0;;-1:-1:-1;;;10064:6:0;;;;10063:7;10052:18;:43;;;;-1:-1:-1;10082:13:0;;-1:-1:-1;;;;;10074:21:0;;;10082:13;;10074:21;;10052:43;:58;;;;-1:-1:-1;10099:11:0;;-1:-1:-1;;;10099:11:0;;;;10052:58;:88;;;;-1:-1:-1;;;;;;10115:25:0;;;;;;:19;:25;;;;;;;;10114:26;10052:88;:116;;;;-1:-1:-1;;;;;;10145:23:0;;;;;;:19;:23;;;;;;;;10144:24;10052:116;10048:389;;;10189:38;10206:20;10189:16;:38::i;:::-;10275:21;10320:22;;10316:106;;10367:35;10380:21;10367:12;:35::i;:::-;10170:267;10048:389;9305:1143;;9245:1203;-1:-1:-1;;;;;10526:25:0;;10461:12;10526:25;;;:19;:25;;;;;;10476:4;;10526:25;;;:52;;-1:-1:-1;;;;;;10555:23:0;;;;;;:19;:23;;;;;;;;10526:52;10525:104;;;-1:-1:-1;10592:13:0;;-1:-1:-1;;;;;10584:21:0;;;10592:13;;10584:21;;;;:44;;-1:-1:-1;10615:13:0;;-1:-1:-1;;;;;10609:19:0;;;10615:13;;10609:19;;10584:44;10521:811;;;-1:-1:-1;;;;;;10701:23:0;;10656:5;10701:23;;;:19;:23;;;;;;10656:5;;10701:23;;:46;;;;-1:-1:-1;;;;;;10728:19:0;;10742:4;10728:19;;10701:46;10678:69;;10765:15;10762:44;;;10794:12;10782:9;:24;10762:44;10631:187;10521:811;;;10896:13;;-1:-1:-1;;;;;10888:21:0;;;10896:13;;10888:21;:55;;;;-1:-1:-1;10927:15:0;;-1:-1:-1;;;;;10913:30:0;;;10927:15;;10913:30;;10888:55;10885:162;;;10976:14;;10964:9;:26;11019:12;;11009:7;:22;10885:162;11107:13;;-1:-1:-1;;;;;11101:19:0;;;11107:13;;11101:19;:55;;;;-1:-1:-1;11140:15:0;;-1:-1:-1;;;;;11124:32:0;;;11140:15;;11124:32;;11101:55;11097:224;;;11189:15;;11177:9;:27;11233:13;;11223:7;:23;;;11295:9;;11277:28;;11233:13;11277:17;:28::i;:::-;11265:9;:40;11097:224;11345:41;11360:4;11366:2;11370:6;11378:7;11345:14;:41::i;530:224::-;650:7;686:12;678:6;;;;670:29;;;;-1:-1:-1;;;670:29:0;;;;;;;;:::i;:::-;-1:-1:-1;710:9:0;722:5;726:1;722;:5;:::i;:::-;710:17;530:224;-1:-1:-1;;;;;530:224:0:o;7954:202::-;8049:7;8074:19;8096:10;:8;:10::i;:::-;8074:32;-1:-1:-1;8124:24:0;:7;8074:32;8124:11;:24::i;:::-;8117:31;7954:202;-1:-1:-1;;;7954:202:0:o;11403:483::-;5964:6;:13;;-1:-1:-1;;;;5964:13:0;-1:-1:-1;;;5964:13:0;;;11505:16:::1;::::0;;11519:1:::1;11505:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11505:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11505:16:0::1;11481:40;;11550:4;11532;11537:1;11532:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11532:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11576:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11576:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11532:7;;11576:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11566:4;11571:1;11566:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11566:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11641:15:::1;::::0;11609:62:::1;::::0;11626:4:::1;::::0;11641:15:::1;11659:11:::0;11609:8:::1;:62::i;:::-;11682:15;::::0;:196:::1;::::0;-1:-1:-1;;;11682:196:0;;-1:-1:-1;;;;;11682:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11763:11;;11682:15:::1;::::0;11805:4;;11832::::1;::::0;11852:15:::1;::::0;11682:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6000:6:0;:14;;-1:-1:-1;;;;6000:14:0;;;-1:-1:-1;;;;11403:483:0:o;11895:91::-;11952:9;;:26;;-1:-1:-1;;;;;11952:9:0;;;;:26;;;;;11971:6;;11952:9;:26;:9;:26;11971:6;11952:9;:26;;;;;;;;;;;;;;;;;;;;;11895:91;:::o;385:136::-;443:7;470:43;474:1;477;470:43;;;;;;;;;;;;;;;;;:3;:43::i;12188:320::-;12344:7;12339:28;;12353:14;:12;:14::i;:::-;12433:11;;12378:82;;12396:6;;12404:9;;12415:6;;-1:-1:-1;;;;;12423:21:0;;;12433:11;;12423:21;:36;;12454:5;12378:17;:82::i;12423:36::-;12447:4;12378:17;:82::i;:::-;12476:7;12471:29;;12485:15;8451:17;;8439:9;:29;8489:15;;8479:7;:25;8395:117;15989:164;16031:7;16052:15;16069;16088:19;:17;:19::i;:::-;16051:56;;-1:-1:-1;16051:56:0;-1:-1:-1;16125:20:0;16051:56;;16125:11;:20::i;:::-;16118:27;;;;15989:164;:::o;1018:132::-;1076:7;1103:39;1107:1;1110;1103:39;;;;;;;;;;;;;;;;;:3;:39::i;8165:221::-;8212:9;;:14;:30;;;;-1:-1:-1;8230:7:0;;:12;8212:30;8208:43;;;8165:221::o;8208:43::-;8284:9;;;8264:17;:29;8322:7;;;8304:15;:25;-1:-1:-1;8343:13:0;;;;8367:11;8165:221::o;12517:690::-;12691:15;12721:23;12759:12;12786:23;12824:12;12851:13;12878:19;12889:7;12878:10;:19::i;:::-;12676:221;;;;;;;;;;;;12909:14;12926:11;:25;;12944:7;12926:25;;;12940:1;12926:25;-1:-1:-1;;;;;12980:15:0;;;;;;:7;:15;;;;;;12909:42;;-1:-1:-1;12980:27:0;;12909:42;12980:19;:27::i;:::-;-1:-1:-1;;;;;12962:15:0;;;;;;;:7;:15;;;;;;:45;;;;13039:18;;;;;;;:39;;13062:15;13039:22;:39::i;:::-;-1:-1:-1;;;;;13018:18:0;;;;;;:7;:18;;;;;:60;13089:16;13099:5;13089:9;:16::i;:::-;13116:23;13128:4;13134;13116:11;:23::i;:::-;13172:9;-1:-1:-1;;;;;13155:44:0;13164:6;-1:-1:-1;;;;;13155:44:0;;13183:15;13155:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13155:44:0;;;;;;;;12665:542;;;;;;;12517:690;;;;:::o;16162:257::-;16260:7;;16213;;;;4747:21;16328:20;16260:7;4747:21;16328:11;:20::i;:::-;16318:7;:30;16314:61;;;-1:-1:-1;;16358:7:0;;;4747:21;;-1:-1:-1;16162:257:0;-1:-1:-1;16162:257:0:o;16314:61::-;16394:7;;16403;;-1:-1:-1;16162:257:0;-1:-1:-1;16162:257:0:o;1159:223::-;1279:7;1314:12;1307:5;1299:28;;;;-1:-1:-1;;;1299:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1338:9:0;1350:5;1354:1;1350;:5;:::i;13632:619::-;13732:7;13754;13776;13798;13820;13842;13881:23;13906:12;13920:13;13950:40;13962:7;13971:9;;13982:7;;13950:11;:40::i;:::-;13880:110;;;;;;14001:19;14023:10;:8;:10::i;:::-;14001:32;;14045:15;14062:23;14087:12;14116:46;14128:7;14137:4;14143:5;14150:11;14116;:46::i;:::-;14044:118;;-1:-1:-1;14044:118:0;-1:-1:-1;14044:118:0;-1:-1:-1;14214:15:0;;-1:-1:-1;14231:4:0;;-1:-1:-1;14237:5:0;;-1:-1:-1;;;;;13632:619:0;;;;;;;:::o;197:179::-;255:7;;287:5;291:1;287;:5;:::i;:::-;275:17;;316:1;311;:6;;303:46;;;;-1:-1:-1;;;303:46:0;;13801:2:1;303:46:0;;;13783:21:1;13840:2;13820:18;;;13813:30;13879:29;13859:18;;;13852:57;13926:18;;303:46:0;13599:351:1;13216:211:0;13269:19;13291:10;:8;:10::i;:::-;13269:32;-1:-1:-1;13312:13:0;13328:22;:5;13269:32;13328:9;:22::i;:::-;13402:4;13386:22;;;;:7;:22;;;;;;13312:38;;-1:-1:-1;13386:33:0;;13312:38;13386:26;:33::i;:::-;13377:4;13361:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13216:211:0:o;13436:147::-;13514:7;;:17;;13526:4;13514:11;:17::i;:::-;13504:7;:27;13555:10;;:20;;13570:4;13555:14;:20::i;:::-;13542:10;:33;-1:-1:-1;;13436:147:0:o;14259:469::-;14428:7;;;;14522:30;14548:3;14522:21;:7;14534:8;14522:11;:21::i;:::-;:25;;:30::i;:::-;14507:45;-1:-1:-1;14563:13:0;14579:28;14603:3;14579:19;:7;14591:6;14579:11;:19::i;:28::-;14563:44;-1:-1:-1;14618:23:0;14644:28;14563:44;14644:17;:7;14656:4;14644:11;:17::i;:::-;:21;;:28::i;:::-;14618:54;14708:4;;-1:-1:-1;14714:5:0;;-1:-1:-1;14259:469:0;;-1:-1:-1;;;;;14259:469:0:o;14737:534::-;14931:7;;;;15028:24;:7;15040:11;15028;:24::i;:::-;15010:42;-1:-1:-1;15063:12:0;15078:21;:4;15087:11;15078:8;:21::i;:::-;15063:36;-1:-1:-1;15110:13:0;15126:22;:5;15136:11;15126:9;:22::i;:::-;15110:38;-1:-1:-1;15159:23:0;15185:28;15110:38;15185:17;:7;15197:4;15185:11;:17::i;:28::-;15232:7;;;;-1:-1:-1;15258:4:0;;-1:-1:-1;14737:534:0;;-1:-1:-1;;;;;;;14737:534:0:o;763:246::-;821:7;845:1;850;845:6;841:47;;-1:-1:-1;875:1:0;868:8;;841:47;898:9;910:5;914:1;910;:5;:::i;:::-;898:17;-1:-1:-1;943:1:0;934:5;938:1;898:17;934:5;:::i;:::-;:10;926:56;;;;-1:-1:-1;;;926:56:0;;14330:2:1;926:56:0;;;14312:21:1;14369:2;14349:18;;;14342:30;14408:34;14388:18;;;14381:62;-1:-1:-1;;;14459:18:1;;;14452:31;14500:19;;926:56:0;14128:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:180::-;2800:6;2853:2;2841:9;2832:7;2828:23;2824:32;2821:52;;;2869:1;2866;2859:12;2821:52;-1:-1:-1;2892:23:1;;2741:180;-1:-1:-1;2741:180:1:o;2926:385::-;3012:6;3020;3028;3036;3089:3;3077:9;3068:7;3064:23;3060:33;3057:53;;;3106:1;3103;3096:12;3057:53;-1:-1:-1;;3129:23:1;;;3199:2;3184:18;;3171:32;;-1:-1:-1;3250:2:1;3235:18;;3222:32;;3301:2;3286:18;3273:32;;-1:-1:-1;2926:385:1;-1:-1:-1;2926:385:1:o;3316:782::-;3408:6;3416;3424;3477:2;3465:9;3456:7;3452:23;3448:32;3445:52;;;3493:1;3490;3483:12;3445:52;3533:9;3520:23;3562:18;3603:2;3595:6;3592:14;3589:34;;;3619:1;3616;3609:12;3589:34;3657:6;3646:9;3642:22;3632:32;;3702:7;3695:4;3691:2;3687:13;3683:27;3673:55;;3724:1;3721;3714:12;3673:55;3764:2;3751:16;3790:2;3782:6;3779:14;3776:34;;;3806:1;3803;3796:12;3776:34;3861:7;3854:4;3844:6;3841:1;3837:14;3833:2;3829:23;3825:34;3822:47;3819:67;;;3882:1;3879;3872:12;3819:67;3913:4;3905:13;;;;-1:-1:-1;3937:6:1;-1:-1:-1;;3978:20:1;;3965:34;4035:13;;4028:21;4018:32;;4008:60;;4064:1;4061;4054:12;4008:60;4087:5;4077:15;;;3316:782;;;;;:::o;4103:388::-;4171:6;4179;4232:2;4220:9;4211:7;4207:23;4203:32;4200:52;;;4248:1;4245;4238:12;4200:52;4287:9;4274:23;4306:31;4331:5;4306:31;:::i;:::-;4356:5;-1:-1:-1;4413:2:1;4398:18;;4385:32;4426:33;4385:32;4426:33;:::i;:::-;4478:7;4468:17;;;4103:388;;;;;:::o;4496:356::-;4698:2;4680:21;;;4717:18;;;4710:30;4776:34;4771:2;4756:18;;4749:62;4843:2;4828:18;;4496:356::o;6477:127::-;6538:10;6533:3;6529:20;6526:1;6519:31;6569:4;6566:1;6559:15;6593:4;6590:1;6583:15;6609:127;6670:10;6665:3;6661:20;6658:1;6651:31;6701:4;6698:1;6691:15;6725:4;6722:1;6715:15;6741:135;6780:3;6801:17;;;6798:43;;6821:18;;:::i;:::-;-1:-1:-1;6868:1:1;6857:13;;6741:135::o;6881:251::-;6951:6;7004:2;6992:9;6983:7;6979:23;6975:32;6972:52;;;7020:1;7017;7010:12;6972:52;7052:9;7046:16;7071:31;7096:5;7071:31;:::i;8058:306::-;8146:6;8154;8162;8215:2;8203:9;8194:7;8190:23;8186:32;8183:52;;;8231:1;8228;8221:12;8183:52;8260:9;8254:16;8244:26;;8310:2;8299:9;8295:18;8289:25;8279:35;;8354:2;8343:9;8339:18;8333:25;8323:35;;8058:306;;;;;:::o;11593:125::-;11658:9;;;11679:10;;;11676:36;;;11692:18;;:::i;12127:128::-;12194:9;;;12215:11;;;12212:37;;;12229:18;;:::i;12392:980::-;12654:4;12702:3;12691:9;12687:19;12733:6;12722:9;12715:25;12759:2;12797:6;12792:2;12781:9;12777:18;12770:34;12840:3;12835:2;12824:9;12820:18;12813:31;12864:6;12899;12893:13;12930:6;12922;12915:22;12968:3;12957:9;12953:19;12946:26;;13007:2;12999:6;12995:15;12981:29;;13028:1;13038:195;13052:6;13049:1;13046:13;13038:195;;;13117:13;;-1:-1:-1;;;;;13113:39:1;13101:52;;13208:15;;;;13173:12;;;;13149:1;13067:9;13038:195;;;-1:-1:-1;;;;;;;13289:32:1;;;;13284:2;13269:18;;13262:60;-1:-1:-1;;;13353:3:1;13338:19;13331:35;13250:3;12392:980;-1:-1:-1;;;12392:980:1:o;13377:217::-;13417:1;13443;13433:132;;13487:10;13482:3;13478:20;13475:1;13468:31;13522:4;13519:1;13512:15;13550:4;13547:1;13540:15;13433:132;-1:-1:-1;13579:9:1;;13377:217::o;13955:168::-;14028:9;;;14059;;14076:15;;;14070:22;;14056:37;14046:71;;14097:18;;:::i

Swarm Source

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