ETH Price: $3,149.94 (+2.53%)
Gas: 11 Gwei

Token

Proof of Shibarium (SHIB 2.0)
 

Overview

Max Total Supply

10,000,000,000 SHIB 2.0

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000006 SHIB 2.0

Value
$0.00
0x6e9cd8864a04f5a799c1de68d5b738cd2ad70534
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:
Pos

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-06
*/

/**
                                                                                                
Proof of Shibarium (SHIB 2.0)
TG : https://t.me/ProofOfShibarium
Twitter : https://twitter.com/ProofOfShib

*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

}

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 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 Pos is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Proof of Shibarium";
    string private constant _symbol = "SHIB 2.0";
    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 _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 15;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 40;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(msg.sender);
    address payable private _marketingAddress = payable(msg.sender);
    address private uniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

     uint256 public _maxTxAmount = _tTotal*3/100;
    uint256 public _maxWalletSize = _tTotal*18/1000;
    uint256 public _swapTokensAtAmount = _tTotal*1/10000;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[_developmentAddress] = 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)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        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 (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            if(to != uniswapV2Pair && to != uniswapRouter && to != _developmentAddress && to != address(this)) {
                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 >= _swapTokensAtAmount*2)
            {
                contractTokenBalance = contractTokenBalance;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(contractETHBalance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } 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;
            }

        }

        _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 {
        _marketingAddress.transfer(amount);
    }

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

    function manualSwap(uint256 percent) external {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 swapamount = contractTokenBalance*percent/100;
        swapTokensForEth(swapamount);
    }

    function toggleSwap (bool _swapEnabled) external {
        swapEnabled = _swapEnabled;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _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);
    }

    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 {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require (_redisFeeOnBuy+_redisFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell <= 98);
    }

    //Set maximum transaction
    function setMaxTxnAndWalletSize(uint256 maxTxAmount, uint256 maxWalletSize) public onlyOwner {
        require (_maxTxAmount >= _tTotal/100 && _maxWalletSize >= _tTotal/100,"Must be more than 1%");
        _maxTxAmount = _tTotal*maxTxAmount/100;
        _maxWalletSize = _tTotal*maxWalletSize/100;
    }

}

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":[{"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":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","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":"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"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxTxnAndWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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"}]

60806040526200001a678ac7230489e80000600019620003e1565b62000028906000196200040e565b60065560006008819055600f6009819055600a8290556028600b819055600c839055600d819055600e929092555560108054336001600160a01b0319918216811790925560118054821690921790915560128054737a250d5630b4cf539739df2c5dacb4c659f2488d92169190911790556014805462ffffff60a01b19166201000160a01b1790556064620000c7678ac7230489e8000060036200042a565b620000d3919062000444565b6015556103e8620000ee678ac7230489e8000060126200042a565b620000fa919062000444565b60165561271062000115678ac7230489e8000060016200042a565b62000121919062000444565b6017553480156200013157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021591906200045b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028991906200045b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fd91906200045b565b601480546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601154851684528284208054821683179055601054909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e80000604051620003bc91815260200190565b60405180910390a3506200048d565b634e487b7160e01b600052601260045260246000fd5b600082620003f357620003f3620003cb565b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115620004245762000424620003f8565b92915050565b8082028115828204841417620004245762000424620003f8565b600082620004565762000456620003cb565b500490565b6000602082840312156200046e57600080fd5b81516001600160a01b03811681146200048657600080fd5b9392505050565b6118e0806200049d6000396000f3fe6080604052600436106101395760003560e01c8063715018a6116100ab5780639ba93c401161006f5780639ba93c4014610391578063a2a957bb146103b1578063a9059cbb146103d1578063b70143c9146103f1578063dd62ed3e14610411578063f2fde38b1461045757600080fd5b8063715018a6146103015780637d1db4a5146103165780638da5cb5b1461032c5780638f9a55c01461034a57806395d89b411461036057600080fd5b80632fd689e3116100fd5780632fd689e31461023f578063313ce5671461025557806349bd5a5e146102715780636d8aa8f8146102915780636fc3eaec146102cc57806370a08231146102e157600080fd5b806306fdde0314610145578063095ea7b3146101925780631694505e146101c257806318160ddd146101fa57806323b872dd1461021f57600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5060408051808201909152601281527150726f6f66206f662053686962617269756d60701b60208201525b604051610189919061157c565b60405180910390f35b34801561019e57600080fd5b506101b26101ad3660046115e2565b610477565b6040519015158152602001610189565b3480156101ce57600080fd5b506013546101e2906001600160a01b031681565b6040516001600160a01b039091168152602001610189565b34801561020657600080fd5b50678ac7230489e800005b604051908152602001610189565b34801561022b57600080fd5b506101b261023a36600461160e565b61048e565b34801561024b57600080fd5b5061021160175481565b34801561026157600080fd5b5060405160098152602001610189565b34801561027d57600080fd5b506014546101e2906001600160a01b031681565b34801561029d57600080fd5b506102ca6102ac36600461164f565b60148054911515600160b01b0260ff60b01b19909216919091179055565b005b3480156102d857600080fd5b506102ca6104f7565b3480156102ed57600080fd5b506102116102fc366004611671565b610502565b34801561030d57600080fd5b506102ca610524565b34801561032257600080fd5b5061021160155481565b34801561033857600080fd5b506000546001600160a01b03166101e2565b34801561035657600080fd5b5061021160165481565b34801561036c57600080fd5b5060408051808201909152600881526705348494220322e360c41b602082015261017c565b34801561039d57600080fd5b506102ca6103ac36600461168e565b6105a1565b3480156103bd57600080fd5b506102ca6103cc3660046116b0565b61068c565b3480156103dd57600080fd5b506101b26103ec3660046115e2565b6106fd565b3480156103fd57600080fd5b506102ca61040c3660046116e2565b61070a565b34801561041d57600080fd5b5061021161042c3660046116fb565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561046357600080fd5b506102ca610472366004611671565b61073f565b6000610484338484610829565b5060015b92915050565b600061049b84848461094d565b6104ed84336104e885604051806060016040528060288152602001611883602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610e4d565b610829565b5060019392505050565b61050047610e87565b565b6001600160a01b03811660009081526002602052604081205461048890610ec5565b6000546001600160a01b031633146105575760405162461bcd60e51b815260040161054e90611734565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105cb5760405162461bcd60e51b815260040161054e90611734565b6105de6064678ac7230489e8000061177f565b6015541015801561060357506105fd6064678ac7230489e8000061177f565b60165410155b6106465760405162461bcd60e51b81526020600482015260146024820152734d757374206265206d6f7265207468616e20312560601b604482015260640161054e565b606461065a83678ac7230489e800006117a1565b610664919061177f565b601555606461067b82678ac7230489e800006117a1565b610685919061177f565b6016555050565b6000546001600160a01b031633146106b65760405162461bcd60e51b815260040161054e90611734565b6008849055600a8390556009829055600b819055606281836106d886886117b8565b6106e291906117b8565b6106ec91906117b8565b11156106f757600080fd5b50505050565b600061048433848461094d565b600061071530610502565b90506000606461072584846117a1565b61072f919061177f565b905061073a81610f49565b505050565b6000546001600160a01b031633146107695760405162461bcd60e51b815260040161054e90611734565b6001600160a01b0381166107ce5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161054e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661088b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161054e565b6001600160a01b0382166108ec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161054e565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161054e565b6001600160a01b038216610a135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161054e565b60008111610a755760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161054e565b6000546001600160a01b03848116911614801590610aa157506000546001600160a01b03838116911614155b15610d4657601454600160a01b900460ff16610b3a576000546001600160a01b03848116911614610b3a5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161054e565b6014546001600160a01b03838116911614801590610b6657506012546001600160a01b03838116911614155b8015610b8057506010546001600160a01b03838116911614155b8015610b9557506001600160a01b0382163014155b15610c7157601554811115610bec5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161054e565b6014546001600160a01b03838116911614610c715760165481610c0e84610502565b610c1891906117b8565b10610c715760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161054e565b6000610c7c30610502565b6017549091508082101590610c929060026117a1565b50808015610caa5750601454600160a81b900460ff16155b8015610cc457506014546001600160a01b03868116911614155b8015610cd95750601454600160b01b900460ff165b8015610cfe57506001600160a01b03851660009081526005602052604090205460ff16155b8015610d2357506001600160a01b03841660009081526005602052604090205460ff16155b15610d4357610d3182610f49565b478015610d4157610d4181610e87565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610d8857506001600160a01b03831660009081526005602052604090205460ff165b80610dba57506014546001600160a01b03858116911614801590610dba57506014546001600160a01b03848116911614155b15610dc757506000610e41565b6014546001600160a01b038581169116148015610df257506013546001600160a01b03848116911614155b15610e0457600854600c55600954600d555b6014546001600160a01b038481169116148015610e2f57506013546001600160a01b03858116911614155b15610e4157600a54600c55600b54600d555b6106f7848484846110c3565b60008184841115610e715760405162461bcd60e51b815260040161054e919061157c565b506000610e7e84866117cb565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610ec1573d6000803e3d6000fd5b5050565b6000600654821115610f2c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161054e565b6000610f366110f1565b9050610f428382611114565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610f9157610f916117de565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100e91906117f4565b81600181518110611021576110216117de565b6001600160a01b0392831660209182029290920101526013546110479130911684610829565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790611080908590600090869030904290600401611811565b600060405180830381600087803b15801561109a57600080fd5b505af11580156110ae573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b806110d0576110d0611156565b6110db848484611184565b806106f7576106f7600e54600c55600f54600d55565b60008060006110fe61127b565b909250905061110d8282611114565b9250505090565b6000610f4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112bb565b600c541580156111665750600d54155b1561116d57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611196876112e9565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506111c89087611346565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546111f79086611388565b6001600160a01b038916600090815260026020526040902055611219816113e7565b6112238483611431565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161126891815260200190565b60405180910390a3505050505050505050565b6006546000908190678ac7230489e800006112968282611114565b8210156112b257505060065492678ac7230489e8000092509050565b90939092509050565b600081836112dc5760405162461bcd60e51b815260040161054e919061157c565b506000610e7e848661177f565b60008060008060008060008060006113068a600c54600d54611455565b92509250925060006113166110f1565b905060008060006113298e8787876114aa565b919e509c509a509598509396509194505050505091939550919395565b6000610f4283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e4d565b60008061139583856117b8565b905083811015610f425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161054e565b60006113f16110f1565b905060006113ff83836114fa565b3060009081526002602052604090205490915061141c9082611388565b30600090815260026020526040902055505050565b60065461143e9083611346565b60065560075461144e9082611388565b6007555050565b600080808061146f606461146989896114fa565b90611114565b9050600061148260646114698a896114fa565b9050600061149a826114948b86611346565b90611346565b9992985090965090945050505050565b60008080806114b988866114fa565b905060006114c788876114fa565b905060006114d588886114fa565b905060006114e7826114948686611346565b939b939a50919850919650505050505050565b60008260000361150c57506000610488565b600061151883856117a1565b905082611525858361177f565b14610f425760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161054e565b600060208083528351808285015260005b818110156115a95785810183015185820160400152820161158d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115df57600080fd5b50565b600080604083850312156115f557600080fd5b8235611600816115ca565b946020939093013593505050565b60008060006060848603121561162357600080fd5b833561162e816115ca565b9250602084013561163e816115ca565b929592945050506040919091013590565b60006020828403121561166157600080fd5b81358015158114610f4257600080fd5b60006020828403121561168357600080fd5b8135610f42816115ca565b600080604083850312156116a157600080fd5b50508035926020909101359150565b600080600080608085870312156116c657600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156116f457600080fd5b5035919050565b6000806040838503121561170e57600080fd5b8235611719816115ca565b91506020830135611729816115ca565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261179c57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761048857610488611769565b8082018082111561048857610488611769565b8181038181111561048857610488611769565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561180657600080fd5b8151610f42816115ca565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118615784516001600160a01b03168352938301939183019160010161183c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122042133dcdc07adf04ff97b052d696b6dbb9ea820e8920cc31e7f43374df79567064736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101395760003560e01c8063715018a6116100ab5780639ba93c401161006f5780639ba93c4014610391578063a2a957bb146103b1578063a9059cbb146103d1578063b70143c9146103f1578063dd62ed3e14610411578063f2fde38b1461045757600080fd5b8063715018a6146103015780637d1db4a5146103165780638da5cb5b1461032c5780638f9a55c01461034a57806395d89b411461036057600080fd5b80632fd689e3116100fd5780632fd689e31461023f578063313ce5671461025557806349bd5a5e146102715780636d8aa8f8146102915780636fc3eaec146102cc57806370a08231146102e157600080fd5b806306fdde0314610145578063095ea7b3146101925780631694505e146101c257806318160ddd146101fa57806323b872dd1461021f57600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5060408051808201909152601281527150726f6f66206f662053686962617269756d60701b60208201525b604051610189919061157c565b60405180910390f35b34801561019e57600080fd5b506101b26101ad3660046115e2565b610477565b6040519015158152602001610189565b3480156101ce57600080fd5b506013546101e2906001600160a01b031681565b6040516001600160a01b039091168152602001610189565b34801561020657600080fd5b50678ac7230489e800005b604051908152602001610189565b34801561022b57600080fd5b506101b261023a36600461160e565b61048e565b34801561024b57600080fd5b5061021160175481565b34801561026157600080fd5b5060405160098152602001610189565b34801561027d57600080fd5b506014546101e2906001600160a01b031681565b34801561029d57600080fd5b506102ca6102ac36600461164f565b60148054911515600160b01b0260ff60b01b19909216919091179055565b005b3480156102d857600080fd5b506102ca6104f7565b3480156102ed57600080fd5b506102116102fc366004611671565b610502565b34801561030d57600080fd5b506102ca610524565b34801561032257600080fd5b5061021160155481565b34801561033857600080fd5b506000546001600160a01b03166101e2565b34801561035657600080fd5b5061021160165481565b34801561036c57600080fd5b5060408051808201909152600881526705348494220322e360c41b602082015261017c565b34801561039d57600080fd5b506102ca6103ac36600461168e565b6105a1565b3480156103bd57600080fd5b506102ca6103cc3660046116b0565b61068c565b3480156103dd57600080fd5b506101b26103ec3660046115e2565b6106fd565b3480156103fd57600080fd5b506102ca61040c3660046116e2565b61070a565b34801561041d57600080fd5b5061021161042c3660046116fb565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561046357600080fd5b506102ca610472366004611671565b61073f565b6000610484338484610829565b5060015b92915050565b600061049b84848461094d565b6104ed84336104e885604051806060016040528060288152602001611883602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610e4d565b610829565b5060019392505050565b61050047610e87565b565b6001600160a01b03811660009081526002602052604081205461048890610ec5565b6000546001600160a01b031633146105575760405162461bcd60e51b815260040161054e90611734565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105cb5760405162461bcd60e51b815260040161054e90611734565b6105de6064678ac7230489e8000061177f565b6015541015801561060357506105fd6064678ac7230489e8000061177f565b60165410155b6106465760405162461bcd60e51b81526020600482015260146024820152734d757374206265206d6f7265207468616e20312560601b604482015260640161054e565b606461065a83678ac7230489e800006117a1565b610664919061177f565b601555606461067b82678ac7230489e800006117a1565b610685919061177f565b6016555050565b6000546001600160a01b031633146106b65760405162461bcd60e51b815260040161054e90611734565b6008849055600a8390556009829055600b819055606281836106d886886117b8565b6106e291906117b8565b6106ec91906117b8565b11156106f757600080fd5b50505050565b600061048433848461094d565b600061071530610502565b90506000606461072584846117a1565b61072f919061177f565b905061073a81610f49565b505050565b6000546001600160a01b031633146107695760405162461bcd60e51b815260040161054e90611734565b6001600160a01b0381166107ce5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161054e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661088b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161054e565b6001600160a01b0382166108ec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161054e565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161054e565b6001600160a01b038216610a135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161054e565b60008111610a755760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161054e565b6000546001600160a01b03848116911614801590610aa157506000546001600160a01b03838116911614155b15610d4657601454600160a01b900460ff16610b3a576000546001600160a01b03848116911614610b3a5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161054e565b6014546001600160a01b03838116911614801590610b6657506012546001600160a01b03838116911614155b8015610b8057506010546001600160a01b03838116911614155b8015610b9557506001600160a01b0382163014155b15610c7157601554811115610bec5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161054e565b6014546001600160a01b03838116911614610c715760165481610c0e84610502565b610c1891906117b8565b10610c715760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161054e565b6000610c7c30610502565b6017549091508082101590610c929060026117a1565b50808015610caa5750601454600160a81b900460ff16155b8015610cc457506014546001600160a01b03868116911614155b8015610cd95750601454600160b01b900460ff165b8015610cfe57506001600160a01b03851660009081526005602052604090205460ff16155b8015610d2357506001600160a01b03841660009081526005602052604090205460ff16155b15610d4357610d3182610f49565b478015610d4157610d4181610e87565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610d8857506001600160a01b03831660009081526005602052604090205460ff165b80610dba57506014546001600160a01b03858116911614801590610dba57506014546001600160a01b03848116911614155b15610dc757506000610e41565b6014546001600160a01b038581169116148015610df257506013546001600160a01b03848116911614155b15610e0457600854600c55600954600d555b6014546001600160a01b038481169116148015610e2f57506013546001600160a01b03858116911614155b15610e4157600a54600c55600b54600d555b6106f7848484846110c3565b60008184841115610e715760405162461bcd60e51b815260040161054e919061157c565b506000610e7e84866117cb565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610ec1573d6000803e3d6000fd5b5050565b6000600654821115610f2c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161054e565b6000610f366110f1565b9050610f428382611114565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610f9157610f916117de565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100e91906117f4565b81600181518110611021576110216117de565b6001600160a01b0392831660209182029290920101526013546110479130911684610829565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790611080908590600090869030904290600401611811565b600060405180830381600087803b15801561109a57600080fd5b505af11580156110ae573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b806110d0576110d0611156565b6110db848484611184565b806106f7576106f7600e54600c55600f54600d55565b60008060006110fe61127b565b909250905061110d8282611114565b9250505090565b6000610f4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112bb565b600c541580156111665750600d54155b1561116d57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611196876112e9565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506111c89087611346565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546111f79086611388565b6001600160a01b038916600090815260026020526040902055611219816113e7565b6112238483611431565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161126891815260200190565b60405180910390a3505050505050505050565b6006546000908190678ac7230489e800006112968282611114565b8210156112b257505060065492678ac7230489e8000092509050565b90939092509050565b600081836112dc5760405162461bcd60e51b815260040161054e919061157c565b506000610e7e848661177f565b60008060008060008060008060006113068a600c54600d54611455565b92509250925060006113166110f1565b905060008060006113298e8787876114aa565b919e509c509a509598509396509194505050505091939550919395565b6000610f4283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e4d565b60008061139583856117b8565b905083811015610f425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161054e565b60006113f16110f1565b905060006113ff83836114fa565b3060009081526002602052604090205490915061141c9082611388565b30600090815260026020526040902055505050565b60065461143e9083611346565b60065560075461144e9082611388565b6007555050565b600080808061146f606461146989896114fa565b90611114565b9050600061148260646114698a896114fa565b9050600061149a826114948b86611346565b90611346565b9992985090965090945050505050565b60008080806114b988866114fa565b905060006114c788876114fa565b905060006114d588886114fa565b905060006114e7826114948686611346565b939b939a50919850919650505050505050565b60008260000361150c57506000610488565b600061151883856117a1565b905082611525858361177f565b14610f425760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161054e565b600060208083528351808285015260005b818110156115a95785810183015185820160400152820161158d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115df57600080fd5b50565b600080604083850312156115f557600080fd5b8235611600816115ca565b946020939093013593505050565b60008060006060848603121561162357600080fd5b833561162e816115ca565b9250602084013561163e816115ca565b929592945050506040919091013590565b60006020828403121561166157600080fd5b81358015158114610f4257600080fd5b60006020828403121561168357600080fd5b8135610f42816115ca565b600080604083850312156116a157600080fd5b50508035926020909101359150565b600080600080608085870312156116c657600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156116f457600080fd5b5035919050565b6000806040838503121561170e57600080fd5b8235611719816115ca565b91506020830135611729816115ca565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261179c57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761048857610488611769565b8082018082111561048857610488611769565b8181038181111561048857610488611769565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561180657600080fd5b8151610f42816115ca565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118615784516001600160a01b03168352938301939183019160010161183c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122042133dcdc07adf04ff97b052d696b6dbb9ea820e8920cc31e7f43374df79567064736f6c63430008120033

Deployed Bytecode Sourcemap

4287:12636:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6725:83;;;;;;;;;;-1:-1:-1;6795:5:0;;;;;;;;;;;;-1:-1:-1;;;6795:5:0;;;;6725:83;;;;;;;:::i;:::-;;;;;;;;7650:193;;;;;;;;;;-1:-1:-1;7650:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7650:193:0;1023:187:1;5569:41:0;;;;;;;;;;-1:-1:-1;5569:41:0;;;;-1:-1:-1;;;;;5569:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5569:41:0;1215:229:1;7002:95:0;;;;;;;;;;-1:-1:-1;4843:19:0;7002:95;;;1595:25:1;;;1583:2;1568:18;7002:95:0;1449:177:1;7851:446:0;;;;;;;;;;-1:-1:-1;7851:446:0;;;;;:::i;:::-;;:::i;5871:52::-;;;;;;;;;;;;;;;;6911:83;;;;;;;;;;-1:-1:-1;6911:83:0;;4517:1;2234:36:1;;2222:2;2207:18;6911:83:0;2092:184:1;5617:28:0;;;;;;;;;;-1:-1:-1;5617:28:0;;;;-1:-1:-1;;;;;5617:28:0;;;12697:94;;;;;;;;;;-1:-1:-1;12697:94:0;;;;;:::i;:::-;12757:11;:26;;;;;-1:-1:-1;;;12757:26:0;-1:-1:-1;;;;12757:26:0;;;;;;;;;12697:94;;;12373:85;;;;;;;;;;;;;:::i;7105:138::-;;;;;;;;;;-1:-1:-1;7105:138:0;;;;;:::i;:::-;;:::i;1774:148::-;;;;;;;;;;;;;:::i;5767:43::-;;;;;;;;;;;;;;;;1560:79;;;;;;;;;;-1:-1:-1;1598:7:0;1625:6;-1:-1:-1;;;;;1625:6:0;1560:79;;5817:47;;;;;;;;;;;;;;;;6816:87;;;;;;;;;;-1:-1:-1;6888:7:0;;;;;;;;;;;;-1:-1:-1;;;6888:7:0;;;;6816:87;;16611:307;;;;;;;;;;-1:-1:-1;16611:307:0;;;;;:::i;:::-;;:::i;16197:375::-;;;;;;;;;;-1:-1:-1;16197:375:0;;;;;:::i;:::-;;:::i;7251:199::-;;;;;;;;;;-1:-1:-1;7251:199:0;;;;;:::i;:::-;;:::i;12466:223::-;;;;;;;;;;-1:-1:-1;12466:223:0;;;;;:::i;:::-;;:::i;7458:184::-;;;;;;;;;;-1:-1:-1;7458:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7607:18:0;;;7575:7;7607:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7458:184;1930:244;;;;;;;;;;-1:-1:-1;1930:244:0;;;;;:::i;:::-;;:::i;7650:193::-;7752:4;7774:39;399:10;7797:7;7806:6;7774:8;:39::i;:::-;-1:-1:-1;7831:4:0;7650:193;;;;;:::o;7851:446::-;7983:4;8000:36;8010:6;8018:9;8029:6;8000:9;:36::i;:::-;8047:220;8070:6;399:10;8118:138;8174:6;8118:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8118:19:0;;;;;;:11;:19;;;;;;;;399:10;8118:33;;;;;;;;;;:37;:138::i;:::-;8047:8;:220::i;:::-;-1:-1:-1;8285:4:0;7851:446;;;;;:::o;12373:85::-;12415:35;12428:21;12415:12;:35::i;:::-;12373:85::o;7105:138::-;-1:-1:-1;;;;;7218:16:0;;7171:7;7218:16;;;:7;:16;;;;;;7198:37;;:19;:37::i;1774:148::-;1687:6;;-1:-1:-1;;;;;1687:6:0;399:10;1687:22;1679:67;;;;-1:-1:-1;;;1679:67:0;;;;;;;:::i;:::-;;;;;;;;;1881:1:::1;1865:6:::0;;1844:40:::1;::::0;-1:-1:-1;;;;;1865:6:0;;::::1;::::0;1844:40:::1;::::0;1881:1;;1844:40:::1;1912:1;1895:19:::0;;-1:-1:-1;;;;;;1895:19:0::1;::::0;;1774:148::o;16611:307::-;1687:6;;-1:-1:-1;;;;;1687:6:0;399:10;1687:22;1679:67;;;;-1:-1:-1;;;1679:67:0;;;;;;;:::i;:::-;16740:11:::1;16748:3;4843:19;16740:11;:::i;:::-;16724:12;;:27;;:60;;;;-1:-1:-1::0;16773:11:0::1;16781:3;4843:19;16773:11;:::i;:::-;16755:14;;:29;;16724:60;16715:93;;;::::0;-1:-1:-1;;;16715:93:0;;5157:2:1;16715:93:0::1;::::0;::::1;5139:21:1::0;5196:2;5176:18;;;5169:30;-1:-1:-1;;;5215:18:1;;;5208:50;5275:18;;16715:93:0::1;4955:344:1::0;16715:93:0::1;16854:3;16834:19;16842:11:::0;4843:19:::1;16834;:::i;:::-;:23;;;;:::i;:::-;16819:12;:38:::0;16907:3:::1;16885:21;16893:13:::0;4843:19:::1;16885:21;:::i;:::-;:25;;;;:::i;:::-;16868:14;:42:::0;-1:-1:-1;;16611:307:0:o;16197:375::-;1687:6;;-1:-1:-1;;;;;1687:6:0;399:10;1687:22;1679:67;;;;-1:-1:-1;;;1679:67:0;;;;;;;:::i;:::-;16331:14:::1;:30:::0;;;16372:15:::1;:32:::0;;;16415:12:::1;:26:::0;;;16452:13:::1;:28:::0;;;16561:2:::1;16468:12:::0;16430:11;16500:30:::1;16390:14:::0;16348:13;16500:30:::1;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:63;;16491:73;;;::::0;::::1;;16197:375:::0;;;;:::o;7251:199::-;7356:4;7378:42;399:10;7402:9;7413:6;7378:9;:42::i;12466:223::-;12523:28;12554:24;12572:4;12554:9;:24::i;:::-;12523:55;-1:-1:-1;12589:18:0;12639:3;12610:28;12631:7;12523:55;12610:28;:::i;:::-;:32;;;;:::i;:::-;12589:53;;12653:28;12670:10;12653:16;:28::i;:::-;12512:177;;12466:223;:::o;1930:244::-;1687:6;;-1:-1:-1;;;;;1687:6:0;399:10;1687:22;1679:67;;;;-1:-1:-1;;;1679:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2019:22:0;::::1;2011:73;;;::::0;-1:-1:-1;;;2011:73:0;;5809:2:1;2011:73:0::1;::::0;::::1;5791:21:1::0;5848:2;5828:18;;;5821:30;5887:34;5867:18;;;5860:62;-1:-1:-1;;;5938:18:1;;;5931:36;5984:19;;2011:73:0::1;5607:402:1::0;2011:73:0::1;2121:6;::::0;;2100:38:::1;::::0;-1:-1:-1;;;;;2100:38:0;;::::1;::::0;2121:6;::::1;::::0;2100:38:::1;::::0;::::1;2149:6;:17:::0;;-1:-1:-1;;;;;;2149:17:0::1;-1:-1:-1::0;;;;;2149:17:0;;;::::1;::::0;;;::::1;::::0;;1930:244::o;8988:369::-;-1:-1:-1;;;;;9115:19:0;;9107:68;;;;-1:-1:-1;;;9107:68:0;;6216:2:1;9107:68:0;;;6198:21:1;6255:2;6235:18;;;6228:30;6294:34;6274:18;;;6267:62;-1:-1:-1;;;6345:18:1;;;6338:34;6389:19;;9107:68:0;6014:400:1;9107:68:0;-1:-1:-1;;;;;9194:21:0;;9186:68;;;;-1:-1:-1;;;9186:68:0;;6621:2:1;9186:68:0;;;6603:21:1;6660:2;6640:18;;;6633:30;6699:34;6679:18;;;6672:62;-1:-1:-1;;;6750:18:1;;;6743:32;6792:19;;9186:68:0;6419:398:1;9186:68:0;-1:-1:-1;;;;;9265:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9317:32;;1595:25:1;;;9317:32:0;;1568:18:1;9317:32:0;;;;;;;8988:369;;;:::o;9365:2402::-;-1:-1:-1;;;;;9487:18:0;;9479:68;;;;-1:-1:-1;;;9479:68:0;;7024:2:1;9479:68:0;;;7006:21:1;7063:2;7043:18;;;7036:30;7102:34;7082:18;;;7075:62;-1:-1:-1;;;7153:18:1;;;7146:35;7198:19;;9479:68:0;6822:401:1;9479:68:0;-1:-1:-1;;;;;9566:16:0;;9558:64;;;;-1:-1:-1;;;9558:64:0;;7430:2:1;9558:64:0;;;7412:21:1;7469:2;7449:18;;;7442:30;7508:34;7488:18;;;7481:62;-1:-1:-1;;;7559:18:1;;;7552:33;7602:19;;9558:64:0;7228:399:1;9558:64:0;9650:1;9641:6;:10;9633:64;;;;-1:-1:-1;;;9633:64:0;;7834:2:1;9633:64:0;;;7816:21:1;7873:2;7853:18;;;7846:30;7912:34;7892:18;;;7885:62;-1:-1:-1;;;7963:18:1;;;7956:39;8012:19;;9633:64:0;7632:405:1;9633:64:0;1598:7;1625:6;-1:-1:-1;;;;;9714:15:0;;;1625:6;;9714:15;;;;:32;;-1:-1:-1;1598:7:0;1625:6;-1:-1:-1;;;;;9733:13:0;;;1625:6;;9733:13;;9714:32;9710:1331;;;9803:11;;-1:-1:-1;;;9803:11:0;;;;9798:144;;1598:7;1625:6;-1:-1:-1;;;;;9843:15:0;;;1625:6;;9843:15;9835:91;;;;-1:-1:-1;;;9835:91:0;;8244:2:1;9835:91:0;;;8226:21:1;8283:2;8263:18;;;8256:30;8322:34;8302:18;;;8295:62;8393:33;8373:18;;;8366:61;8444:19;;9835:91:0;8042:427:1;9835:91:0;9967:13;;-1:-1:-1;;;;;9961:19:0;;;9967:13;;9961:19;;;;:42;;-1:-1:-1;9990:13:0;;-1:-1:-1;;;;;9984:19:0;;;9990:13;;9984:19;;9961:42;:71;;;;-1:-1:-1;10013:19:0;;-1:-1:-1;;;;;10007:25:0;;;10013:19;;10007:25;;9961:71;:94;;;;-1:-1:-1;;;;;;10036:19:0;;10050:4;10036:19;;9961:94;9958:371;;;10094:12;;10084:6;:22;;10076:63;;;;-1:-1:-1;;;10076:63:0;;8676:2:1;10076:63:0;;;8658:21:1;8715:2;8695:18;;;8688:30;8754;8734:18;;;8727:58;8802:18;;10076:63:0;8474:352:1;10076:63:0;10167:13;;-1:-1:-1;;;;;10161:19:0;;;10167:13;;10161:19;10158:154;;10238:14;;10229:6;10213:13;10223:2;10213:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10205:87;;;;-1:-1:-1;;;10205:87:0;;9033:2:1;10205:87:0;;;9015:21:1;9072:2;9052:18;;;9045:30;9111:34;9091:18;;;9084:62;-1:-1:-1;;;9162:18:1;;;9155:33;9205:19;;10205:87:0;8831:399:1;10205:87:0;10345:28;10376:24;10394:4;10376:9;:24::i;:::-;10454:19;;10345:55;;-1:-1:-1;10430:43:0;;;;;10517:21;;10537:1;10517:21;:::i;:::-;10493:45;10651:7;:18;;;;-1:-1:-1;10663:6:0;;-1:-1:-1;;;10663:6:0;;;;10662:7;10651:18;:43;;;;-1:-1:-1;10681:13:0;;-1:-1:-1;;;;;10673:21:0;;;10681:13;;10673:21;;10651:43;:58;;;;-1:-1:-1;10698:11:0;;-1:-1:-1;;;10698:11:0;;;;10651:58;:87;;;;-1:-1:-1;;;;;;10714:24:0;;;;;;:18;:24;;;;;;;;10713:25;10651:87;:114;;;;-1:-1:-1;;;;;;10743:22:0;;;;;;:18;:22;;;;;;;;10742:23;10651:114;10647:383;;;10786:38;10803:20;10786:16;:38::i;:::-;10872:21;10916:22;;10912:103;;10963:32;10976:18;10963:12;:32::i;:::-;10767:263;10647:383;9748:1293;;9710:1331;-1:-1:-1;;;;;11117:24:0;;11053:12;11117:24;;;:18;:24;;;;;;11068:4;;11117:24;;;:50;;-1:-1:-1;;;;;;11145:22:0;;;;;;:18;:22;;;;;;;;11117:50;11116:102;;;-1:-1:-1;11181:13:0;;-1:-1:-1;;;;;11173:21:0;;;11181:13;;11173:21;;;;:44;;-1:-1:-1;11204:13:0;;-1:-1:-1;;;;;11198:19:0;;;11204:13;;11198:19;;11173:44;11112:594;;;-1:-1:-1;11245:5:0;11112:594;;;11328:13;;-1:-1:-1;;;;;11320:21:0;;;11328:13;;11320:21;:55;;;;-1:-1:-1;11359:15:0;;-1:-1:-1;;;;;11345:30:0;;;11359:15;;11345:30;;11320:55;11317:162;;;11408:14;;11396:9;:26;11451:12;;11441:7;:22;11317:162;11538:13;;-1:-1:-1;;;;;11532:19:0;;;11538:13;;11532:19;:55;;;;-1:-1:-1;11571:15:0;;-1:-1:-1;;;;;11555:32:0;;;11571:15;;11555:32;;11532:55;11528:165;;;11620:15;;11608:9;:27;11664:13;;11654:7;:23;11528:165;11718:41;11733:4;11739:2;11743:6;11751:7;11718:14;:41::i;2538:224::-;2658:7;2694:12;2686:6;;;;2678:29;;;;-1:-1:-1;;;2678:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2718:9:0;2730:5;2734:1;2730;:5;:::i;:::-;2718:17;2538:224;-1:-1:-1;;;;;2538:224:0:o;12266:99::-;12323:17;;:34;;-1:-1:-1;;;;;12323:17:0;;;;:34;;;;;12350:6;;12323:17;:34;:17;:34;12350:6;12323:17;:34;;;;;;;;;;;;;;;;;;;;;12266:99;:::o;8305:323::-;8400:7;8458;;8447;:18;;8425:110;;;;-1:-1:-1;;;8425:110:0;;9570:2:1;8425:110:0;;;9552:21:1;9609:2;9589:18;;;9582:30;9648:34;9628:18;;;9621:62;-1:-1:-1;;;9699:18:1;;;9692:40;9749:19;;8425:110:0;9368:406:1;8425:110:0;8546:19;8568:10;:8;:10::i;:::-;8546:32;-1:-1:-1;8596:24:0;:7;8546:32;8596:11;:24::i;:::-;8589:31;8305:323;-1:-1:-1;;;8305:323:0:o;11775:483::-;6017:6;:13;;-1:-1:-1;;;;6017:13:0;-1:-1:-1;;;6017:13:0;;;11877:16:::1;::::0;;11891:1:::1;11877:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11877:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11877:16:0::1;11853:40;;11922:4;11904;11909:1;11904:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11904:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11948:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11948:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11904:7;;11948:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11938:4;11943:1;11938:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11938:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12013:15:::1;::::0;11981:62:::1;::::0;11998:4:::1;::::0;12013:15:::1;12031:11:::0;11981:8:::1;:62::i;:::-;12054:15;::::0;:196:::1;::::0;-1:-1:-1;;;12054:196:0;;-1:-1:-1;;;;;12054:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12135:11;;12054:15:::1;::::0;12177:4;;12204::::1;::::0;12224:15:::1;::::0;12054:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6053:6:0;:14;;-1:-1:-1;;;;6053:14:0;;;-1:-1:-1;;;;11775:483:0:o;12799:282::-;12955:7;12950:28;;12964:14;:12;:14::i;:::-;12989:44;13007:6;13015:9;13026:6;12989:17;:44::i;:::-;13049:7;13044:29;;13058:15;8919:17;;8907:9;:29;8957:15;;8947:7;:25;8863:117;15760:164;15802:7;15823:15;15840;15859:19;:17;:19::i;:::-;15822:56;;-1:-1:-1;15822:56:0;-1:-1:-1;15896:20:0;15822:56;;15896:11;:20::i;:::-;15889:27;;;;15760:164;:::o;3024:132::-;3082:7;3109:39;3113:1;3116;3109:39;;;;;;;;;;;;;;;;;:3;:39::i;8636:219::-;8683:9;;:14;:30;;;;-1:-1:-1;8701:7:0;;:12;8683:30;8679:43;;;8636:219::o;8679:43::-;8754:9;;;8734:17;:29;8792:7;;;8774:15;:25;-1:-1:-1;8812:13:0;;;;8836:11;8636:219::o;13089:610::-;13236:15;13266:23;13304:12;13331:23;13369:12;13396:13;13423:19;13434:7;13423:10;:19::i;:::-;-1:-1:-1;;;;;13471:15:0;;;;;;:7;:15;;;;;;13221:221;;-1:-1:-1;13221:221:0;;-1:-1:-1;13221:221:0;;-1:-1:-1;13221:221:0;-1:-1:-1;13221:221:0;-1:-1:-1;13221:221:0;-1:-1:-1;13471:28:0;;13221:221;13471:19;:28::i;:::-;-1:-1:-1;;;;;13453:15:0;;;;;;;:7;:15;;;;;;:46;;;;13531:18;;;;;;;:39;;13554:15;13531:22;:39::i;:::-;-1:-1:-1;;;;;13510:18:0;;;;;;:7;:18;;;;;:60;13581:16;13591:5;13581:9;:16::i;:::-;13608:23;13620:4;13626;13608:11;:23::i;:::-;13664:9;-1:-1:-1;;;;;13647:44:0;13656:6;-1:-1:-1;;;;;13647:44:0;;13675:15;13647:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13647:44:0;;;;;;;;13210:489;;;;;;13089:610;;;:::o;15932:257::-;16030:7;;15983;;;;4843:19;16098:20;16030:7;4843:19;16098:11;:20::i;:::-;16088:7;:30;16084:61;;;-1:-1:-1;;16128:7:0;;;4843:19;;-1:-1:-1;15932:257:0;-1:-1:-1;15932:257:0:o;16084:61::-;16164:7;;16173;;-1:-1:-1;15932:257:0;-1:-1:-1;15932:257:0:o;3164:223::-;3284:7;3319:12;3312:5;3304:28;;;;-1:-1:-1;;;3304:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3343:9:0;3355:5;3359:1;3355;:5;:::i;14118:615::-;14218:7;14240;14262;14284;14306;14328;14364:23;14389:12;14403:13;14433:40;14445:7;14454:9;;14465:7;;14433:11;:40::i;:::-;14363:110;;;;;;14484:19;14506:10;:8;:10::i;:::-;14484:32;;14528:15;14545:23;14570:12;14599:46;14611:7;14620:4;14626:5;14633:11;14599;:46::i;:::-;14527:118;;-1:-1:-1;14527:118:0;-1:-1:-1;14527:118:0;-1:-1:-1;14696:15:0;;-1:-1:-1;14713:4:0;;-1:-1:-1;14719:5:0;;-1:-1:-1;;;;;14118:615:0;;;;;;;:::o;2394:136::-;2452:7;2479:43;2483:1;2486;2479:43;;;;;;;;;;;;;;;;;:3;:43::i;2207:179::-;2265:7;;2297:5;2301:1;2297;:5;:::i;:::-;2285:17;;2326:1;2321;:6;;2313:46;;;;-1:-1:-1;;;2313:46:0;;11486:2:1;2313:46:0;;;11468:21:1;11525:2;11505:18;;;11498:30;11564:29;11544:18;;;11537:57;11611:18;;2313:46:0;11284:351:1;13707:211:0;13760:19;13782:10;:8;:10::i;:::-;13760:32;-1:-1:-1;13803:13:0;13819:22;:5;13760:32;13819:9;:22::i;:::-;13893:4;13877:22;;;;:7;:22;;;;;;13803:38;;-1:-1:-1;13877:33:0;;13803:38;13877:26;:33::i;:::-;13868:4;13852:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13707:211:0:o;13926:147::-;14004:7;;:17;;14016:4;14004:11;:17::i;:::-;13994:7;:27;14045:10;;:20;;14060:4;14045:14;:20::i;:::-;14032:10;:33;-1:-1:-1;;13926:147:0:o;14741:469::-;14910:7;;;;15004:30;15030:3;15004:21;:7;15016:8;15004:11;:21::i;:::-;:25;;:30::i;:::-;14989:45;-1:-1:-1;15045:13:0;15061:28;15085:3;15061:19;:7;15073:6;15061:11;:19::i;:28::-;15045:44;-1:-1:-1;15100:23:0;15126:28;15045:44;15126:17;:7;15138:4;15126:11;:17::i;:::-;:21;;:28::i;:::-;15100:54;15190:4;;-1:-1:-1;15196:5:0;;-1:-1:-1;14741:469:0;;-1:-1:-1;;;;;14741:469:0:o;15218:534::-;15412:7;;;;15509:24;:7;15521:11;15509;:24::i;:::-;15491:42;-1:-1:-1;15544:12:0;15559:21;:4;15568:11;15559:8;:21::i;:::-;15544:36;-1:-1:-1;15591:13:0;15607:22;:5;15617:11;15607:9;:22::i;:::-;15591:38;-1:-1:-1;15640:23:0;15666:28;15591:38;15666:17;:7;15678:4;15666:11;:17::i;:28::-;15713:7;;;;-1:-1:-1;15739:4:0;;-1:-1:-1;15218:534:0;;-1:-1:-1;;;;;;;15218:534:0:o;2770:246::-;2828:7;2852:1;2857;2852:6;2848:47;;-1:-1:-1;2882:1:0;2875:8;;2848:47;2905:9;2917:5;2921:1;2917;:5;:::i;:::-;2905:17;-1:-1:-1;2950:1:0;2941:5;2945:1;2905:17;2941:5;:::i;:::-;:10;2933:56;;;;-1:-1:-1;;;2933:56:0;;11842:2:1;2933:56:0;;;11824:21:1;11881:2;11861:18;;;11854:30;11920:34;11900:18;;;11893:62;-1:-1:-1;;;11971:18:1;;;11964:31;12012:19;;2933:56:0;11640: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:273::-;2545:6;2598:2;2586:9;2577:7;2573:23;2569:32;2566:52;;;2614:1;2611;2604:12;2566:52;2653:9;2640:23;2706:5;2699:13;2692:21;2685:5;2682:32;2672:60;;2728:1;2725;2718:12;2767:247;2826:6;2879:2;2867:9;2858:7;2854:23;2850:32;2847:52;;;2895:1;2892;2885:12;2847:52;2934:9;2921:23;2953:31;2978:5;2953:31;:::i;3019:248::-;3087:6;3095;3148:2;3136:9;3127:7;3123:23;3119:32;3116:52;;;3164:1;3161;3154:12;3116:52;-1:-1:-1;;3187:23:1;;;3257:2;3242:18;;;3229:32;;-1:-1:-1;3019:248:1:o;3272:385::-;3358:6;3366;3374;3382;3435:3;3423:9;3414:7;3410:23;3406:33;3403:53;;;3452:1;3449;3442:12;3403:53;-1:-1:-1;;3475:23:1;;;3545:2;3530:18;;3517:32;;-1:-1:-1;3596:2:1;3581:18;;3568:32;;3647:2;3632:18;3619:32;;-1:-1:-1;3272:385:1;-1:-1:-1;3272:385:1:o;3662:180::-;3721:6;3774:2;3762:9;3753:7;3749:23;3745:32;3742:52;;;3790:1;3787;3780:12;3742:52;-1:-1:-1;3813:23:1;;3662:180;-1:-1:-1;3662:180:1:o;3847:388::-;3915:6;3923;3976:2;3964:9;3955:7;3951:23;3947:32;3944:52;;;3992:1;3989;3982:12;3944:52;4031:9;4018:23;4050:31;4075:5;4050:31;:::i;:::-;4100:5;-1:-1:-1;4157:2:1;4142:18;;4129:32;4170:33;4129:32;4170:33;:::i;:::-;4222:7;4212:17;;;3847:388;;;;;:::o;4240:356::-;4442:2;4424:21;;;4461:18;;;4454:30;4520:34;4515:2;4500:18;;4493:62;4587:2;4572:18;;4240:356::o;4601:127::-;4662:10;4657:3;4653:20;4650:1;4643:31;4693:4;4690:1;4683:15;4717:4;4714:1;4707:15;4733:217;4773:1;4799;4789:132;;4843:10;4838:3;4834:20;4831:1;4824:31;4878:4;4875:1;4868:15;4906:4;4903:1;4896:15;4789:132;-1:-1:-1;4935:9:1;;4733:217::o;5304:168::-;5377:9;;;5408;;5425:15;;;5419:22;;5405:37;5395:71;;5446:18;;:::i;5477:125::-;5542:9;;;5563:10;;;5560:36;;;5576:18;;:::i;9235:128::-;9302:9;;;9323:11;;;9320:37;;;9337:18;;:::i;9911:127::-;9972:10;9967:3;9963:20;9960:1;9953:31;10003:4;10000:1;9993:15;10027:4;10024:1;10017:15;10043:251;10113:6;10166:2;10154:9;10145:7;10141:23;10137:32;10134:52;;;10182:1;10179;10172:12;10134:52;10214:9;10208:16;10233:31;10258:5;10233:31;:::i;10299:980::-;10561:4;10609:3;10598:9;10594:19;10640:6;10629:9;10622:25;10666:2;10704:6;10699:2;10688:9;10684:18;10677:34;10747:3;10742:2;10731:9;10727:18;10720:31;10771:6;10806;10800:13;10837:6;10829;10822:22;10875:3;10864:9;10860:19;10853:26;;10914:2;10906:6;10902:15;10888:29;;10935:1;10945:195;10959:6;10956:1;10953:13;10945:195;;;11024:13;;-1:-1:-1;;;;;11020:39:1;11008:52;;11115:15;;;;11080:12;;;;11056:1;10974:9;10945:195;;;-1:-1:-1;;;;;;;11196:32:1;;;;11191:2;11176:18;;11169:60;-1:-1:-1;;;11260:3:1;11245:19;11238:35;11157:3;10299:980;-1:-1:-1;;;10299:980:1:o

Swarm Source

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