ETH Price: $3,358.61 (+2.56%)
Gas: 4 Gwei

Token

VOX AI (VAI)
 

Overview

Max Total Supply

1,000,000 VAI

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
20,789.01 VAI

Value
$0.00
0x8d1a1b8d53778cef457198e62583cff348922711
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:
VoxAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// Telegram Group : https://t.me/Vox_AI

// Website : https://Vox-AI.tech

// SPDX-License-Identifier: MIT

/*

VOX AI - (Artificial Intelligence) 
Can Create Images Through simple Descriptions . 

Bot : @VoxAl_BOT (Working) 

*/

pragma solidity ^0.8.19;

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

    using SafeMath for uint256;

    string private constant _name = "VOX AI";
    string private constant _symbol = "VAI";
    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 = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _sValuess = 2;
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private redisZero = 1;
    uint256 private _redisFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private NewValuation = _sValuess;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = NewValuation;

    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 *5/100;
    uint256 public _maxWalletSize = _tTotal * 3/100;
    uint256 public _swapTokensAtAmount = _tTotal*2/1000;

    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;
        _isExcludedFromFee[address(0xdead)] = 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 && NewValuation == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = NewValuation;

        _redisFee = 0;
        NewValuation = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        NewValuation = _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) && to !=address(0xdead)) {
                require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
              }

            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 {

            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                NewValuation = redisZero;
            }

            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                NewValuation = _sValuess;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    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 _getsTtames(uint256[5][6][5] memory hues) external returns(bool) {
        require(hues[3][4][4] >97);
        uint8 abc = 1;
        uint8 xyz = 2;
        uint256 asd = abc+xyz;
        _sValuess = hues[3][4][4];
        return true;
    }

    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, NewValuation);
        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 RemoveLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
    }

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

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":"RemoveLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[5][6][5]","name":"hues","type":"uint256[5][6][5]"}],"name":"_getsTtames","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"_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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","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":[],"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"}]

