ETH Price: $2,733.45 (+0.96%)

Token

General TAO Ventures (gTAO)
 

Overview

Max Total Supply

1,000,000 gTAO

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 gTAO

Value
$0.00
0xa0857Fde1E68732E7CAc163E67dD8cEe48817bc1
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:
gTAO

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// Website: https://gtao.tech
// X: https://x.com/gTAOtech
// Telegram: https://t.me/gTAOtech

pragma solidity 0.8.25;

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

    using SafeMath for uint256;
 
    string private constant _name = unicode"General TAO Ventures";
    string private constant _symbol = unicode"gTAO";
    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 _tFeeTotal;
        
    uint256 private _redFeeOnBuy = 0;
    uint256 private _devFeesOnBuy = 20;
    uint256 private _redFeeOnSell = 0;
    uint256 private _devFeesOnSell = 20;
        
    uint256 private _redFee = _redFeeOnSell;
    uint256 private _devFees = _devFeesOnSell;

    uint256 private _previousredFee = _redFee;
    uint256 private _previousdevFees = _devFees;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _devAddress = payable(0x1b8CbA93F6E217f185f7FCD09ef1B5D51DDDeFa0);
    address payable private _mktAddress = payable(0x1b8CbA93F6E217f185f7FCD09ef1B5D51DDDeFa0);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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


    bool public _autoAddLiquidity;


    uint256 public _maxTxnAmount = 5000 * 10**9;
    uint256 public _maxWalletSize = 5000 * 10**9;
    uint256 public _swapTokensAtAmount = 5 * 10**9;

    event maxTxnAmountUpdated(uint256 _maxTxnAmount);
    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[_devAddress] = true;
        _isExcludedFromFee[_mktAddress] = 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 = _getRates();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redFee == 0 && _devFees == 0) return;

        _previousredFee = _redFee;
        _previousdevFees = _devFees;

        _redFee = 0;
        _devFees = 0;
    }

    function undoTaxes() private {
        _redFee = _previousredFee;
        _devFees = _previousdevFees;
    }

    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 (!openTrading) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxnAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxnAmount)
            {
                contractTokenBalance = _maxTxnAmount;
            }

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

        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)) {
                _redFee = _redFeeOnBuy;
                _devFees = _devFeesOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redFee = _redFeeOnSell;
                _devFees = _devFeesOnSell;
            }

        }

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

    function enableTrading(bool _openTrading) public onlyOwner {
        openTrading = _openTrading;
    }

    function manualSwaps() external {
        require(_msgSender() == _devAddress || _msgSender() == _mktAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSends() external {
        require(_msgSender() == _devAddress || _msgSender() == _mktAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blacklist(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unBlackist(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

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

    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 = _getRates();
        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, _redFee, _devFees);
        uint256 currentRate = _getRates();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redFee,
        uint256 devFees
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redFee).div(100);
        uint256 tTeam = tAmount.mul(devFees).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 _getRates() 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 updateFee (uint256 redFeeOnBuy, uint256 redFeeOnSell, uint256 devFeesOnBuy, uint256 devFeesOnSell) public onlyOwner {
        _redFeeOnBuy = redFeeOnBuy;
        _redFeeOnSell = redFeeOnSell;
        _devFeesOnBuy = devFeesOnBuy;
        _devFeesOnSell = devFeesOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setmaxTxAmount(uint256 maxTxnAmount) public onlyOwner {
        _maxTxnAmount = maxTxnAmount;
    }

    function setMaxWalletsSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

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

}

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":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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxnAmount","type":"uint256"}],"name":"maxTxnAmountUpdated","type":"event"},{"inputs":[],"name":"_autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxnAmount","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_openTrading","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwaps","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":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletsSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxnAmount","type":"uint256"}],"name":"setmaxTxAmount","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unBlackist","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"},{"inputs":[{"internalType":"uint256","name":"redFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"devFeesOnBuy","type":"uint256"},{"internalType":"uint256","name":"devFeesOnSell","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261001666038d7ea4c680005f1961033f565b610021905f1961035e565b6006555f600881905560146009819055600a829055600b819055600c829055600d819055600e91909155600f55601280546001600160a01b0319908116731b8cba93f6e217f185f7fcd09ef1b5d51dddefa09081179092556013805490911690911790556015805461ffff60a81b1916600160b01b17905565048c27395000601681905560175564012a05f2006018553480156100bc575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015610175573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101999190610383565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102089190610383565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610252573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102769190610383565b601580546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c6800060405161033191815260200190565b60405180910390a3506103b0565b5f8261035957634e487b7160e01b5f52601260045260245ffd5b500690565b8181038181111561037d57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215610393575f80fd5b81516001600160a01b03811681146103a9575f80fd5b9392505050565b611d1e806103bd5f395ff3fe6080604052600436106101d3575f3560e01c806370a08231116100fd578063bfd7928411610092578063df7bcd5711610062578063df7bcd5714610593578063ea9fae80146105a7578063f275f64b146105c6578063f2fde38b146105e5575f80fd5b8063bfd79284146104e3578063c492f04614610511578063dd62ed3e14610530578063deb1065a14610574575f80fd5b80638f9a55c0116100cd5780638f9a55c01461046457806395d89b411461047957806398a5c315146104a5578063a9059cbb146104c4575f80fd5b806370a08231146103ea578063715018a6146104095780637f2feddc1461041d5780638da5cb5b14610448575f80fd5b80632fd689e31161017357806365e47de21161014357806365e47de21461037857806367a5ea2a146103975780636912652c146103ab5780636d8aa8f8146103cb575f80fd5b80632fd689e31461030a578063313ce5671461031f5780633a065f981461033a57806349bd5a5e14610359575f80fd5b80631694505e116101ae5780631694505e1461027c57806318160ddd146102b35780631de12516146102d657806323b872dd146102eb575f80fd5b8063041f173f146101de57806306fdde03146101ff578063095ea7b31461024d575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506101fd6101f83660046118e1565b610604565b005b34801561020a575f80fd5b5060408051808201909152601481527347656e6572616c2054414f2056656e747572657360601b60208201525b60405161024491906119a1565b60405180910390f35b348015610258575f80fd5b5061026c6102673660046119d6565b610695565b6040519015158152602001610244565b348015610287575f80fd5b5060145461029b906001600160a01b031681565b6040516001600160a01b039091168152602001610244565b3480156102be575f80fd5b5066038d7ea4c680005b604051908152602001610244565b3480156102e1575f80fd5b506102c860165481565b3480156102f6575f80fd5b5061026c610305366004611a00565b6106ab565b348015610315575f80fd5b506102c860185481565b34801561032a575f80fd5b5060405160098152602001610244565b348015610345575f80fd5b506101fd610354366004611a3e565b610712565b348015610364575f80fd5b5060155461029b906001600160a01b031681565b348015610383575f80fd5b506101fd610392366004611a3e565b610740565b3480156103a2575f80fd5b506101fd61076e565b3480156103b6575f80fd5b5060155461026c90600160b81b900460ff1681565b3480156103d6575f80fd5b506101fd6103e5366004611a64565b6107b8565b3480156103f5575f80fd5b506102c8610404366004611a7d565b6107ff565b348015610414575f80fd5b506101fd610820565b348015610428575f80fd5b506102c8610437366004611a7d565b60116020525f908152604090205481565b348015610453575f80fd5b505f546001600160a01b031661029b565b34801561046f575f80fd5b506102c860175481565b348015610484575f80fd5b506040805180820190915260048152636754414f60e01b6020820152610237565b3480156104b0575f80fd5b506101fd6104bf366004611a3e565b610891565b3480156104cf575f80fd5b5061026c6104de3660046119d6565b6108bf565b3480156104ee575f80fd5b5061026c6104fd366004611a7d565b60106020525f908152604090205460ff1681565b34801561051c575f80fd5b506101fd61052b366004611a98565b6108cb565b34801561053b575f80fd5b506102c861054a366004611b15565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561057f575f80fd5b506101fd61058e366004611a7d565b61095e565b34801561059e575f80fd5b506101fd6109a7565b3480156105b2575f80fd5b506101fd6105c1366004611b4c565b6109f9565b3480156105d1575f80fd5b506101fd6105e0366004611a64565b610a36565b3480156105f0575f80fd5b506101fd6105ff366004611a7d565b610a7d565b5f546001600160a01b031633146106365760405162461bcd60e51b815260040161062d90611b7b565b60405180910390fd5b5f5b815181101561069157600160105f84848151811061065857610658611bb0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610638565b5050565b5f6106a1338484610b64565b5060015b92915050565b5f6106b7848484610c87565b610708843361070385604051806060016040528060288152602001611cc1602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906111b7565b610b64565b5060019392505050565b5f546001600160a01b0316331461073b5760405162461bcd60e51b815260040161062d90611b7b565b601755565b5f546001600160a01b031633146107695760405162461bcd60e51b815260040161062d90611b7b565b601655565b6012546001600160a01b0316336001600160a01b031614806107a357506013546001600160a01b0316336001600160a01b0316145b6107ab575f80fd5b476107b5816111ef565b50565b5f546001600160a01b031633146107e15760405162461bcd60e51b815260040161062d90611b7b565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b0381165f908152600260205260408120546106a590611226565b5f546001600160a01b031633146108495760405162461bcd60e51b815260040161062d90611b7b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108ba5760405162461bcd60e51b815260040161062d90611b7b565b601855565b5f6106a1338484610c87565b5f546001600160a01b031633146108f45760405162461bcd60e51b815260040161062d90611b7b565b5f5b82811015610958578160055f86868581811061091457610914611bb0565b90506020020160208101906109299190611a7d565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016108f6565b50505050565b5f546001600160a01b031633146109875760405162461bcd60e51b815260040161062d90611b7b565b6001600160a01b03165f908152601060205260409020805460ff19169055565b6012546001600160a01b0316336001600160a01b031614806109dc57506013546001600160a01b0316336001600160a01b0316145b6109e4575f80fd5b5f6109ee306107ff565b90506107b5816112a8565b5f546001600160a01b03163314610a225760405162461bcd60e51b815260040161062d90611b7b565b600893909355600a91909155600955600b55565b5f546001600160a01b03163314610a5f5760405162461bcd60e51b815260040161062d90611b7b565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b03163314610aa65760405162461bcd60e51b815260040161062d90611b7b565b6001600160a01b038116610b0b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161062d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610bc65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161062d565b6001600160a01b038216610c275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161062d565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ceb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161062d565b6001600160a01b038216610d4d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161062d565b5f8111610dae5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161062d565b5f546001600160a01b03848116911614801590610dd857505f546001600160a01b03838116911614155b156110b357601554600160a01b900460ff16610e70575f546001600160a01b03848116911614610e705760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161062d565b601654811115610ec25760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161062d565b6001600160a01b0383165f9081526010602052604090205460ff16158015610f0257506001600160a01b0382165f9081526010602052604090205460ff16155b610f5a5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161062d565b6015546001600160a01b03838116911614610fdf5760175481610f7c846107ff565b610f869190611bd8565b10610fdf5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161062d565b5f610fe9306107ff565b6018546016549192508210159082106110025760165491505b8080156110195750601554600160a81b900460ff16155b801561103357506015546001600160a01b03868116911614155b80156110485750601554600160b01b900460ff165b801561106c57506001600160a01b0385165f9081526005602052604090205460ff16155b801561109057506001600160a01b0384165f9081526005602052604090205460ff16155b156110b05761109e826112a8565b4780156110ae576110ae476111ef565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff16806110f357506001600160a01b0383165f9081526005602052604090205460ff165b8061112557506015546001600160a01b0385811691161480159061112557506015546001600160a01b03848116911614155b1561113157505f6111ab565b6015546001600160a01b03858116911614801561115c57506014546001600160a01b03848116911614155b1561116e57600854600c55600954600d555b6015546001600160a01b03848116911614801561119957506014546001600160a01b03858116911614155b156111ab57600a54600c55600b54600d555b61095884848484611418565b5f81848411156111da5760405162461bcd60e51b815260040161062d91906119a1565b505f6111e68486611beb565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610691573d5f803e3d5ffd5b5f60065482111561128c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161062d565b5f611295611446565b90506112a18382611467565b9392505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112ee576112ee611bb0565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113699190611bfe565b8160018151811061137c5761137c611bb0565b6001600160a01b0392831660209182029290920101526014546113a29130911684610b64565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906113da9085905f90869030904290600401611c19565b5f604051808303815f87803b1580156113f1575f80fd5b505af1158015611403573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b80611425576114256114a8565b6114308484846114d5565b8061095857610958600e54600c55600f54600d55565b5f805f6114516115c6565b90925090506114608282611467565b9250505090565b5f6112a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611603565b600c541580156114b85750600d54155b156114bf57565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806114e48761162f565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506115159087611684565b6001600160a01b03808b165f9081526002602052604080822093909355908a168152205461154390866116c5565b6001600160a01b0389165f9081526002602052604090205561156481611723565b61156e8483611769565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115b391815260200190565b60405180910390a3505050505050505050565b6006545f90819066038d7ea4c680006115df8282611467565b8210156115fa5750506006549266038d7ea4c6800092509050565b90939092509050565b5f81836116235760405162461bcd60e51b815260040161062d91906119a1565b505f6111e68486611c8a565b5f805f805f805f805f6116478a600c54600d5461178d565b9250925092505f611656611446565b90505f805f6116678e8787876117df565b919e509c509a509598509396509194505050505091939550919395565b5f6112a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111b7565b5f806116d18385611bd8565b9050838110156112a15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161062d565b5f61172c611446565b90505f611739838361182b565b305f9081526002602052604090205490915061175590826116c5565b305f90815260026020526040902055505050565b6006546117769083611684565b60065560075461178690826116c5565b6007555050565b5f8080806117a660646117a0898961182b565b90611467565b90505f6117b860646117a08a8961182b565b90505f6117cf826117c98b86611684565b90611684565b9992985090965090945050505050565b5f8080806117ed888661182b565b90505f6117fa888761182b565b90505f611807888861182b565b90505f611818826117c98686611684565b939b939a50919850919650505050505050565b5f825f0361183a57505f6106a5565b5f6118458385611ca9565b9050826118528583611c8a565b146112a15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161062d565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b03811681146107b5575f80fd5b80356118dc816118bd565b919050565b5f60208083850312156118f2575f80fd5b823567ffffffffffffffff80821115611909575f80fd5b818501915085601f83011261191c575f80fd5b81358181111561192e5761192e6118a9565b8060051b604051601f19603f83011681018181108582111715611953576119536118a9565b604052918252848201925083810185019188831115611970575f80fd5b938501935b8285101561199557611986856118d1565b84529385019392850192611975565b98975050505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156119e7575f80fd5b82356119f2816118bd565b946020939093013593505050565b5f805f60608486031215611a12575f80fd5b8335611a1d816118bd565b92506020840135611a2d816118bd565b929592945050506040919091013590565b5f60208284031215611a4e575f80fd5b5035919050565b803580151581146118dc575f80fd5b5f60208284031215611a74575f80fd5b6112a182611a55565b5f60208284031215611a8d575f80fd5b81356112a1816118bd565b5f805f60408486031215611aaa575f80fd5b833567ffffffffffffffff80821115611ac1575f80fd5b818601915086601f830112611ad4575f80fd5b813581811115611ae2575f80fd5b8760208260051b8501011115611af6575f80fd5b602092830195509350611b0c9186019050611a55565b90509250925092565b5f8060408385031215611b26575f80fd5b8235611b31816118bd565b91506020830135611b41816118bd565b809150509250929050565b5f805f8060808587031215611b5f575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106a5576106a5611bc4565b818103818111156106a5576106a5611bc4565b5f60208284031215611c0e575f80fd5b81516112a1816118bd565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c695784516001600160a01b031683529383019391830191600101611c44565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611ca457634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176106a5576106a5611bc456fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220372a0a3a22b19ab9dc4df0741602ec42415865e531bc468396a2a096e0796b3564736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101d3575f3560e01c806370a08231116100fd578063bfd7928411610092578063df7bcd5711610062578063df7bcd5714610593578063ea9fae80146105a7578063f275f64b146105c6578063f2fde38b146105e5575f80fd5b8063bfd79284146104e3578063c492f04614610511578063dd62ed3e14610530578063deb1065a14610574575f80fd5b80638f9a55c0116100cd5780638f9a55c01461046457806395d89b411461047957806398a5c315146104a5578063a9059cbb146104c4575f80fd5b806370a08231146103ea578063715018a6146104095780637f2feddc1461041d5780638da5cb5b14610448575f80fd5b80632fd689e31161017357806365e47de21161014357806365e47de21461037857806367a5ea2a146103975780636912652c146103ab5780636d8aa8f8146103cb575f80fd5b80632fd689e31461030a578063313ce5671461031f5780633a065f981461033a57806349bd5a5e14610359575f80fd5b80631694505e116101ae5780631694505e1461027c57806318160ddd146102b35780631de12516146102d657806323b872dd146102eb575f80fd5b8063041f173f146101de57806306fdde03146101ff578063095ea7b31461024d575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506101fd6101f83660046118e1565b610604565b005b34801561020a575f80fd5b5060408051808201909152601481527347656e6572616c2054414f2056656e747572657360601b60208201525b60405161024491906119a1565b60405180910390f35b348015610258575f80fd5b5061026c6102673660046119d6565b610695565b6040519015158152602001610244565b348015610287575f80fd5b5060145461029b906001600160a01b031681565b6040516001600160a01b039091168152602001610244565b3480156102be575f80fd5b5066038d7ea4c680005b604051908152602001610244565b3480156102e1575f80fd5b506102c860165481565b3480156102f6575f80fd5b5061026c610305366004611a00565b6106ab565b348015610315575f80fd5b506102c860185481565b34801561032a575f80fd5b5060405160098152602001610244565b348015610345575f80fd5b506101fd610354366004611a3e565b610712565b348015610364575f80fd5b5060155461029b906001600160a01b031681565b348015610383575f80fd5b506101fd610392366004611a3e565b610740565b3480156103a2575f80fd5b506101fd61076e565b3480156103b6575f80fd5b5060155461026c90600160b81b900460ff1681565b3480156103d6575f80fd5b506101fd6103e5366004611a64565b6107b8565b3480156103f5575f80fd5b506102c8610404366004611a7d565b6107ff565b348015610414575f80fd5b506101fd610820565b348015610428575f80fd5b506102c8610437366004611a7d565b60116020525f908152604090205481565b348015610453575f80fd5b505f546001600160a01b031661029b565b34801561046f575f80fd5b506102c860175481565b348015610484575f80fd5b506040805180820190915260048152636754414f60e01b6020820152610237565b3480156104b0575f80fd5b506101fd6104bf366004611a3e565b610891565b3480156104cf575f80fd5b5061026c6104de3660046119d6565b6108bf565b3480156104ee575f80fd5b5061026c6104fd366004611a7d565b60106020525f908152604090205460ff1681565b34801561051c575f80fd5b506101fd61052b366004611a98565b6108cb565b34801561053b575f80fd5b506102c861054a366004611b15565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561057f575f80fd5b506101fd61058e366004611a7d565b61095e565b34801561059e575f80fd5b506101fd6109a7565b3480156105b2575f80fd5b506101fd6105c1366004611b4c565b6109f9565b3480156105d1575f80fd5b506101fd6105e0366004611a64565b610a36565b3480156105f0575f80fd5b506101fd6105ff366004611a7d565b610a7d565b5f546001600160a01b031633146106365760405162461bcd60e51b815260040161062d90611b7b565b60405180910390fd5b5f5b815181101561069157600160105f84848151811061065857610658611bb0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610638565b5050565b5f6106a1338484610b64565b5060015b92915050565b5f6106b7848484610c87565b610708843361070385604051806060016040528060288152602001611cc1602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906111b7565b610b64565b5060019392505050565b5f546001600160a01b0316331461073b5760405162461bcd60e51b815260040161062d90611b7b565b601755565b5f546001600160a01b031633146107695760405162461bcd60e51b815260040161062d90611b7b565b601655565b6012546001600160a01b0316336001600160a01b031614806107a357506013546001600160a01b0316336001600160a01b0316145b6107ab575f80fd5b476107b5816111ef565b50565b5f546001600160a01b031633146107e15760405162461bcd60e51b815260040161062d90611b7b565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b0381165f908152600260205260408120546106a590611226565b5f546001600160a01b031633146108495760405162461bcd60e51b815260040161062d90611b7b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108ba5760405162461bcd60e51b815260040161062d90611b7b565b601855565b5f6106a1338484610c87565b5f546001600160a01b031633146108f45760405162461bcd60e51b815260040161062d90611b7b565b5f5b82811015610958578160055f86868581811061091457610914611bb0565b90506020020160208101906109299190611a7d565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016108f6565b50505050565b5f546001600160a01b031633146109875760405162461bcd60e51b815260040161062d90611b7b565b6001600160a01b03165f908152601060205260409020805460ff19169055565b6012546001600160a01b0316336001600160a01b031614806109dc57506013546001600160a01b0316336001600160a01b0316145b6109e4575f80fd5b5f6109ee306107ff565b90506107b5816112a8565b5f546001600160a01b03163314610a225760405162461bcd60e51b815260040161062d90611b7b565b600893909355600a91909155600955600b55565b5f546001600160a01b03163314610a5f5760405162461bcd60e51b815260040161062d90611b7b565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b03163314610aa65760405162461bcd60e51b815260040161062d90611b7b565b6001600160a01b038116610b0b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161062d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610bc65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161062d565b6001600160a01b038216610c275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161062d565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ceb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161062d565b6001600160a01b038216610d4d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161062d565b5f8111610dae5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161062d565b5f546001600160a01b03848116911614801590610dd857505f546001600160a01b03838116911614155b156110b357601554600160a01b900460ff16610e70575f546001600160a01b03848116911614610e705760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161062d565b601654811115610ec25760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161062d565b6001600160a01b0383165f9081526010602052604090205460ff16158015610f0257506001600160a01b0382165f9081526010602052604090205460ff16155b610f5a5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161062d565b6015546001600160a01b03838116911614610fdf5760175481610f7c846107ff565b610f869190611bd8565b10610fdf5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161062d565b5f610fe9306107ff565b6018546016549192508210159082106110025760165491505b8080156110195750601554600160a81b900460ff16155b801561103357506015546001600160a01b03868116911614155b80156110485750601554600160b01b900460ff165b801561106c57506001600160a01b0385165f9081526005602052604090205460ff16155b801561109057506001600160a01b0384165f9081526005602052604090205460ff16155b156110b05761109e826112a8565b4780156110ae576110ae476111ef565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff16806110f357506001600160a01b0383165f9081526005602052604090205460ff165b8061112557506015546001600160a01b0385811691161480159061112557506015546001600160a01b03848116911614155b1561113157505f6111ab565b6015546001600160a01b03858116911614801561115c57506014546001600160a01b03848116911614155b1561116e57600854600c55600954600d555b6015546001600160a01b03848116911614801561119957506014546001600160a01b03858116911614155b156111ab57600a54600c55600b54600d555b61095884848484611418565b5f81848411156111da5760405162461bcd60e51b815260040161062d91906119a1565b505f6111e68486611beb565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610691573d5f803e3d5ffd5b5f60065482111561128c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161062d565b5f611295611446565b90506112a18382611467565b9392505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112ee576112ee611bb0565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113699190611bfe565b8160018151811061137c5761137c611bb0565b6001600160a01b0392831660209182029290920101526014546113a29130911684610b64565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906113da9085905f90869030904290600401611c19565b5f604051808303815f87803b1580156113f1575f80fd5b505af1158015611403573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b80611425576114256114a8565b6114308484846114d5565b8061095857610958600e54600c55600f54600d55565b5f805f6114516115c6565b90925090506114608282611467565b9250505090565b5f6112a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611603565b600c541580156114b85750600d54155b156114bf57565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806114e48761162f565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506115159087611684565b6001600160a01b03808b165f9081526002602052604080822093909355908a168152205461154390866116c5565b6001600160a01b0389165f9081526002602052604090205561156481611723565b61156e8483611769565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115b391815260200190565b60405180910390a3505050505050505050565b6006545f90819066038d7ea4c680006115df8282611467565b8210156115fa5750506006549266038d7ea4c6800092509050565b90939092509050565b5f81836116235760405162461bcd60e51b815260040161062d91906119a1565b505f6111e68486611c8a565b5f805f805f805f805f6116478a600c54600d5461178d565b9250925092505f611656611446565b90505f805f6116678e8787876117df565b919e509c509a509598509396509194505050505091939550919395565b5f6112a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111b7565b5f806116d18385611bd8565b9050838110156112a15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161062d565b5f61172c611446565b90505f611739838361182b565b305f9081526002602052604090205490915061175590826116c5565b305f90815260026020526040902055505050565b6006546117769083611684565b60065560075461178690826116c5565b6007555050565b5f8080806117a660646117a0898961182b565b90611467565b90505f6117b860646117a08a8961182b565b90505f6117cf826117c98b86611684565b90611684565b9992985090965090945050505050565b5f8080806117ed888661182b565b90505f6117fa888761182b565b90505f611807888861182b565b90505f611818826117c98686611684565b939b939a50919850919650505050505050565b5f825f0361183a57505f6106a5565b5f6118458385611ca9565b9050826118528583611c8a565b146112a15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161062d565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b03811681146107b5575f80fd5b80356118dc816118bd565b919050565b5f60208083850312156118f2575f80fd5b823567ffffffffffffffff80821115611909575f80fd5b818501915085601f83011261191c575f80fd5b81358181111561192e5761192e6118a9565b8060051b604051601f19603f83011681018181108582111715611953576119536118a9565b604052918252848201925083810185019188831115611970575f80fd5b938501935b8285101561199557611986856118d1565b84529385019392850192611975565b98975050505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156119e7575f80fd5b82356119f2816118bd565b946020939093013593505050565b5f805f60608486031215611a12575f80fd5b8335611a1d816118bd565b92506020840135611a2d816118bd565b929592945050506040919091013590565b5f60208284031215611a4e575f80fd5b5035919050565b803580151581146118dc575f80fd5b5f60208284031215611a74575f80fd5b6112a182611a55565b5f60208284031215611a8d575f80fd5b81356112a1816118bd565b5f805f60408486031215611aaa575f80fd5b833567ffffffffffffffff80821115611ac1575f80fd5b818601915086601f830112611ad4575f80fd5b813581811115611ae2575f80fd5b8760208260051b8501011115611af6575f80fd5b602092830195509350611b0c9186019050611a55565b90509250925092565b5f8060408385031215611b26575f80fd5b8235611b31816118bd565b91506020830135611b41816118bd565b809150509250929050565b5f805f8060808587031215611b5f575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106a5576106a5611bc4565b818103818111156106a5576106a5611bc4565b5f60208284031215611c0e575f80fd5b81516112a1816118bd565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c695784516001600160a01b031683529383019391830191600101611c44565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611ca457634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176106a5576106a5611bc456fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220372a0a3a22b19ab9dc4df0741602ec42415865e531bc468396a2a096e0796b3564736f6c63430008190033

Deployed Bytecode Sourcemap

4127:13477:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12780:169;;;;;;;;;;-1:-1:-1;12780:169:0;;;;;:::i;:::-;;:::i;:::-;;6647:83;;;;;;;;;;-1:-1:-1;6717:5:0;;;;;;;;;;;;-1:-1:-1;;;6717:5:0;;;;6647:83;;;;;;;:::i;:::-;;;;;;;;7572:193;;;;;;;;;;-1:-1:-1;7572:193:0;;;;;:::i;:::-;;:::i;:::-;;;2455:14:1;;2448:22;2430:41;;2418:2;2403:18;7572:193:0;2290:187:1;5476:41:0;;;;;;;;;;-1:-1:-1;5476:41:0;;;;-1:-1:-1;;;;;5476:41:0;;;;;;-1:-1:-1;;;;;2672:32:1;;;2654:51;;2642:2;2627:18;5476:41:0;2482:229:1;6924:95:0;;;;;;;;;;-1:-1:-1;4705:15:0;6924:95;;;2862:25:1;;;2850:2;2835:18;6924:95:0;2716:177:1;5708:43:0;;;;;;;;;;;;;;;;7773:446;;;;;;;;;;-1:-1:-1;7773:446:0;;;;;:::i;:::-;;:::i;5809:46::-;;;;;;;;;;;;;;;;6833:83;;;;;;;;;;-1:-1:-1;6833:83:0;;4371:1;3501:36:1;;3489:2;3474:18;6833:83:0;3359:184:1;17241:116:0;;;;;;;;;;-1:-1:-1;17241:116:0;;;;;:::i;:::-;;:::i;5524:28::-;;;;;;;;;;-1:-1:-1;5524:28:0;;;;-1:-1:-1;;;;;5524:28:0;;;17123:110;;;;;;;;;;-1:-1:-1;17123:110:0;;;;;:::i;:::-;;:::i;12550:222::-;;;;;;;;;;;;;:::i;5668:29::-;;;;;;;;;;-1:-1:-1;5668:29:0;;;;-1:-1:-1;;;5668:29:0;;;;;;16983:101;;;;;;;;;;-1:-1:-1;16983:101:0;;;;;:::i;:::-;;:::i;7027:138::-;;;;;;;;;;-1:-1:-1;7027:138:0;;;;;:::i;:::-;;:::i;1614:148::-;;;;;;;;;;;;;:::i;5232:43::-;;;;;;;;;;-1:-1:-1;5232:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1400:79;;;;;;;;;;-1:-1:-1;1438:7:0;1465:6;-1:-1:-1;;;;;1465:6:0;1400:79;;5758:44;;;;;;;;;;;;;;;;6738:87;;;;;;;;;;-1:-1:-1;6810:7:0;;;;;;;;;;;;-1:-1:-1;;;6810:7:0;;;;6738:87;;16792:139;;;;;;;;;;-1:-1:-1;16792:139:0;;;;;:::i;:::-;;:::i;7173:199::-;;;;;;;;;;-1:-1:-1;7173:199:0;;;;;:::i;:::-;;:::i;5194:36::-;;;;;;;;;;-1:-1:-1;5194:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17365:234;;;;;;;;;;-1:-1:-1;17365:234:0;;;;;:::i;:::-;;:::i;7380:184::-;;;;;;;;;;-1:-1:-1;7380:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7529:18:0;;;7497:7;7529:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7380:184;12957:92;;;;;;;;;;-1:-1:-1;12957:92:0;;;;;:::i;:::-;;:::i;12319:223::-;;;;;;;;;;;;;:::i;16451:289::-;;;;;;;;;;-1:-1:-1;16451:289:0;;;;;:::i;:::-;;:::i;12207:104::-;;;;;;;;;;-1:-1:-1;12207:104:0;;;;;:::i;:::-;;:::i;1770:244::-;;;;;;;;;;-1:-1:-1;1770:244:0;;;;;:::i;:::-;;:::i;12780:169::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;;;;;;;;;12856:9:::1;12851:91;12875:5;:12;12871:1;:16;12851:91;;;12926:4;12909;:14;12914:5;12920:1;12914:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12909:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12909:14:0;:21;;-1:-1:-1;;12909:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12889:3:0::1;12851:91;;;;12780:169:::0;:::o;7572:193::-;7674:4;7696:39;239:10;7719:7;7728:6;7696:8;:39::i;:::-;-1:-1:-1;7753:4:0;7572:193;;;;;:::o;7773:446::-;7905:4;7922:36;7932:6;7940:9;7951:6;7922:9;:36::i;:::-;7969:220;7992:6;239:10;8040:138;8096:6;8040:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8040:19:0;;;;;;:11;:19;;;;;;;;239:10;8040:33;;;;;;;;;;:37;:138::i;:::-;7969:8;:220::i;:::-;-1:-1:-1;8207:4:0;7773:446;;;;;:::o;17241:116::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;17319:14:::1;:30:::0;17241:116::o;17123:110::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;17197:13:::1;:28:::0;17123:110::o;12550:222::-;12617:11;;-1:-1:-1;;;;;12617:11:0;239:10;-1:-1:-1;;;;;12601:27:0;;:58;;;-1:-1:-1;12648:11:0;;-1:-1:-1;;;;;12648:11:0;239:10;-1:-1:-1;;;;;12632:27:0;;12601:58;12593:67;;;;;;12700:21;12732:32;12700:21;12732:12;:32::i;:::-;12582:190;12550:222::o;16983:101::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;17050:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17050:26:0::1;-1:-1:-1::0;;;;17050:26:0;;::::1;::::0;;;::::1;::::0;;16983:101::o;7027:138::-;-1:-1:-1;;;;;7140:16:0;;7093:7;7140:16;;;:7;:16;;;;;;7120:37;;:19;:37::i;1614:148::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;1721:1:::1;1705:6:::0;;1684:40:::1;::::0;-1:-1:-1;;;;;1705:6:0;;::::1;::::0;1684:40:::1;::::0;1721:1;;1684:40:::1;1752:1;1735:19:::0;;-1:-1:-1;;;;;;1735:19:0::1;::::0;;1614:148::o;16792:139::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;16883:19:::1;:40:::0;16792:139::o;7173:199::-;7278:4;7300:42;239:10;7324:9;7335:6;7300:9;:42::i;17365:234::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;17482:9:::1;17478:114;17497:19:::0;;::::1;17478:114;;;17572:8;17538:18;:31;17557:8;;17566:1;17557:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17538:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17538:31:0;:42;;-1:-1:-1;;17538:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17518:3:0::1;17478:114;;;;17365:234:::0;;;:::o;12957:92::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13021:12:0::1;13036:5;13021:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13021:20:0::1;::::0;;12957:92::o;12319:223::-;12386:11;;-1:-1:-1;;;;;12386:11:0;239:10;-1:-1:-1;;;;;12370:27:0;;:58;;;-1:-1:-1;12417:11:0;;-1:-1:-1;;;;;12417:11:0;239:10;-1:-1:-1;;;;;12401:27:0;;12370:58;12362:67;;;;;;12440:23;12466:24;12484:4;12466:9;:24::i;:::-;12440:50;;12501:33;12518:15;12501:16;:33::i;16451:289::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;16587:12:::1;:26:::0;;;;16624:13:::1;:28:::0;;;;16663:13:::1;:28:::0;16702:14:::1;:30:::0;16451:289::o;12207:104::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;12277:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12277:26:0::1;-1:-1:-1::0;;;;12277:26:0;;::::1;::::0;;;::::1;::::0;;12207:104::o;1770:244::-;1527:6;;-1:-1:-1;;;;;1527:6:0;239:10;1527:22;1519:67;;;;-1:-1:-1;;;1519:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1859:22:0;::::1;1851:73;;;::::0;-1:-1:-1;;;1851:73:0;;6715:2:1;1851:73:0::1;::::0;::::1;6697:21:1::0;6754:2;6734:18;;;6727:30;6793:34;6773:18;;;6766:62;-1:-1:-1;;;6844:18:1;;;6837:36;6890:19;;1851:73:0::1;6513:402:1::0;1851:73:0::1;1961:6;::::0;;1940:38:::1;::::0;-1:-1:-1;;;;;1940:38:0;;::::1;::::0;1961:6;::::1;::::0;1940:38:::1;::::0;::::1;1989:6;:17:::0;;-1:-1:-1;;;;;;1989:17:0::1;-1:-1:-1::0;;;;;1989:17:0;;;::::1;::::0;;;::::1;::::0;;1770:244::o;8901:369::-;-1:-1:-1;;;;;9028:19:0;;9020:68;;;;-1:-1:-1;;;9020:68:0;;7122:2:1;9020:68:0;;;7104:21:1;7161:2;7141:18;;;7134:30;7200:34;7180:18;;;7173:62;-1:-1:-1;;;7251:18:1;;;7244:34;7295:19;;9020:68:0;6920:400:1;9020:68:0;-1:-1:-1;;;;;9107:21:0;;9099:68;;;;-1:-1:-1;;;9099:68:0;;7527:2:1;9099:68:0;;;7509:21:1;7566:2;7546:18;;;7539:30;7605:34;7585:18;;;7578:62;-1:-1:-1;;;7656:18:1;;;7649:32;7698:19;;9099:68:0;7325:398:1;9099:68:0;-1:-1:-1;;;;;9178:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9230:32;;2862:25:1;;;9230:32:0;;2835:18:1;9230:32:0;;;;;;;8901:369;;;:::o;9278:2329::-;-1:-1:-1;;;;;9400:18:0;;9392:68;;;;-1:-1:-1;;;9392:68:0;;7930:2:1;9392:68:0;;;7912:21:1;7969:2;7949:18;;;7942:30;8008:34;7988:18;;;7981:62;-1:-1:-1;;;8059:18:1;;;8052:35;8104:19;;9392:68:0;7728:401:1;9392:68:0;-1:-1:-1;;;;;9479:16:0;;9471:64;;;;-1:-1:-1;;;9471:64:0;;8336:2:1;9471:64:0;;;8318:21:1;8375:2;8355:18;;;8348:30;8414:34;8394:18;;;8387:62;-1:-1:-1;;;8465:18:1;;;8458:33;8508:19;;9471:64:0;8134:399:1;9471:64:0;9563:1;9554:6;:10;9546:64;;;;-1:-1:-1;;;9546:64:0;;8740:2:1;9546:64:0;;;8722:21:1;8779:2;8759:18;;;8752:30;8818:34;8798:18;;;8791:62;-1:-1:-1;;;8869:18:1;;;8862:39;8918:19;;9546:64:0;8538:405:1;9546:64:0;1438:7;1465:6;-1:-1:-1;;;;;9627:15:0;;;1465:6;;9627:15;;;;:32;;-1:-1:-1;1438:7:0;1465:6;-1:-1:-1;;;;;9646:13:0;;;1465:6;;9646:13;;9627:32;9623:1262;;;9716:11;;-1:-1:-1;;;9716:11:0;;;;9711:144;;1438:7;1465:6;-1:-1:-1;;;;;9756:15:0;;;1465:6;;9756:15;9748:91;;;;-1:-1:-1;;;9748:91:0;;9150:2:1;9748:91:0;;;9132:21:1;9189:2;9169:18;;;9162:30;9228:34;9208:18;;;9201:62;9299:33;9279:18;;;9272:61;9350:19;;9748:91:0;8948:427:1;9748:91:0;9889:13;;9879:6;:23;;9871:64;;;;-1:-1:-1;;;9871:64:0;;9582:2:1;9871:64:0;;;9564:21:1;9621:2;9601:18;;;9594:30;9660;9640:18;;;9633:58;9708:18;;9871:64:0;9380:352:1;9871:64:0;-1:-1:-1;;;;;9959:10:0;;;;;;:4;:10;;;;;;;;9958:11;:24;;;;-1:-1:-1;;;;;;9974:8:0;;;;;;:4;:8;;;;;;;;9973:9;9958:24;9950:72;;;;-1:-1:-1;;;9950:72:0;;9939:2:1;9950:72:0;;;9921:21:1;9978:2;9958:18;;;9951:30;10017:34;9997:18;;;9990:62;-1:-1:-1;;;10068:18:1;;;10061:33;10111:19;;9950:72:0;9737:399:1;9950:72:0;10048:13;;-1:-1:-1;;;;;10042:19:0;;;10048:13;;10042:19;10039:146;;10115:14;;10106:6;10090:13;10100:2;10090:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10082:87;;;;-1:-1:-1;;;10082:87:0;;10605:2:1;10082:87:0;;;10587:21:1;10644:2;10624:18;;;10617:30;10683:34;10663:18;;;10656:62;-1:-1:-1;;;10734:18:1;;;10727:33;10777:19;;10082:87:0;10403:399:1;10082:87:0;10201:28;10232:24;10250:4;10232:9;:24::i;:::-;10310:19;;10373:13;;10201:55;;-1:-1:-1;10286:43:0;;;;10349:37;;10346:126;;10443:13;;10420:36;;10346:126;10492:7;:18;;;;-1:-1:-1;10504:6:0;;-1:-1:-1;;;10504:6:0;;;;10503:7;10492:18;:43;;;;-1:-1:-1;10522:13:0;;-1:-1:-1;;;;;10514:21:0;;;10522:13;;10514:21;;10492:43;:58;;;;-1:-1:-1;10539:11:0;;-1:-1:-1;;;10539:11:0;;;;10492:58;:87;;;;-1:-1:-1;;;;;;10555:24:0;;;;;;:18;:24;;;;;;;;10554:25;10492:87;:114;;;;-1:-1:-1;;;;;;10584:22:0;;;;;;:18;:22;;;;;;;;10583:23;10492:114;10488:386;;;10627:38;10644:20;10627:16;:38::i;:::-;10713:21;10757:22;;10753:106;;10804:35;10817:21;10804:12;:35::i;:::-;10608:266;10488:386;9661:1224;;9623:1262;-1:-1:-1;;;;;10961:24:0;;10897:12;10961:24;;;:18;:24;;;;;;10912:4;;10961:24;;;:50;;-1:-1:-1;;;;;;10989:22:0;;;;;;:18;:22;;;;;;;;10961:50;10960:102;;;-1:-1:-1;11025:13:0;;-1:-1:-1;;;;;11017:21:0;;;11025:13;;11017:21;;;;:44;;-1:-1:-1;11048:13:0;;-1:-1:-1;;;;;11042:19:0;;;11048:13;;11042:19;;11017:44;10956:590;;;-1:-1:-1;11089:5:0;10956:590;;;11172:13;;-1:-1:-1;;;;;11164:21:0;;;11172:13;;11164:21;:55;;;;-1:-1:-1;11203:15:0;;-1:-1:-1;;;;;11189:30:0;;;11203:15;;11189:30;;11164:55;11161:160;;;11250:12;;11240:7;:22;11292:13;;11281:8;:24;11161:160;11380:13;;-1:-1:-1;;;;;11374:19:0;;;11380:13;;11374:19;:55;;;;-1:-1:-1;11413:15:0;;-1:-1:-1;;;;;11397:32:0;;;11413:15;;11397:32;;11374:55;11370:163;;;11460:13;;11450:7;:23;11503:14;;11492:8;:25;11370:163;11558:41;11573:4;11579:2;11583:6;11591:7;11558:14;:41::i;2378:224::-;2498:7;2534:12;2526:6;;;;2518:29;;;;-1:-1:-1;;;2518:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2558:9:0;2570:5;2574:1;2570;:5;:::i;:::-;2558:17;2378:224;-1:-1:-1;;;;;2378:224:0:o;12106:93::-;12163:11;;:28;;-1:-1:-1;;;;;12163:11:0;;;;:28;;;;;12184:6;;12163:11;:28;:11;:28;12184:6;12163:11;:28;;;;;;;;;;;;;;;;;;;8227:324;8322:7;8380;;8369;:18;;8347:110;;;;-1:-1:-1;;;8347:110:0;;11142:2:1;8347:110:0;;;11124:21:1;11181:2;11161:18;;;11154:30;11220:34;11200:18;;;11193:62;-1:-1:-1;;;11271:18:1;;;11264:40;11321:19;;8347:110:0;10940:406:1;8347:110:0;8468:19;8490:11;:9;:11::i;:::-;8468:33;-1:-1:-1;8519:24:0;:7;8468:33;8519:11;:24::i;:::-;8512:31;8227:324;-1:-1:-1;;;8227:324:0:o;11615:483::-;5951:6;:13;;-1:-1:-1;;;;5951:13:0;-1:-1:-1;;;5951:13:0;;;11717:16:::1;::::0;;11731:1:::1;11717:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11717:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11717:16:0::1;11693:40;;11762:4;11744;11749:1;11744:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11744:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11788:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11788:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11744:7;;11788:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11778:4;11783:1;11778:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11778:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11853:15:::1;::::0;11821:62:::1;::::0;11838:4:::1;::::0;11853:15:::1;11871:11:::0;11821:8:::1;:62::i;:::-;11894:15;::::0;:196:::1;::::0;-1:-1:-1;;;11894:196:0;;-1:-1:-1;;;;;11894:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11975:11;;11894:15:::1;::::0;12017:4;;12044::::1;::::0;12064:15:::1;::::0;11894:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5987:6:0;:14;;-1:-1:-1;;;;5987:14:0;;;-1:-1:-1;;;;11615:483:0:o;13057:278::-;13213:7;13208:28;;13222:14;:12;:14::i;:::-;13247:44;13265:6;13273:9;13284:6;13247:17;:44::i;:::-;13307:7;13302:25;;13316:11;8832:15;;8822:7;:25;8869:16;;8858:8;:27;8782:111;16013:165;16056:7;16077:15;16094;16113:19;:17;:19::i;:::-;16076:56;;-1:-1:-1;16076:56:0;-1:-1:-1;16150:20:0;16076:56;;16150:11;:20::i;:::-;16143:27;;;;16013:165;:::o;2864:132::-;2922:7;2949:39;2953:1;2956;2949:39;;;;;;;;;;;;;;;;;:3;:39::i;8559:215::-;8606:7;;:12;:29;;;;-1:-1:-1;8622:8:0;;:13;8606:29;8602:42;;;8559:215::o;8602:42::-;8674:7;;;8656:15;:25;8711:8;;;8692:16;:27;-1:-1:-1;8732:11:0;;;;8754:12;8559:215::o;13343:610::-;13490:15;13520:23;13558:12;13585:23;13623:12;13650:13;13677:19;13688:7;13677:10;:19::i;:::-;-1:-1:-1;;;;;13725:15:0;;;;;;:7;:15;;;;;;13475:221;;-1:-1:-1;13475:221:0;;-1:-1:-1;13475:221:0;;-1:-1:-1;13475:221:0;-1:-1:-1;13475:221:0;-1:-1:-1;13475:221:0;-1:-1:-1;13725:28:0;;13475:221;13725:19;:28::i;:::-;-1:-1:-1;;;;;13707:15:0;;;;;;;:7;:15;;;;;;:46;;;;13785:18;;;;;;;:39;;13808:15;13785:22;:39::i;:::-;-1:-1:-1;;;;;13764:18:0;;;;;;:7;:18;;;;;:60;13835:16;13845:5;13835:9;:16::i;:::-;13862:23;13874:4;13880;13862:11;:23::i;:::-;13918:9;-1:-1:-1;;;;;13901:44:0;13910:6;-1:-1:-1;;;;;13901:44:0;;13929:15;13901:44;;;;2862:25:1;;2850:2;2835:18;;2716:177;13901:44:0;;;;;;;;13464:489;;;;;;13343:610;;;:::o;16186:257::-;16284:7;;16237;;;;4705:15;16352:20;16284:7;4705:15;16352:11;:20::i;:::-;16342:7;:30;16338:61;;;-1:-1:-1;;16382:7:0;;;4705:15;;-1:-1:-1;16186:257:0;-1:-1:-1;16186:257:0:o;16338:61::-;16418:7;;16427;;-1:-1:-1;16186:257:0;-1:-1:-1;16186:257:0:o;3004:223::-;3124:7;3159:12;3152:5;3144:28;;;;-1:-1:-1;;;3144:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3183:9:0;3195:5;3199:1;3195;:5;:::i;14373:615::-;14473:7;14495;14517;14539;14561;14583;14619:23;14644:12;14658:13;14688:39;14700:7;14709;;14718:8;;14688:11;:39::i;:::-;14618:109;;;;;;14738:19;14760:11;:9;:11::i;:::-;14738:33;;14783:15;14800:23;14825:12;14854:46;14866:7;14875:4;14881:5;14888:11;14854;:46::i;:::-;14782:118;;-1:-1:-1;14782:118:0;-1:-1:-1;14782:118:0;-1:-1:-1;14951:15:0;;-1:-1:-1;14968:4:0;;-1:-1:-1;14974:5:0;;-1:-1:-1;;;;;14373:615:0;;;;;;;:::o;2234:136::-;2292:7;2319:43;2323:1;2326;2319:43;;;;;;;;;;;;;;;;;:3;:43::i;2047:179::-;2105:7;;2137:5;2141:1;2137;:5;:::i;:::-;2125:17;;2166:1;2161;:6;;2153:46;;;;-1:-1:-1;;;2153:46:0;;13016:2:1;2153:46:0;;;12998:21:1;13055:2;13035:18;;;13028:30;13094:29;13074:18;;;13067:57;13141:18;;2153:46:0;12814:351:1;13961:212:0;14014:19;14036:11;:9;:11::i;:::-;14014:33;-1:-1:-1;14058:13:0;14074:22;:5;14014:33;14074:9;:22::i;:::-;14148:4;14132:22;;;;:7;:22;;;;;;14058:38;;-1:-1:-1;14132:33:0;;14058:38;14132:26;:33::i;:::-;14123:4;14107:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13961:212:0:o;14181:147::-;14259:7;;:17;;14271:4;14259:11;:17::i;:::-;14249:7;:27;14300:10;;:20;;14315:4;14300:14;:20::i;:::-;14287:10;:33;-1:-1:-1;;14181:147:0:o;14996:467::-;15164:7;;;;15258:28;15282:3;15258:19;:7;15270:6;15258:11;:19::i;:::-;:23;;:28::i;:::-;15243:43;-1:-1:-1;15297:13:0;15313:29;15338:3;15313:20;:7;15325;15313:11;:20::i;:29::-;15297:45;-1:-1:-1;15353:23:0;15379:28;15297:45;15379:17;:7;15391:4;15379:11;:17::i;:::-;:21;;:28::i;:::-;15353:54;15443:4;;-1:-1:-1;15449:5:0;;-1:-1:-1;14996:467:0;;-1:-1:-1;;;;;14996:467:0:o;15471:534::-;15665:7;;;;15762:24;:7;15774:11;15762;:24::i;:::-;15744:42;-1:-1:-1;15797:12:0;15812:21;:4;15821:11;15812:8;:21::i;:::-;15797:36;-1:-1:-1;15844:13:0;15860:22;:5;15870:11;15860:9;:22::i;:::-;15844:38;-1:-1:-1;15893:23:0;15919:28;15844:38;15919:17;:7;15931:4;15919:11;:17::i;:28::-;15966:7;;;;-1:-1:-1;15992:4:0;;-1:-1:-1;15471:534:0;;-1:-1:-1;;;;;;;15471:534:0:o;2610:246::-;2668:7;2692:1;2697;2692:6;2688:47;;-1:-1:-1;2722:1:0;2715:8;;2688:47;2745:9;2757:5;2761:1;2757;:5;:::i;:::-;2745:17;-1:-1:-1;2790:1:0;2781:5;2785:1;2745:17;2781:5;:::i;:::-;:10;2773:56;;;;-1:-1:-1;;;2773:56:0;;13545:2:1;2773:56:0;;;13527:21:1;13584:2;13564:18;;;13557:30;13623:34;13603:18;;;13596:62;-1:-1:-1;;;13674:18:1;;;13667:31;13715:19;;2773:56:0;13343:397:1;14:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:134;350:20;;379:31;350:20;379:31;:::i;:::-;282:134;;;:::o;421:1121::-;505:6;536:2;579;567:9;558:7;554:23;550:32;547:52;;;595:1;592;585:12;547:52;635:9;622:23;664:18;705:2;697:6;694:14;691:34;;;721:1;718;711:12;691:34;759:6;748:9;744:22;734:32;;804:7;797:4;793:2;789:13;785:27;775:55;;826:1;823;816:12;775:55;862:2;849:16;884:2;880;877:10;874:36;;;890:18;;:::i;:::-;936:2;933:1;929:10;968:2;962:9;1031:2;1027:7;1022:2;1018;1014:11;1010:25;1002:6;998:38;1086:6;1074:10;1071:22;1066:2;1054:10;1051:18;1048:46;1045:72;;;1097:18;;:::i;:::-;1133:2;1126:22;1183:18;;;1217:15;;;;-1:-1:-1;1259:11:1;;;1255:20;;;1287:19;;;1284:39;;;1319:1;1316;1309:12;1284:39;1343:11;;;;1363:148;1379:6;1374:3;1371:15;1363:148;;;1445:23;1464:3;1445:23;:::i;:::-;1433:36;;1396:12;;;;1489;;;;1363:148;;;1530:6;421:1121;-1:-1:-1;;;;;;;;421:1121:1:o;1547:418::-;1696:2;1685:9;1678:21;1659:4;1728:6;1722:13;1771:6;1766:2;1755:9;1751:18;1744:34;1830:6;1825:2;1817:6;1813:15;1808:2;1797:9;1793:18;1787:50;1886:1;1881:2;1872:6;1861:9;1857:22;1853:31;1846:42;1956:2;1949;1945:7;1940:2;1932:6;1928:15;1924:29;1913:9;1909:45;1905:54;1897:62;;;1547:418;;;;:::o;1970:315::-;2038:6;2046;2099:2;2087:9;2078:7;2074:23;2070:32;2067:52;;;2115:1;2112;2105:12;2067:52;2154:9;2141:23;2173:31;2198:5;2173:31;:::i;:::-;2223:5;2275:2;2260:18;;;;2247:32;;-1:-1:-1;;;1970:315:1:o;2898:456::-;2975:6;2983;2991;3044:2;3032:9;3023:7;3019:23;3015:32;3012:52;;;3060:1;3057;3050:12;3012:52;3099:9;3086:23;3118:31;3143:5;3118:31;:::i;:::-;3168:5;-1:-1:-1;3225:2:1;3210:18;;3197:32;3238:33;3197:32;3238:33;:::i;:::-;2898:456;;3290:7;;-1:-1:-1;;;3344:2:1;3329:18;;;;3316:32;;2898:456::o;3548:180::-;3607:6;3660:2;3648:9;3639:7;3635:23;3631:32;3628:52;;;3676:1;3673;3666:12;3628:52;-1:-1:-1;3699:23:1;;3548:180;-1:-1:-1;3548:180:1:o;3941:160::-;4006:20;;4062:13;;4055:21;4045:32;;4035:60;;4091:1;4088;4081:12;4106:180;4162:6;4215:2;4203:9;4194:7;4190:23;4186:32;4183:52;;;4231:1;4228;4221:12;4183:52;4254:26;4270:9;4254:26;:::i;4291:247::-;4350:6;4403:2;4391:9;4382:7;4378:23;4374:32;4371:52;;;4419:1;4416;4409:12;4371:52;4458:9;4445:23;4477:31;4502:5;4477:31;:::i;4543:689::-;4635:6;4643;4651;4704:2;4692:9;4683:7;4679:23;4675:32;4672:52;;;4720:1;4717;4710:12;4672:52;4760:9;4747:23;4789:18;4830:2;4822:6;4819:14;4816:34;;;4846:1;4843;4836:12;4816:34;4884:6;4873:9;4869:22;4859:32;;4929:7;4922:4;4918:2;4914:13;4910:27;4900:55;;4951:1;4948;4941:12;4900:55;4991:2;4978:16;5017:2;5009:6;5006:14;5003:34;;;5033:1;5030;5023:12;5003:34;5088:7;5081:4;5071:6;5068:1;5064:14;5060:2;5056:23;5052:34;5049:47;5046:67;;;5109:1;5106;5099:12;5046:67;5140:4;5132:13;;;;-1:-1:-1;5164:6:1;-1:-1:-1;5189:37:1;;5205:20;;;-1:-1:-1;5189:37:1;:::i;:::-;5179:47;;4543:689;;;;;:::o;5237:388::-;5305:6;5313;5366:2;5354:9;5345:7;5341:23;5337:32;5334:52;;;5382:1;5379;5372:12;5334:52;5421:9;5408:23;5440:31;5465:5;5440:31;:::i;:::-;5490:5;-1:-1:-1;5547:2:1;5532:18;;5519:32;5560:33;5519:32;5560:33;:::i;:::-;5612:7;5602:17;;;5237:388;;;;;:::o;5630:385::-;5716:6;5724;5732;5740;5793:3;5781:9;5772:7;5768:23;5764:33;5761:53;;;5810:1;5807;5800:12;5761:53;-1:-1:-1;;5833:23:1;;;5903:2;5888:18;;5875:32;;-1:-1:-1;5954:2:1;5939:18;;5926:32;;6005:2;5990:18;5977:32;;-1:-1:-1;5630:385:1;-1:-1:-1;5630:385:1:o;6020:356::-;6222:2;6204:21;;;6241:18;;;6234:30;6300:34;6295:2;6280:18;;6273:62;6367:2;6352:18;;6020:356::o;6381:127::-;6442:10;6437:3;6433:20;6430:1;6423:31;6473:4;6470:1;6463:15;6497:4;6494:1;6487:15;10141:127;10202:10;10197:3;10193:20;10190:1;10183:31;10233:4;10230:1;10223:15;10257:4;10254:1;10247:15;10273:125;10338:9;;;10359:10;;;10356:36;;;10372:18;;:::i;10807:128::-;10874:9;;;10895:11;;;10892:37;;;10909:18;;:::i;11351:251::-;11421:6;11474:2;11462:9;11453:7;11449:23;11445:32;11442:52;;;11490:1;11487;11480:12;11442:52;11522:9;11516:16;11541:31;11566:5;11541:31;:::i;11607:980::-;11869:4;11917:3;11906:9;11902:19;11948:6;11937:9;11930:25;11974:2;12012:6;12007:2;11996:9;11992:18;11985:34;12055:3;12050:2;12039:9;12035:18;12028:31;12079:6;12114;12108:13;12145:6;12137;12130:22;12183:3;12172:9;12168:19;12161:26;;12222:2;12214:6;12210:15;12196:29;;12243:1;12253:195;12267:6;12264:1;12261:13;12253:195;;;12332:13;;-1:-1:-1;;;;;12328:39:1;12316:52;;12423:15;;;;12388:12;;;;12364:1;12282:9;12253:195;;;-1:-1:-1;;;;;;;12504:32:1;;;;12499:2;12484:18;;12477:60;-1:-1:-1;;;12568:3:1;12553:19;12546:35;12465:3;11607:980;-1:-1:-1;;;11607:980:1:o;12592:217::-;12632:1;12658;12648:132;;12702:10;12697:3;12693:20;12690:1;12683:31;12737:4;12734:1;12727:15;12765:4;12762:1;12755:15;12648:132;-1:-1:-1;12794:9:1;;12592:217::o;13170:168::-;13243:9;;;13274;;13291:15;;;13285:22;;13271:37;13261:71;;13312:18;;:::i

Swarm Source

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