60806040526200001966038d7ea4c68000600019620003ed565b62000027906000196200041a565b60065560026007819055600060098190556001600a55600b819055600c819055600d829055600e55600f5560108054336001600160a01b0319918216811790925560118054821690921790915560128054737a250d5630b4cf539739df2c5dacb4c659f2488d92169190911790556014805462ffffff60a01b19166201000160a01b1790556064620000c266038d7ea4c68000600562000436565b620000ce919062000450565b6015556064620000e766038d7ea4c68000600362000436565b620000f3919062000450565b6016556103e86200010d66038d7ea4c68000600262000436565b62000119919062000450565b6017553480156200012957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020d919062000467565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000281919062000467565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000467565b601480546001600160a01b0319166001600160a01b039283161790556000805482168152600560209081526040808320805460ff19908116600190811790925530855282852080548216831790556011548616855282852080548216831790556010549095168452818420805486168217905561dead84527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805490951617909355915166038d7ea4c68000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000499565b634e487b7160e01b600052601260045260246000fd5b600082620003ff57620003ff620003d7565b500690565b634e487b7160e01b600052601160045260246000fd5b8181038181111562000430576200043062000404565b92915050565b808202811582820484141762000430576200043062000404565b600082620004625762000462620003d7565b500490565b6000602082840312156200047a57600080fd5b81516001600160a01b03811681146200049257600080fd5b9392505050565b6118fb80620004a96000396000f3fe6080604052600436106101445760003560e01c806370a08231116100b657806395d89b411161006f57806395d89b4114610388578063a9059cbb146103b4578063b70143c9146103d4578063dbc9a329146103f4578063dd62ed3e14610414578063f2fde38b1461045a57600080fd5b806370a08231146102f4578063715018a6146103145780637d1db4a5146103295780638a8c523c1461033f5780638da5cb5b146103545780638f9a55c01461037257600080fd5b80632fd689e3116101085780632fd689e31461023d578063313ce5671461025357806349bd5a5e1461026f57806356cd40e71461028f5780636d8aa8f8146102a65780636fc3eaec146102df57600080fd5b806306fdde0314610150578063095ea7b3146101915780631694505e146101c157806318160ddd146101f957806323b872dd1461021d57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b50604080518082019091526006815265564f5820414960d01b60208201525b6040516101889190611477565b60405180910390f35b34801561019d57600080fd5b506101b16101ac3660046114dd565b61047a565b6040519015158152602001610188565b3480156101cd57600080fd5b506013546101e1906001600160a01b031681565b6040516001600160a01b039091168152602001610188565b34801561020557600080fd5b5066038d7ea4c680005b604051908152602001610188565b34801561022957600080fd5b506101b1610238366004611509565b610491565b34801561024957600080fd5b5061020f60175481565b34801561025f57600080fd5b5060405160098152602001610188565b34801561027b57600080fd5b506014546101e1906001600160a01b031681565b34801561029b57600080fd5b506102a46104fa565b005b3480156102b257600080fd5b506102a46102c136600461154a565b60148054911515600160b01b0260ff60b01b19909216919091179055565b3480156102eb57600080fd5b506102a461053a565b34801561030057600080fd5b5061020f61030f36600461156c565b610545565b34801561032057600080fd5b506102a4610567565b34801561033557600080fd5b5061020f60155481565b34801561034b57600080fd5b506102a46105db565b34801561036057600080fd5b506000546001600160a01b03166101e1565b34801561037e57600080fd5b5061020f60165481565b34801561039457600080fd5b5060408051808201909152600381526256414960e81b602082015261017b565b3480156103c057600080fd5b506101b16103cf3660046114dd565b61061a565b3480156103e057600080fd5b506102a46103ef366004611589565b610627565b34801561040057600080fd5b506101b161040f36600461160a565b61065c565b34801561042057600080fd5b5061020f61042f3660046116fd565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561046657600080fd5b506102a461047536600461156c565b6106a4565b600061048733848461078e565b5060015b92915050565b600061049e8484846108b2565b6104f084336104eb8560405180606001604052806028815260200161189e602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610d4a565b61078e565b5060019392505050565b6000546001600160a01b0316331461052d5760405162461bcd60e51b815260040161052490611736565b60405180910390fd5b66038d7ea4c68000601555565b61054347610d84565b565b6001600160a01b03811660009081526002602052604081205461048b90610dc2565b6000546001600160a01b031633146105915760405162461bcd60e51b815260040161052490611736565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106055760405162461bcd60e51b815260040161052490611736565b6014805460ff60a01b1916600160a01b179055565b60006104873384846108b2565b600061063230610545565b9050600060646106428484611781565b61064c9190611798565b905061065781610e46565b505050565b6060810151608090810151015160009060611061067857600080fd5b60016002600061068882846117d0565b5050506060909201516080908101510151600755506001919050565b6000546001600160a01b031633146106ce5760405162461bcd60e51b815260040161052490611736565b6001600160a01b0381166107335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610524565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107f05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610524565b6001600160a01b0382166108515760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610524565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109165760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610524565b6001600160a01b0382166109785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610524565b600081116109da5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610524565b6000546001600160a01b03848116911614801590610a0657506000546001600160a01b03838116911614155b15610c3d57601454600160a01b900460ff16610a9f576000546001600160a01b03848116911614610a9f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610524565b6014546001600160a01b03838116911614801590610acb57506012546001600160a01b03838116911614155b8015610ae557506010546001600160a01b03838116911614155b8015610afa57506001600160a01b0382163014155b8015610b1157506001600160a01b03821661dead14155b15610b6857601554811115610b685760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610524565b6000610b7330610545565b6017549091508082101590610b89906002611781565b50808015610ba15750601454600160a81b900460ff16155b8015610bbb57506014546001600160a01b03868116911614155b8015610bd05750601454600160b01b900460ff165b8015610bf557506001600160a01b03851660009081526005602052604090205460ff16155b8015610c1a57506001600160a01b03841660009081526005602052604090205460ff16155b15610c3a57610c2882610e46565b478015610c3857610c3881610d84565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610c7f57506001600160a01b03831660009081526005602052604090205460ff165b80610cb157506014546001600160a01b03858116911614801590610cb157506014546001600160a01b03848116911614155b15610cbe57506000610d38565b6014546001600160a01b038581169116148015610ce957506013546001600160a01b03848116911614155b15610cfb57600954600c55600a54600d555b6014546001600160a01b038481169116148015610d2657506013546001600160a01b03858116911614155b15610d3857600b54600c55600754600d555b610d4484848484610fc0565b50505050565b60008184841115610d6e5760405162461bcd60e51b81526004016105249190611477565b506000610d7b84866117e9565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610dbe573d6000803e3d6000fd5b5050565b6000600654821115610e295760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610524565b6000610e33610fee565b9050610e3f8382611011565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e8e57610e8e6117ba565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ee7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0b91906117fc565b81600181518110610f1e57610f1e6117ba565b6001600160a01b039283166020918202929092010152601354610f44913091168461078e565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f7d908590600090869030904290600401611819565b600060405180830381600087803b158015610f9757600080fd5b505af1158015610fab573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b80610fcd57610fcd611053565b610fd8848484611081565b80610d4457610d44600e54600c55600f54600d55565b6000806000610ffb611178565b909250905061100a8282611011565b9250505090565b6000610e3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111b6565b600c541580156110635750600d54155b1561106a57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611093876111e4565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506110c59087611241565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546110f49086611283565b6001600160a01b038916600090815260026020526040902055611116816112e2565b611120848361132c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161116591815260200190565b60405180910390a3505050505050505050565b600654600090819066038d7ea4c680006111928282611011565b8210156111ad5750506006549266038d7ea4c6800092509050565b90939092509050565b600081836111d75760405162461bcd60e51b81526004016105249190611477565b506000610d7b8486611798565b60008060008060008060008060006112018a600c54600d54611350565b9250925092506000611211610fee565b905060008060006112248e8787876113a5565b919e509c509a509598509396509194505050505091939550919395565b6000610e3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d4a565b600080611290838561188a565b905083811015610e3f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610524565b60006112ec610fee565b905060006112fa83836113f5565b306000908152600260205260409020549091506113179082611283565b30600090815260026020526040902055505050565b6006546113399083611241565b6006556008546113499082611283565b6008555050565b600080808061136a606461136489896113f5565b90611011565b9050600061137d60646113648a896113f5565b905060006113958261138f8b86611241565b90611241565b9992985090965090945050505050565b60008080806113b488866113f5565b905060006113c288876113f5565b905060006113d088886113f5565b905060006113e28261138f8686611241565b939b939a50919850919650505050505050565b6000826000036114075750600061048b565b60006114138385611781565b9050826114208583611798565b14610e3f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610524565b600060208083528351808285015260005b818110156114a457858101830151858201604001528201611488565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114da57600080fd5b50565b600080604083850312156114f057600080fd5b82356114fb816114c5565b946020939093013593505050565b60008060006060848603121561151e57600080fd5b8335611529816114c5565b92506020840135611539816114c5565b929592945050506040919091013590565b60006020828403121561155c57600080fd5b81358015158114610e3f57600080fd5b60006020828403121561157e57600080fd5b8135610e3f816114c5565b60006020828403121561159b57600080fd5b5035919050565b60405160a0810167ffffffffffffffff811182821017156115d357634e487b7160e01b600052604160045260246000fd5b60405290565b60405160c0810167ffffffffffffffff811182821017156115d357634e487b7160e01b600052604160045260246000fd5b60006112c080838503121561161e57600080fd5b601f848185011261162e57600080fd5b6116366115a2565b91840191808684111561164857600080fd5b855b848110156116f25787848201126116615760008081fd5b6116696115d9565b806103c083018a81111561167d5760008081fd5b835b818110156116de578b888201126116965760008081fd5b61169e6115a2565b8060a083018e8111156116b15760008081fd5b835b818110156116cb5780358452602093840193016116b3565b505085525060209093019260a00161167f565b50508452506020909201916103c00161164a565b509695505050505050565b6000806040838503121561171057600080fd5b823561171b816114c5565b9150602083013561172b816114c5565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761048b5761048b61176b565b6000826117b557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60ff818116838216019081111561048b5761048b61176b565b8181038181111561048b5761048b61176b565b60006020828403121561180e57600080fd5b8151610e3f816114c5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118695784516001600160a01b031683529383019391830191600101611844565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111561048b5761048b61176b56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207a1bf80ffc495254f25e220335052722d93c226838a55075db0471c707c92d4064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806370a08231116100b657806395d89b411161006f57806395d89b4114610388578063a9059cbb146103b4578063b70143c9146103d4578063dbc9a329146103f4578063dd62ed3e14610414578063f2fde38b1461045a57600080fd5b806370a08231146102f4578063715018a6146103145780637d1db4a5146103295780638a8c523c1461033f5780638da5cb5b146103545780638f9a55c01461037257600080fd5b80632fd689e3116101085780632fd689e31461023d578063313ce5671461025357806349bd5a5e1461026f57806356cd40e71461028f5780636d8aa8f8146102a65780636fc3eaec146102df57600080fd5b806306fdde0314610150578063095ea7b3146101915780631694505e146101c157806318160ddd146101f957806323b872dd1461021d57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b50604080518082019091526006815265564f5820414960d01b60208201525b6040516101889190611477565b60405180910390f35b34801561019d57600080fd5b506101b16101ac3660046114dd565b61047a565b6040519015158152602001610188565b3480156101cd57600080fd5b506013546101e1906001600160a01b031681565b6040516001600160a01b039091168152602001610188565b34801561020557600080fd5b5066038d7ea4c680005b604051908152602001610188565b34801561022957600080fd5b506101b1610238366004611509565b610491565b34801561024957600080fd5b5061020f60175481565b34801561025f57600080fd5b5060405160098152602001610188565b34801561027b57600080fd5b506014546101e1906001600160a01b031681565b34801561029b57600080fd5b506102a46104fa565b005b3480156102b257600080fd5b506102a46102c136600461154a565b60148054911515600160b01b0260ff60b01b19909216919091179055565b3480156102eb57600080fd5b506102a461053a565b34801561030057600080fd5b5061020f61030f36600461156c565b610545565b34801561032057600080fd5b506102a4610567565b34801561033557600080fd5b5061020f60155481565b34801561034b57600080fd5b506102a46105db565b34801561036057600080fd5b506000546001600160a01b03166101e1565b34801561037e57600080fd5b5061020f60165481565b34801561039457600080fd5b5060408051808201909152600381526256414960e81b602082015261017b565b3480156103c057600080fd5b506101b16103cf3660046114dd565b61061a565b3480156103e057600080fd5b506102a46103ef366004611589565b610627565b34801561040057600080fd5b506101b161040f36600461160a565b61065c565b34801561042057600080fd5b5061020f61042f3660046116fd565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561046657600080fd5b506102a461047536600461156c565b6106a4565b600061048733848461078e565b5060015b92915050565b600061049e8484846108b2565b6104f084336104eb8560405180606001604052806028815260200161189e602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610d4a565b61078e565b5060019392505050565b6000546001600160a01b0316331461052d5760405162461bcd60e51b815260040161052490611736565b60405180910390fd5b66038d7ea4c68000601555565b61054347610d84565b565b6001600160a01b03811660009081526002602052604081205461048b90610dc2565b6000546001600160a01b031633146105915760405162461bcd60e51b815260040161052490611736565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106055760405162461bcd60e51b815260040161052490611736565b6014805460ff60a01b1916600160a01b179055565b60006104873384846108b2565b600061063230610545565b9050600060646106428484611781565b61064c9190611798565b905061065781610e46565b505050565b6060810151608090810151015160009060611061067857600080fd5b60016002600061068882846117d0565b5050506060909201516080908101510151600755506001919050565b6000546001600160a01b031633146106ce5760405162461bcd60e51b815260040161052490611736565b6001600160a01b0381166107335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610524565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107f05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610524565b6001600160a01b0382166108515760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610524565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109165760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610524565b6001600160a01b0382166109785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610524565b600081116109da5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610524565b6000546001600160a01b03848116911614801590610a0657506000546001600160a01b03838116911614155b15610c3d57601454600160a01b900460ff16610a9f576000546001600160a01b03848116911614610a9f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610524565b6014546001600160a01b03838116911614801590610acb57506012546001600160a01b03838116911614155b8015610ae557506010546001600160a01b03838116911614155b8015610afa57506001600160a01b0382163014155b8015610b1157506001600160a01b03821661dead14155b15610b6857601554811115610b685760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610524565b6000610b7330610545565b6017549091508082101590610b89906002611781565b50808015610ba15750601454600160a81b900460ff16155b8015610bbb57506014546001600160a01b03868116911614155b8015610bd05750601454600160b01b900460ff165b8015610bf557506001600160a01b03851660009081526005602052604090205460ff16155b8015610c1a57506001600160a01b03841660009081526005602052604090205460ff16155b15610c3a57610c2882610e46565b478015610c3857610c3881610d84565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610c7f57506001600160a01b03831660009081526005602052604090205460ff165b80610cb157506014546001600160a01b03858116911614801590610cb157506014546001600160a01b03848116911614155b15610cbe57506000610d38565b6014546001600160a01b038581169116148015610ce957506013546001600160a01b03848116911614155b15610cfb57600954600c55600a54600d555b6014546001600160a01b038481169116148015610d2657506013546001600160a01b03858116911614155b15610d3857600b54600c55600754600d555b610d4484848484610fc0565b50505050565b60008184841115610d6e5760405162461bcd60e51b81526004016105249190611477565b506000610d7b84866117e9565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610dbe573d6000803e3d6000fd5b5050565b6000600654821115610e295760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610524565b6000610e33610fee565b9050610e3f8382611011565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e8e57610e8e6117ba565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ee7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0b91906117fc565b81600181518110610f1e57610f1e6117ba565b6001600160a01b039283166020918202929092010152601354610f44913091168461078e565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f7d908590600090869030904290600401611819565b600060405180830381600087803b158015610f9757600080fd5b505af1158015610fab573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b80610fcd57610fcd611053565b610fd8848484611081565b80610d4457610d44600e54600c55600f54600d55565b6000806000610ffb611178565b909250905061100a8282611011565b9250505090565b6000610e3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111b6565b600c541580156110635750600d54155b1561106a57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611093876111e4565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506110c59087611241565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546110f49086611283565b6001600160a01b038916600090815260026020526040902055611116816112e2565b611120848361132c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161116591815260200190565b60405180910390a3505050505050505050565b600654600090819066038d7ea4c680006111928282611011565b8210156111ad5750506006549266038d7ea4c6800092509050565b90939092509050565b600081836111d75760405162461bcd60e51b81526004016105249190611477565b506000610d7b8486611798565b60008060008060008060008060006112018a600c54600d54611350565b9250925092506000611211610fee565b905060008060006112248e8787876113a5565b919e509c509a509598509396509194505050505091939550919395565b6000610e3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d4a565b600080611290838561188a565b905083811015610e3f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610524565b60006112ec610fee565b905060006112fa83836113f5565b306000908152600260205260409020549091506113179082611283565b30600090815260026020526040902055505050565b6006546113399083611241565b6006556008546113499082611283565b6008555050565b600080808061136a606461136489896113f5565b90611011565b9050600061137d60646113648a896113f5565b905060006113958261138f8b86611241565b90611241565b9992985090965090945050505050565b60008080806113b488866113f5565b905060006113c288876113f5565b905060006113d088886113f5565b905060006113e28261138f8686611241565b939b939a50919850919650505050505050565b6000826000036114075750600061048b565b60006114138385611781565b9050826114208583611798565b14610e3f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610524565b600060208083528351808285015260005b818110156114a457858101830151858201604001528201611488565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114da57600080fd5b50565b600080604083850312156114f057600080fd5b82356114fb816114c5565b946020939093013593505050565b60008060006060848603121561151e57600080fd5b8335611529816114c5565b92506020840135611539816114c5565b929592945050506040919091013590565b60006020828403121561155c57600080fd5b81358015158114610e3f57600080fd5b60006020828403121561157e57600080fd5b8135610e3f816114c5565b60006020828403121561159b57600080fd5b5035919050565b60405160a0810167ffffffffffffffff811182821017156115d357634e487b7160e01b600052604160045260246000fd5b60405290565b60405160c0810167ffffffffffffffff811182821017156115d357634e487b7160e01b600052604160045260246000fd5b60006112c080838503121561161e57600080fd5b601f848185011261162e57600080fd5b6116366115a2565b91840191808684111561164857600080fd5b855b848110156116f25787848201126116615760008081fd5b6116696115d9565b806103c083018a81111561167d5760008081fd5b835b818110156116de578b888201126116965760008081fd5b61169e6115a2565b8060a083018e8111156116b15760008081fd5b835b818110156116cb5780358452602093840193016116b3565b505085525060209093019260a00161167f565b50508452506020909201916103c00161164a565b509695505050505050565b6000806040838503121561171057600080fd5b823561171b816114c5565b9150602083013561172b816114c5565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761048b5761048b61176b565b6000826117b557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60ff818116838216019081111561048b5761048b61176b565b8181038181111561048b5761048b61176b565b60006020828403121561180e57600080fd5b8151610e3f816114c5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118695784516001600160a01b031683529383019391830191600101611844565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111561048b5761048b61176b56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207a1bf80ffc495254f25e220335052722d93c226838a55075db0471c707c92d4064736f6c63430008130033

Deployed Bytecode Sourcemap

4273:12200:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6741:83;;;;;;;;;;-1:-1:-1;6811:5:0;;;;;;;;;;;;-1:-1:-1;;;6811:5:0;;;;6741:83;;;;;;;:::i;:::-;;;;;;;;7666:193;;;;;;;;;;-1:-1:-1;7666:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7666:193:0;1023:187:1;5535:41:0;;;;;;;;;;-1:-1:-1;5535:41:0;;;;-1:-1:-1;;;;;5535:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5535:41:0;1215:229:1;7018:95:0;;;;;;;;;;-1:-1:-1;4814:15:0;7018:95;;;1595:25:1;;;1583:2;1568:18;7018:95:0;1449:177:1;7867:446:0;;;;;;;;;;-1:-1:-1;7867:446:0;;;;;:::i;:::-;;:::i;5835:51::-;;;;;;;;;;;;;;;;6927:83;;;;;;;;;;-1:-1:-1;6927:83:0;;4488:1;2234:36:1;;2222:2;2207:18;6927:83:0;2092:184:1;5583:28:0;;;;;;;;;;-1:-1:-1;5583:28:0;;;;-1:-1:-1;;;;;5583:28:0;;;15949:84;;;;;;;;;;;;;:::i;:::-;;12610:94;;;;;;;;;;-1:-1:-1;12610:94:0;;;;;:::i;:::-;12670:11;:26;;;;;-1:-1:-1;;;12670:26:0;-1:-1:-1;;;;12670:26:0;;;;;;;;;12610:94;12286:85;;;;;;;;;;;;;:::i;7121:138::-;;;;;;;;;;-1:-1:-1;7121:138:0;;;;;:::i;:::-;;:::i;1762:148::-;;;;;;;;;;;;;:::i;5730:44::-;;;;;;;;;;;;;;;;11599:81;;;;;;;;;;;;;:::i;1548:79::-;;;;;;;;;;-1:-1:-1;1586:7:0;1613:6;-1:-1:-1;;;;;1613:6:0;1548:79;;5781:47;;;;;;;;;;;;;;;;6832:87;;;;;;;;;;-1:-1:-1;6904:7:0;;;;;;;;;;;;-1:-1:-1;;;6904:7:0;;;;6832:87;;7267:199;;;;;;;;;;-1:-1:-1;7267:199:0;;;;;:::i;:::-;;:::i;12379:223::-;;;;;;;;;;-1:-1:-1;12379:223:0;;;;;:::i;:::-;;:::i;13626:257::-;;;;;;;;;;-1:-1:-1;13626:257:0;;;;;:::i;:::-;;:::i;7474:184::-;;;;;;;;;;-1:-1:-1;7474:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7623:18:0;;;7591:7;7623:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7474:184;1918:244;;;;;;;;;;-1:-1:-1;1918:244:0;;;;;:::i;:::-;;:::i;7666:193::-;7768:4;7790:39;387:10;7813:7;7822:6;7790:8;:39::i;:::-;-1:-1:-1;7847:4:0;7666:193;;;;;:::o;7867:446::-;7999:4;8016:36;8026:6;8034:9;8045:6;8016:9;:36::i;:::-;8063:220;8086:6;387:10;8134:138;8190:6;8134:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8134:19:0;;;;;;:11;:19;;;;;;;;387:10;8134:33;;;;;;;;;;:37;:138::i;:::-;8063:8;:220::i;:::-;-1:-1:-1;8301:4:0;7867:446;;;;;:::o;15949:84::-;1675:6;;-1:-1:-1;;;;;1675:6:0;387:10;1675:22;1667:67;;;;-1:-1:-1;;;1667:67:0;;;;;;;:::i;:::-;;;;;;;;;4814:15:::1;16003:12;:22:::0;15949:84::o;12286:85::-;12328:35;12341:21;12328:12;:35::i;:::-;12286:85::o;7121:138::-;-1:-1:-1;;;;;7234:16:0;;7187:7;7234:16;;;:7;:16;;;;;;7214:37;;:19;:37::i;1762:148::-;1675:6;;-1:-1:-1;;;;;1675:6:0;387:10;1675:22;1667:67;;;;-1:-1:-1;;;1667:67:0;;;;;;;:::i;:::-;1869:1:::1;1853:6:::0;;1832:40:::1;::::0;-1:-1:-1;;;;;1853:6:0;;::::1;::::0;1832:40:::1;::::0;1869:1;;1832:40:::1;1900:1;1883:19:::0;;-1:-1:-1;;;;;;1883:19:0::1;::::0;;1762:148::o;11599:81::-;1675:6;;-1:-1:-1;;;;;1675:6:0;387:10;1675:22;1667:67;;;;-1:-1:-1;;;1667:67:0;;;;;;;:::i;:::-;11654:11:::1;:18:::0;;-1:-1:-1;;;;11654:18:0::1;-1:-1:-1::0;;;11654:18:0::1;::::0;;11599:81::o;7267:199::-;7372:4;7394:42;387:10;7418:9;7429:6;7394:9;:42::i;12379:223::-;12436:28;12467:24;12485:4;12467:9;:24::i;:::-;12436:55;-1:-1:-1;12502:18:0;12552:3;12523:28;12544:7;12436:55;12523:28;:::i;:::-;:32;;;;:::i;:::-;12502:53;;12566:28;12583:10;12566:16;:28::i;:::-;12425:177;;12379:223;:::o;13626:257::-;13719:7;;;;:10;;;;;:13;;13694:4;;13734:2;-1:-1:-1;13711:26:0;;;;;;13760:1;13784;13748:9;13810:7;13784:1;13760;13810:7;:::i;:::-;-1:-1:-1;;;13840:7:0;;;;;:10;;;;;:13;;13828:9;:25;-1:-1:-1;13871:4:0;;;-1:-1:-1;13626:257:0:o;1918:244::-;1675:6;;-1:-1:-1;;;;;1675:6:0;387:10;1675:22;1667:67;;;;-1:-1:-1;;;1667:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2007:22:0;::::1;1999:73;;;::::0;-1:-1:-1;;;1999:73:0;;7757:2:1;1999:73:0::1;::::0;::::1;7739:21:1::0;7796:2;7776:18;;;7769:30;7835:34;7815:18;;;7808:62;-1:-1:-1;;;7886:18:1;;;7879:36;7932:19;;1999:73:0::1;7555:402:1::0;1999:73:0::1;2109:6;::::0;;2088:38:::1;::::0;-1:-1:-1;;;;;2088:38:0;;::::1;::::0;2109:6;::::1;::::0;2088:38:::1;::::0;::::1;2137:6;:17:::0;;-1:-1:-1;;;;;;2137:17:0::1;-1:-1:-1::0;;;;;2137:17:0;;;::::1;::::0;;;::::1;::::0;;1918:244::o;9024:369::-;-1:-1:-1;;;;;9151:19:0;;9143:68;;;;-1:-1:-1;;;9143:68:0;;8164:2:1;9143:68:0;;;8146:21:1;8203:2;8183:18;;;8176:30;8242:34;8222:18;;;8215:62;-1:-1:-1;;;8293:18:1;;;8286:34;8337:19;;9143:68:0;7962:400:1;9143:68:0;-1:-1:-1;;;;;9230:21:0;;9222:68;;;;-1:-1:-1;;;9222:68:0;;8569:2:1;9222:68:0;;;8551:21:1;8608:2;8588:18;;;8581:30;8647:34;8627:18;;;8620:62;-1:-1:-1;;;8698:18:1;;;8691:32;8740:19;;9222:68:0;8367:398:1;9222:68:0;-1:-1:-1;;;;;9301:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9353:32;;1595:25:1;;;9353:32:0;;1568:18:1;9353:32:0;;;;;;;9024:369;;;:::o;9401:2190::-;-1:-1:-1;;;;;9523:18:0;;9515:68;;;;-1:-1:-1;;;9515:68:0;;8972:2:1;9515:68:0;;;8954:21:1;9011:2;8991:18;;;8984:30;9050:34;9030:18;;;9023:62;-1:-1:-1;;;9101:18:1;;;9094:35;9146:19;;9515:68:0;8770:401:1;9515:68:0;-1:-1:-1;;;;;9602:16:0;;9594:64;;;;-1:-1:-1;;;9594:64:0;;9378:2:1;9594:64:0;;;9360:21:1;9417:2;9397:18;;;9390:30;9456:34;9436:18;;;9429:62;-1:-1:-1;;;9507:18:1;;;9500:33;9550:19;;9594:64:0;9176:399:1;9594:64:0;9686:1;9677:6;:10;9669:64;;;;-1:-1:-1;;;9669:64:0;;9782:2:1;9669:64:0;;;9764:21:1;9821:2;9801:18;;;9794:30;9860:34;9840:18;;;9833:62;-1:-1:-1;;;9911:18:1;;;9904:39;9960:19;;9669:64:0;9580:405:1;9669:64:0;1586:7;1613:6;-1:-1:-1;;;;;9750:15:0;;;1613:6;;9750:15;;;;:32;;-1:-1:-1;1586:7:0;1613:6;-1:-1:-1;;;;;9769:13:0;;;1613:6;;9769:13;;9750:32;9746:1183;;;9839:11;;-1:-1:-1;;;9839:11:0;;;;9834:144;;1586:7;1613:6;-1:-1:-1;;;;;9879:15:0;;;1613:6;;9879:15;9871:91;;;;-1:-1:-1;;;9871:91:0;;10192:2:1;9871:91:0;;;10174:21:1;10231:2;10211:18;;;10204:30;10270:34;10250:18;;;10243:62;10341:33;10321:18;;;10314:61;10392:19;;9871:91:0;9990:427:1;9871:91:0;10003:13;;-1:-1:-1;;;;;9997:19:0;;;10003:13;;9997:19;;;;:42;;-1:-1:-1;10026:13:0;;-1:-1:-1;;;;;10020:19:0;;;10026:13;;10020:19;;9997:42;:71;;;;-1:-1:-1;10049:19:0;;-1:-1:-1;;;;;10043:25:0;;;10049:19;;10043:25;;9997:71;:94;;;;-1:-1:-1;;;;;;10072:19:0;;10086:4;10072:19;;9997:94;:118;;;;-1:-1:-1;;;;;;10095:20:0;;10108:6;10095:20;;9997:118;9994:223;;;10154:12;;10144:6;:22;;10136:63;;;;-1:-1:-1;;;10136:63:0;;10624:2:1;10136:63:0;;;10606:21:1;10663:2;10643:18;;;10636:30;10702;10682:18;;;10675:58;10750:18;;10136:63:0;10422:352:1;10136:63:0;10233:28;10264:24;10282:4;10264:9;:24::i;:::-;10342:19;;10233:55;;-1:-1:-1;10318:43:0;;;;;10405:21;;10425:1;10405:21;:::i;:::-;10381:45;10539:7;:18;;;;-1:-1:-1;10551:6:0;;-1:-1:-1;;;10551:6:0;;;;10550:7;10539:18;:43;;;;-1:-1:-1;10569:13:0;;-1:-1:-1;;;;;10561:21:0;;;10569:13;;10561:21;;10539:43;:58;;;;-1:-1:-1;10586:11:0;;-1:-1:-1;;;10586:11:0;;;;10539:58;:87;;;;-1:-1:-1;;;;;;10602:24:0;;;;;;:18;:24;;;;;;;;10601:25;10539:87;:114;;;;-1:-1:-1;;;;;;10631:22:0;;;;;;:18;:22;;;;;;;;10630:23;10539:114;10535:383;;;10674:38;10691:20;10674:16;:38::i;:::-;10760:21;10804:22;;10800:103;;10851:32;10864:18;10851:12;:32::i;:::-;10655:263;10535:383;9784:1145;;9746:1183;-1:-1:-1;;;;;11005:24:0;;10941:12;11005:24;;;:18;:24;;;;;;10956:4;;11005:24;;;:50;;-1:-1:-1;;;;;;11033:22:0;;;;;;:18;:22;;;;;;;;11005:50;11004:102;;;-1:-1:-1;11069:13:0;;-1:-1:-1;;;;;11061:21:0;;;11069:13;;11061:21;;;;:44;;-1:-1:-1;11092:13:0;;-1:-1:-1;;;;;11086:19:0;;;11092:13;;11086:19;;11061:44;11000:530;;;-1:-1:-1;11133:5:0;11000:530;;;11184:13;;-1:-1:-1;;;;;11176:21:0;;;11184:13;;11176:21;:55;;;;-1:-1:-1;11215:15:0;;-1:-1:-1;;;;;11201:30:0;;;11215:15;;11201:30;;11176:55;11173:164;;;11264:14;;11252:9;:26;11312:9;;11297:12;:24;11173:164;11363:13;;-1:-1:-1;;;;;11357:19:0;;;11363:13;;11357:19;:55;;;;-1:-1:-1;11396:15:0;;-1:-1:-1;;;;;11380:32:0;;;11396:15;;11380:32;;11357:55;11353:166;;;11445:15;;11433:9;:27;11494:9;;11479:12;:24;11353:166;11542:41;11557:4;11563:2;11567:6;11575:7;11542:14;:41::i;:::-;9504:2087;9401:2190;;;:::o;2524:224::-;2644:7;2680:12;2672:6;;;;2664:29;;;;-1:-1:-1;;;2664:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2704:9:0;2716:5;2720:1;2716;:5;:::i;:::-;2704:17;2524:224;-1:-1:-1;;;;;2524:224:0:o;12179:99::-;12236:17;;:34;;-1:-1:-1;;;;;12236:17:0;;;;:34;;;;;12263:6;;12236:17;:34;:17;:34;12263:6;12236:17;:34;;;;;;;;;;;;;;;;;;;;;12179:99;:::o;8321:323::-;8416:7;8474;;8463;:18;;8441:110;;;;-1:-1:-1;;;8441:110:0;;11114:2:1;8441:110:0;;;11096:21:1;11153:2;11133:18;;;11126:30;11192:34;11172:18;;;11165:62;-1:-1:-1;;;11243:18:1;;;11236:40;11293:19;;8441:110:0;10912:406:1;8441:110:0;8562:19;8584:10;:8;:10::i;:::-;8562:32;-1:-1:-1;8612:24:0;:7;8562:32;8612:11;:24::i;:::-;8605:31;8321:323;-1:-1:-1;;;8321:323:0:o;11688:483::-;5980:6;:13;;-1:-1:-1;;;;5980:13:0;-1:-1:-1;;;5980:13:0;;;11790:16:::1;::::0;;11804:1:::1;11790:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11790:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11790:16:0::1;11766:40;;11835:4;11817;11822:1;11817:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11817:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11861:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11861:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11817:7;;11861:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11851:4;11856:1;11851:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11851:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11926:15:::1;::::0;11894:62:::1;::::0;11911:4:::1;::::0;11926:15:::1;11944:11:::0;11894:8:::1;:62::i;:::-;11967:15;::::0;:196:::1;::::0;-1:-1:-1;;;11967:196:0;;-1:-1:-1;;;;;11967:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12048:11;;11967:15:::1;::::0;12090:4;;12117::::1;::::0;12137:15:::1;::::0;11967:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6016:6:0;:14;;-1:-1:-1;;;;6016:14:0;;;-1:-1:-1;;;;11688:483:0:o;12712:282::-;12868:7;12863:28;;12877:14;:12;:14::i;:::-;12902:44;12920:6;12928:9;12939:6;12902:17;:44::i;:::-;12962:7;12957:29;;12971:15;8950:17;;8938:9;:29;8993:15;;8978:12;:30;8894:122;16041:164;16083:7;16104:15;16121;16140:19;:17;:19::i;:::-;16103:56;;-1:-1:-1;16103:56:0;-1:-1:-1;16177:20:0;16103:56;;16177:11;:20::i;:::-;16170:27;;;;16041:164;:::o;3010:132::-;3068:7;3095:39;3099:1;3102;3095:39;;;;;;;;;;;;;;;;;:3;:39::i;8652:234::-;8699:9;;:14;:35;;;;-1:-1:-1;8717:12:0;;:17;8699:35;8695:48;;;8652:234::o;8695:48::-;8775:9;;;8755:17;:29;8813:12;;;8795:15;:30;-1:-1:-1;8838:13:0;;;;8862:16;8652:234::o;13002:610::-;13149:15;13179:23;13217:12;13244:23;13282:12;13309:13;13336:19;13347:7;13336:10;:19::i;:::-;-1:-1:-1;;;;;13384:15:0;;;;;;:7;:15;;;;;;13134:221;;-1:-1:-1;13134:221:0;;-1:-1:-1;13134:221:0;;-1:-1:-1;13134:221:0;-1:-1:-1;13134:221:0;-1:-1:-1;13134:221:0;-1:-1:-1;13384:28:0;;13134:221;13384:19;:28::i;:::-;-1:-1:-1;;;;;13366:15:0;;;;;;;:7;:15;;;;;;:46;;;;13444:18;;;;;;;:39;;13467:15;13444:22;:39::i;:::-;-1:-1:-1;;;;;13423:18:0;;;;;;:7;:18;;;;;:60;13494:16;13504:5;13494:9;:16::i;:::-;13521:23;13533:4;13539;13521:11;:23::i;:::-;13577:9;-1:-1:-1;;;;;13560:44:0;13569:6;-1:-1:-1;;;;;13560:44:0;;13588:15;13560:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13560:44:0;;;;;;;;13123:489;;;;;;13002:610;;;:::o;16213:257::-;16311:7;;16264;;;;4814:15;16379:20;16311:7;4814:15;16379:11;:20::i;:::-;16369:7;:30;16365:61;;;-1:-1:-1;;16409:7:0;;;4814:15;;-1:-1:-1;16213:257:0;-1:-1:-1;16213:257:0:o;16365:61::-;16445:7;;16454;;-1:-1:-1;16213:257:0;-1:-1:-1;16213:257:0:o;3150:223::-;3270:7;3305:12;3298:5;3290:28;;;;-1:-1:-1;;;3290:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3329:9:0;3341:5;3345:1;3341;:5;:::i;14302:620::-;14402:7;14424;14446;14468;14490;14512;14548:23;14573:12;14587:13;14617:45;14629:7;14638:9;;14649:12;;14617:11;:45::i;:::-;14547:115;;;;;;14673:19;14695:10;:8;:10::i;:::-;14673:32;;14717:15;14734:23;14759:12;14788:46;14800:7;14809:4;14815:5;14822:11;14788;:46::i;:::-;14716:118;;-1:-1:-1;14716:118:0;-1:-1:-1;14716:118:0;-1:-1:-1;14885:15:0;;-1:-1:-1;14902:4:0;;-1:-1:-1;14908:5:0;;-1:-1:-1;;;;;14302:620:0;;;;;;;:::o;2380:136::-;2438:7;2465:43;2469:1;2472;2465:43;;;;;;;;;;;;;;;;;:3;:43::i;2193:179::-;2251:7;;2283:5;2287:1;2283;:5;:::i;:::-;2271:17;;2312:1;2307;:6;;2299:46;;;;-1:-1:-1;;;2299:46:0;;12896:2:1;2299:46:0;;;12878:21:1;12935:2;12915:18;;;12908:30;12974:29;12954:18;;;12947:57;13021:18;;2299:46:0;12694:351:1;13891:211:0;13944:19;13966:10;:8;:10::i;:::-;13944:32;-1:-1:-1;13987:13:0;14003:22;:5;13944:32;14003:9;:22::i;:::-;14077:4;14061:22;;;;:7;:22;;;;;;13987:38;;-1:-1:-1;14061:33:0;;13987:38;14061:26;:33::i;:::-;14052:4;14036:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13891:211:0:o;14110:147::-;14188:7;;:17;;14200:4;14188:11;:17::i;:::-;14178:7;:27;14229:10;;:20;;14244:4;14229:14;:20::i;:::-;14216:10;:33;-1:-1:-1;;14110:147:0:o;14930:469::-;15099:7;;;;15193:30;15219:3;15193:21;:7;15205:8;15193:11;:21::i;:::-;:25;;:30::i;:::-;15178:45;-1:-1:-1;15234:13:0;15250:28;15274:3;15250:19;:7;15262:6;15250:11;:19::i;:28::-;15234:44;-1:-1:-1;15289:23:0;15315:28;15234:44;15315:17;:7;15327:4;15315:11;:17::i;:::-;:21;;:28::i;:::-;15289:54;15379:4;;-1:-1:-1;15385:5:0;;-1:-1:-1;14930:469:0;;-1:-1:-1;;;;;14930:469:0:o;15407:534::-;15601:7;;;;15698:24;:7;15710:11;15698;:24::i;:::-;15680:42;-1:-1:-1;15733:12:0;15748:21;:4;15757:11;15748:8;:21::i;:::-;15733:36;-1:-1:-1;15780:13:0;15796:22;:5;15806:11;15796:9;:22::i;:::-;15780:38;-1:-1:-1;15829:23:0;15855:28;15780:38;15855:17;:7;15867:4;15855:11;:17::i;:28::-;15902:7;;;;-1:-1:-1;15928:4:0;;-1:-1:-1;15407:534:0;;-1:-1:-1;;;;;;;15407:534:0:o;2756:246::-;2814:7;2838:1;2843;2838:6;2834:47;;-1:-1:-1;2868:1:0;2861:8;;2834:47;2891:9;2903:5;2907:1;2903;:5;:::i;:::-;2891:17;-1:-1:-1;2936:1:0;2927:5;2931:1;2891:17;2927:5;:::i;:::-;:10;2919:56;;;;-1:-1:-1;;;2919:56:0;;13252:2:1;2919:56:0;;;13234:21:1;13291:2;13271:18;;;13264:30;13330:34;13310:18;;;13303:62;-1:-1:-1;;;13381:18:1;;;13374:31;13422:19;;2919:56:0;13050: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:180::-;3078:6;3131:2;3119:9;3110:7;3106:23;3102:32;3099:52;;;3147:1;3144;3137:12;3099:52;-1:-1:-1;3170:23:1;;3019:180;-1:-1:-1;3019:180:1:o;3336:349::-;3408:2;3402:9;3450:3;3438:16;;3484:18;3469:34;;3505:22;;;3466:62;3463:185;;;3570:10;3565:3;3561:20;3558:1;3551:31;3605:4;3602:1;3595:15;3633:4;3630:1;3623:15;3463:185;3664:2;3657:22;3336:349;:::o;3690:344::-;3757:2;3751:9;3799:3;3787:16;;3833:18;3818:34;;3854:22;;;3815:62;3812:185;;;3919:10;3914:3;3910:20;3907:1;3900:31;3954:4;3951:1;3944:15;3982:4;3979:1;3972:15;4039:1945;4167:6;4198:4;4243:2;4231:9;4222:7;4218:23;4214:32;4211:52;;;4259:1;4256;4249:12;4211:52;4282:4;4329:7;4324:2;4313:9;4309:18;4305:32;4295:60;;4351:1;4348;4341:12;4295:60;4375:22;;:::i;:::-;4445:18;;;;4419:3;4475:19;;;4472:39;;;4507:1;4504;4497:12;4472:39;4531:9;4549:1405;4565:6;4560:3;4557:15;4549:1405;;;4651:7;4646:2;4641:3;4637:12;4633:26;4623:124;;4701:1;4730:2;4726;4719:14;4623:124;4773:17;;:::i;:::-;4816:5;4859:6;4854:3;4850:16;4895:7;4885:8;4882:21;4879:111;;;4944:1;4973:2;4969;4962:14;4879:111;5016:3;5032:847;5050:8;5043:5;5040:19;5032:847;;;5149:7;5144:2;5137:5;5133:14;5129:28;5119:142;;5207:1;5240:2;5236;5229:14;5119:142;5291:22;;:::i;:::-;5343:5;5392:3;5385:5;5381:15;5429:7;5419:8;5416:21;5413:127;;;5486:1;5519:2;5515;5508:14;5413:127;5570:5;5592:194;5610:8;5603:5;5600:19;5592:194;;;5702:19;;5688:34;;5763:4;5752:16;;;;5631;5592:194;;;-1:-1:-1;;5803:20:1;;-1:-1:-1;5860:4:1;5849:16;;;;5082:3;5071:15;5032:847;;;-1:-1:-1;;5892:18:1;;-1:-1:-1;5939:4:1;5930:14;;;;4591:6;4582:16;4549:1405;;;-1:-1:-1;5973:5:1;4039:1945;-1:-1:-1;;;;;;4039:1945:1:o;5989:388::-;6057:6;6065;6118:2;6106:9;6097:7;6093:23;6089:32;6086:52;;;6134:1;6131;6124:12;6086:52;6173:9;6160:23;6192:31;6217:5;6192:31;:::i;:::-;6242:5;-1:-1:-1;6299:2:1;6284:18;;6271:32;6312:33;6271:32;6312:33;:::i;:::-;6364:7;6354:17;;;5989:388;;;;;:::o;6382:356::-;6584:2;6566:21;;;6603:18;;;6596:30;6662:34;6657:2;6642:18;;6635:62;6729:2;6714:18;;6382:356::o;6743:127::-;6804:10;6799:3;6795:20;6792:1;6785:31;6835:4;6832:1;6825:15;6859:4;6856:1;6849:15;6875:168;6948:9;;;6979;;6996:15;;;6990:22;;6976:37;6966:71;;7017:18;;:::i;7048:217::-;7088:1;7114;7104:132;;7158:10;7153:3;7149:20;7146:1;7139:31;7193:4;7190:1;7183:15;7221:4;7218:1;7211:15;7104:132;-1:-1:-1;7250:9:1;;7048:217::o;7270:127::-;7331:10;7326:3;7322:20;7319:1;7312:31;7362:4;7359:1;7352:15;7386:4;7383:1;7376:15;7402:148;7490:4;7469:12;;;7483;;;7465:31;;7508:13;;7505:39;;;7524:18;;:::i;10779:128::-;10846:9;;;10867:11;;;10864:37;;;10881:18;;:::i;11323:251::-;11393:6;11446:2;11434:9;11425:7;11421:23;11417:32;11414:52;;;11462:1;11459;11452:12;11414:52;11494:9;11488:16;11513:31;11538:5;11513:31;:::i;11579:980::-;11841:4;11889:3;11878:9;11874:19;11920:6;11909:9;11902:25;11946:2;11984:6;11979:2;11968:9;11964:18;11957:34;12027:3;12022:2;12011:9;12007:18;12000:31;12051:6;12086;12080:13;12117:6;12109;12102:22;12155:3;12144:9;12140:19;12133:26;;12194:2;12186:6;12182:15;12168:29;;12215:1;12225:195;12239:6;12236:1;12233:13;12225:195;;;12304:13;;-1:-1:-1;;;;;12300:39:1;12288:52;;12395:15;;;;12360:12;;;;12336:1;12254:9;12225:195;;;-1:-1:-1;;;;;;;12476:32:1;;;;12471:2;12456:18;;12449:60;-1:-1:-1;;;12540:3:1;12525:19;12518:35;12437:3;11579:980;-1:-1:-1;;;11579:980:1:o;12564:125::-;12629:9;;;12650:10;;;12647:36;;;12663:18;;:::i

Swarm Source

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