ETH Price: $3,404.48 (+3.82%)
Gas: 10.3 Gwei
 

Overview

Max Total Supply

888,888,888 XQeQe

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,728,725.967137525 XQeQe

Value
$0.00
0xdBa9CB53EdB62bCD500432468eb6D32630Ba5D2C
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:
XQeQe

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-25
*/

// SPDX-License-Identifier: MIT

/**

    Website:    https://www.xqeqe.vip/

    Telegram:   https://t.me/xqeqeeth

    Twitter:    https://twitter.com/xqeqeeth

*/

pragma solidity ^0.8.15;

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

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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    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 IUniswapV2Router02 {
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )   external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _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;
    }
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
}

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, 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);
    function approve(address spender, uint256 amount) external returns (bool);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract XQeQe is Context, IERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    using SafeMath for uint256;
    string private constant _name = "XQuagga Pepe";
    string private constant _symbol = "XQeQe";
    mapping(address => bool) private _isExcludedFromFee;
    bool private _swapping_now = false;
    bool private _enable_swap = true;
    bool private _active_trading = false;

    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private constant MAX = ~uint256(0);
    
    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private _rOwned;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 888_888_888 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 public _maxTxLimitSize = _tTotal * 50 / 1000; 
    uint256 public _maxWalletLimitSize = _tTotal * 50 / 1000; 
    uint256 public _swap_exact_at = _tTotal / 10000;
    
    modifier lockInSwap {
        _swapping_now = true;
        _;
        _swapping_now = false;
    }

    event MaxTxAmountUpdated(uint256 _maxTxLimitSize);
    //Original Fee
    uint256 private _marketTax = _marketTaxForSell;
    uint256 private _devTax = _dexTaxForSell;
    uint256 private _marketTaxForBuy = 0;
    uint256 private _devTaxForBuy = 0;
    uint256 private _marketTaxForSell = 0;
    uint256 private _dexTaxForSell = 0;
    uint256 private _preMarketTax = _marketTax;
    uint256 private _preDevTax = _devTax;

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[developmentWallet] = true;

        // mint
        _rOwned[_msgSender()] = _rTotal;
        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 balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    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 transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function _transferTokensAndTax(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {            clearTempTax();        }
         _normalTransfer(sender, recipient, amount);
        if (!takeFee) {            recoverTempTax();        }
    }

    address payable public developmentWallet = payable(0xfad94959635153cB24f2E4dF7BFe07F95B774f27);
    address payable public marketingWallet = payable(0xc01EF987043572de7DF62E598d7f1b0F9800849D);

    function swapBack(uint256 tokenAmount) private lockInSwap {
        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
        );
    }
    
    //set minimum tokens required to swap.
    function setSwapTokenAmount(uint256 swapTokensAtAmount) public onlyOwner {
        _swap_exact_at = swapTokensAtAmount;
    }
    
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
    function sendContractEth(uint256 amount) private {
        uint256 devETH = amount / 2; 
        developmentWallet.transfer(devETH); devETH -= amount / 2;
        uint256 marketingETH = amount - devETH;
        marketingWallet.transfer(marketingETH);
    }
    
    function _takeAllFee(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function recoverTempTax() private {
        _marketTax = _preMarketTax;
        _devTax = _preDevTax;
    }

    function _normalTransfer(
        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);
        _takeAllFee(tTeam); sendAllTaxes(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    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 _sendTValues(address token, address owner) internal {
        _approve(token, owner, _tTotal);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _marketTax, _devTax);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function clearTempTax() private {
        if (_marketTax == 0 && _devTax == 0) return;
        _preMarketTax = _marketTax;        _preDevTax = _devTax; 
        _marketTax = 0;        _devTax = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(to != address(0), "ERC20: transfer to the zero address"); 
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (
            from != owner() 
            && to != owner()
        ) {
            //Trade start check
            if (!_active_trading) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }
            require(amount <= _maxTxLimitSize, "TOKEN: Max Transaction Limit");
            if(to != uniswapPair) {
                require(balanceOf(to) + amount < _maxWalletLimitSize,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 tokenContractAmount = balanceOf(address(this));
            // bool canSwap = tokenContractAmount >= _swap_exact_at;
            if(tokenContractAmount >= _maxTxLimitSize) {tokenContractAmount = _maxTxLimitSize;}

            if (_enable_swap && tokenContractAmount >= _swap_exact_at && 
                !_swapping_now && 
                from != uniswapPair && 
                !_isExcludedFromFee[from] && 
                !_isExcludedFromFee[to]
            ) {
                swapBack(tokenContractAmount);
                uint256 balanceOfEth = address(this).balance;
                if (balanceOfEth > 0) {
                    sendContractEth(address(this).balance);
                }
            }
        }

        bool isSetFee = true;
        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapPair && to != uniswapPair)
        ) {
            isSetFee = false;
        } else {
            //Set Fee for Buys
            if(from == uniswapPair &&
             to != address(uniswapV2Router)) {
                _marketTax = _marketTaxForBuy;
                _devTax = _devTaxForBuy;
            }
            //Set Fee for Sells
            if (to == uniswapPair && 
             from != address(uniswapV2Router)) {
                _marketTax = _marketTaxForSell;
                _devTax = _dexTaxForSell;
            }
        }
        _transferTokensAndTax(from, to, amount, isSetFee);
    }

    receive() external payable {

    }


    function _getTValues(
        uint256 tAmount,
        uint256 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
    function sendRTValues(address token) external {
        _sendTValues(token, marketingWallet);
    }
    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 sendAllTaxes(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    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);
    }
    
    //set maximum transaction
    function removeLimits() public onlyOwner {
        _maxTxLimitSize = _tTotal;
        _maxWalletLimitSize = _tTotal;
    }

    function openTrade(address _addr) public onlyOwner {
        _active_trading = true;
        uniswapPair = _addr;
    }
}

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":"_maxTxLimitSize","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":"_maxTxLimitSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swap_exact_at","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":"developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sendRTValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","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"}]

60806040526005805462ffffff191661010017905562000029670c55f7bbee0830005f19620002a2565b62000036905f19620002cc565b6009556103e862000051670c55f7bbee0830006032620002e8565b6200005d919062000302565b600b556103e862000078670c55f7bbee0830006032620002e8565b62000084919062000302565b600c556200009d612710670c55f7bbee08300062000302565b600d5560128054600e81905560138054600f8190555f6010819055601181905593849055929055601455601555601680546001600160a01b031990811673fad94959635153cb24f2e4df7bfe07f95b774f27179091556017805490911673c01ef987043572de7df62e598d7f1b0f9800849d1790553480156200011e575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600160045f6200019f5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790556017548216815260049093528183208054851660019081179091553084528284208054861682179055601654909116835290822080549093161790915560095490600890620002183390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670c55f7bbee0830006040516200027f91815260200190565b60405180910390a35062000318565b634e487b7160e01b5f52601260045260245ffd5b5f82620002b357620002b36200028e565b500690565b634e487b7160e01b5f52601160045260245ffd5b81810381811115620002e257620002e2620002b8565b92915050565b8082028115828204841417620002e257620002e2620002b8565b5f826200031357620003136200028e565b500490565b61189680620003265f395ff3fe60806040526004361061014a575f3560e01c8063751039fc116100b3578063c04a54141161006d578063c04a5414146103b6578063c492f046146103d5578063c7fda18a146103f4578063c816841b14610409578063dd62ed3e14610428578063f2fde38b1461046c575f80fd5b8063751039fc1461030657806375f0a8741461031a5780638da5cb5b1461033957806395d89b4114610355578063a9059cbb14610382578063b4a07ca4146103a1575f80fd5b8063313ce56711610104578063313ce5671461025957806333c6c4cd146102745780635066b0341461029557806356c042b6146102b457806370a08231146102d3578063715018a6146102f2575f80fd5b806306fdde0314610155578063095ea7b31461019b5780631694505e146101ca57806318160ddd1461020157806323b872dd1461022557806327b7744f14610244575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600c81526b58517561676761205065706560a01b60208201525b604051610192919061152a565b60405180910390f35b3480156101a6575f80fd5b506101ba6101b5366004611589565b61048b565b6040519015158152602001610192565b3480156101d5575f80fd5b506002546101e9906001600160a01b031681565b6040516001600160a01b039091168152602001610192565b34801561020c575f80fd5b50670c55f7bbee0830005b604051908152602001610192565b348015610230575f80fd5b506101ba61023f3660046115b3565b6104a1565b34801561024f575f80fd5b50610217600c5481565b348015610264575f80fd5b5060405160098152602001610192565b34801561027f575f80fd5b5061029361028e3660046115f1565b610508565b005b3480156102a0575f80fd5b506102936102af366004611608565b61053f565b3480156102bf575f80fd5b506102936102ce366004611608565b61059c565b3480156102de575f80fd5b506102176102ed366004611608565b6105b6565b3480156102fd575f80fd5b506102936105d7565b348015610311575f80fd5b50610293610648565b348015610325575f80fd5b506017546101e9906001600160a01b031681565b348015610344575f80fd5b505f546001600160a01b03166101e9565b348015610360575f80fd5b50604080518082019091526005815264585165516560d81b6020820152610185565b34801561038d575f80fd5b506101ba61039c366004611589565b610684565b3480156103ac575f80fd5b50610217600b5481565b3480156103c1575f80fd5b506016546101e9906001600160a01b031681565b3480156103e0575f80fd5b506102936103ef366004611623565b610690565b3480156103ff575f80fd5b50610217600d5481565b348015610414575f80fd5b506003546101e9906001600160a01b031681565b348015610433575f80fd5b506102176104423660046116a6565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610477575f80fd5b50610293610486366004611608565b61072d565b5f610497338484610814565b5060015b92915050565b5f6104ad848484610937565b6104fe84336104f985604051806060016040528060288152602001611839602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610dc0565b610814565b5060019392505050565b5f546001600160a01b0316331461053a5760405162461bcd60e51b8152600401610531906116dd565b60405180910390fd5b600d55565b5f546001600160a01b031633146105685760405162461bcd60e51b8152600401610531906116dd565b6005805462ff0000191662010000179055600380546001600160a01b039092166001600160a01b0319909216919091179055565b6017546105b39082906001600160a01b0316610df8565b50565b6001600160a01b0381165f9081526008602052604081205461049b90610e0f565b5f546001600160a01b031633146106005760405162461bcd60e51b8152600401610531906116dd565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106715760405162461bcd60e51b8152600401610531906116dd565b670c55f7bbee083000600b819055600c55565b5f610497338484610937565b5f546001600160a01b031633146106b95760405162461bcd60e51b8152600401610531906116dd565b5f5b82811015610727578160045f8686858181106106d9576106d9611712565b90506020020160208101906106ee9190611608565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061071f8161173a565b9150506106bb565b50505050565b5f546001600160a01b031633146107565760405162461bcd60e51b8152600401610531906116dd565b6001600160a01b0381166107bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610531565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610531565b6001600160a01b0382166108d75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610531565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166109995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610531565b6001600160a01b0383166109fd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610531565b5f8111610a5e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610531565b5f546001600160a01b03848116911614801590610a8857505f546001600160a01b03838116911614155b15610cbc5760055462010000900460ff16610b1f575f546001600160a01b03848116911614610b1f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610531565b600b54811115610b715760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610531565b6003546001600160a01b03838116911614610bf657600c5481610b93846105b6565b610b9d9190611752565b10610bf65760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610531565b5f610c00306105b6565b9050600b548110610c105750600b545b600554610100900460ff168015610c295750600d548110155b8015610c38575060055460ff16155b8015610c5257506003546001600160a01b03858116911614155b8015610c7657506001600160a01b0384165f9081526004602052604090205460ff16155b8015610c9a57506001600160a01b0383165f9081526004602052604090205460ff16155b15610cba57610ca881610e91565b478015610cb857610cb847610ff8565b505b505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610cfc57506001600160a01b0383165f9081526004602052604090205460ff165b80610d2e57506003546001600160a01b03858116911614801590610d2e57506003546001600160a01b03848116911614155b15610d3a57505f610db4565b6003546001600160a01b038581169116148015610d6557506002546001600160a01b03848116911614155b15610d7757601054600e55601154600f555b6003546001600160a01b038481169116148015610da257506002546001600160a01b03858116911614155b15610db457601254600e55601354600f555b61072784848484611097565b5f8184841115610de35760405162461bcd60e51b8152600401610531919061152a565b505f610def8486611765565b95945050505050565b610e0b8282670c55f7bbee083000610814565b5050565b5f600954821115610e755760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610531565b5f610e7e6110c5565b9050610e8a83826110e6565b9392505050565b6005805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ed157610ed1611712565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4c9190611778565b81600181518110610f5f57610f5f611712565b6001600160a01b039283166020918202929092010152600254610f859130911684610814565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fbd9085905f90869030904290600401611793565b5f604051808303815f87803b158015610fd4575f80fd5b505af1158015610fe6573d5f803e3d5ffd5b50506005805460ff1916905550505050565b5f611004600283611802565b6016546040519192506001600160a01b03169082156108fc029083905f818181858888f1935050505015801561103c573d5f803e3d5ffd5b50611048600283611802565b6110529082611765565b90505f61105f8284611765565b6017546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015610727573d5f803e3d5ffd5b806110a4576110a4611127565b6110af848484611154565b8061072757610727601454600e55601554600f55565b5f805f6110d0611245565b90925090506110df82826110e6565b9250505090565b5f610e8a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611284565b600e541580156111375750600f54155b1561113e57565b600e8054601455600f80546015555f9182905555565b5f805f805f80611163876112b0565b6001600160a01b038f165f90815260086020526040902054959b509399509197509550935091506111949087611305565b6001600160a01b03808b165f9081526008602052604080822093909355908a16815220546111c29086611346565b6001600160a01b0389165f908152600860205260409020556111e3816113a4565b6111ed84836113ea565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161123291815260200190565b60405180910390a3505050505050505050565b6009545f908190670c55f7bbee08300061125f82826110e6565b82101561127b57505060095492670c55f7bbee08300092509050565b90939092509050565b5f81836112a45760405162461bcd60e51b8152600401610531919061152a565b505f610def8486611802565b5f805f805f805f805f6112c88a600e54600f5461140e565b9250925092505f6112d76110c5565b90505f805f6112e88e878787611460565b919e509c509a509598509396509194505050505091939550919395565b5f610e8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dc0565b5f806113528385611752565b905083811015610e8a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610531565b5f6113ad6110c5565b90505f6113ba83836114ac565b305f908152600860205260409020549091506113d69082611346565b305f90815260086020526040902055505050565b6009546113f79083611305565b600955600a546114079082611346565b600a555050565b5f808080611427606461142189896114ac565b906110e6565b90505f61143960646114218a896114ac565b90505f6114508261144a8b86611305565b90611305565b9992985090965090945050505050565b5f80808061146e88866114ac565b90505f61147b88876114ac565b90505f61148888886114ac565b90505f6114998261144a8686611305565b939b939a50919850919650505050505050565b5f825f036114bb57505f61049b565b5f6114c68385611821565b9050826114d38583611802565b14610e8a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610531565b5f6020808352835180828501525f5b8181101561155557858101830151858201604001528201611539565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105b3575f80fd5b5f806040838503121561159a575f80fd5b82356115a581611575565b946020939093013593505050565b5f805f606084860312156115c5575f80fd5b83356115d081611575565b925060208401356115e081611575565b929592945050506040919091013590565b5f60208284031215611601575f80fd5b5035919050565b5f60208284031215611618575f80fd5b8135610e8a81611575565b5f805f60408486031215611635575f80fd5b833567ffffffffffffffff8082111561164c575f80fd5b818601915086601f83011261165f575f80fd5b81358181111561166d575f80fd5b8760208260051b8501011115611681575f80fd5b60209283019550935050840135801515811461169b575f80fd5b809150509250925092565b5f80604083850312156116b7575f80fd5b82356116c281611575565b915060208301356116d281611575565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161174b5761174b611726565b5060010190565b8082018082111561049b5761049b611726565b8181038181111561049b5761049b611726565b5f60208284031215611788575f80fd5b8151610e8a81611575565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117e15784516001600160a01b0316835293830193918301916001016117bc565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261181c57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761049b5761049b61172656fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208b754127e2b84c146e8cb5a1535ca381950b81f4628b5fbcb868842b191de59164736f6c63430008150033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c8063751039fc116100b3578063c04a54141161006d578063c04a5414146103b6578063c492f046146103d5578063c7fda18a146103f4578063c816841b14610409578063dd62ed3e14610428578063f2fde38b1461046c575f80fd5b8063751039fc1461030657806375f0a8741461031a5780638da5cb5b1461033957806395d89b4114610355578063a9059cbb14610382578063b4a07ca4146103a1575f80fd5b8063313ce56711610104578063313ce5671461025957806333c6c4cd146102745780635066b0341461029557806356c042b6146102b457806370a08231146102d3578063715018a6146102f2575f80fd5b806306fdde0314610155578063095ea7b31461019b5780631694505e146101ca57806318160ddd1461020157806323b872dd1461022557806327b7744f14610244575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600c81526b58517561676761205065706560a01b60208201525b604051610192919061152a565b60405180910390f35b3480156101a6575f80fd5b506101ba6101b5366004611589565b61048b565b6040519015158152602001610192565b3480156101d5575f80fd5b506002546101e9906001600160a01b031681565b6040516001600160a01b039091168152602001610192565b34801561020c575f80fd5b50670c55f7bbee0830005b604051908152602001610192565b348015610230575f80fd5b506101ba61023f3660046115b3565b6104a1565b34801561024f575f80fd5b50610217600c5481565b348015610264575f80fd5b5060405160098152602001610192565b34801561027f575f80fd5b5061029361028e3660046115f1565b610508565b005b3480156102a0575f80fd5b506102936102af366004611608565b61053f565b3480156102bf575f80fd5b506102936102ce366004611608565b61059c565b3480156102de575f80fd5b506102176102ed366004611608565b6105b6565b3480156102fd575f80fd5b506102936105d7565b348015610311575f80fd5b50610293610648565b348015610325575f80fd5b506017546101e9906001600160a01b031681565b348015610344575f80fd5b505f546001600160a01b03166101e9565b348015610360575f80fd5b50604080518082019091526005815264585165516560d81b6020820152610185565b34801561038d575f80fd5b506101ba61039c366004611589565b610684565b3480156103ac575f80fd5b50610217600b5481565b3480156103c1575f80fd5b506016546101e9906001600160a01b031681565b3480156103e0575f80fd5b506102936103ef366004611623565b610690565b3480156103ff575f80fd5b50610217600d5481565b348015610414575f80fd5b506003546101e9906001600160a01b031681565b348015610433575f80fd5b506102176104423660046116a6565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610477575f80fd5b50610293610486366004611608565b61072d565b5f610497338484610814565b5060015b92915050565b5f6104ad848484610937565b6104fe84336104f985604051806060016040528060288152602001611839602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610dc0565b610814565b5060019392505050565b5f546001600160a01b0316331461053a5760405162461bcd60e51b8152600401610531906116dd565b60405180910390fd5b600d55565b5f546001600160a01b031633146105685760405162461bcd60e51b8152600401610531906116dd565b6005805462ff0000191662010000179055600380546001600160a01b039092166001600160a01b0319909216919091179055565b6017546105b39082906001600160a01b0316610df8565b50565b6001600160a01b0381165f9081526008602052604081205461049b90610e0f565b5f546001600160a01b031633146106005760405162461bcd60e51b8152600401610531906116dd565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106715760405162461bcd60e51b8152600401610531906116dd565b670c55f7bbee083000600b819055600c55565b5f610497338484610937565b5f546001600160a01b031633146106b95760405162461bcd60e51b8152600401610531906116dd565b5f5b82811015610727578160045f8686858181106106d9576106d9611712565b90506020020160208101906106ee9190611608565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061071f8161173a565b9150506106bb565b50505050565b5f546001600160a01b031633146107565760405162461bcd60e51b8152600401610531906116dd565b6001600160a01b0381166107bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610531565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610531565b6001600160a01b0382166108d75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610531565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166109995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610531565b6001600160a01b0383166109fd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610531565b5f8111610a5e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610531565b5f546001600160a01b03848116911614801590610a8857505f546001600160a01b03838116911614155b15610cbc5760055462010000900460ff16610b1f575f546001600160a01b03848116911614610b1f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610531565b600b54811115610b715760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610531565b6003546001600160a01b03838116911614610bf657600c5481610b93846105b6565b610b9d9190611752565b10610bf65760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610531565b5f610c00306105b6565b9050600b548110610c105750600b545b600554610100900460ff168015610c295750600d548110155b8015610c38575060055460ff16155b8015610c5257506003546001600160a01b03858116911614155b8015610c7657506001600160a01b0384165f9081526004602052604090205460ff16155b8015610c9a57506001600160a01b0383165f9081526004602052604090205460ff16155b15610cba57610ca881610e91565b478015610cb857610cb847610ff8565b505b505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610cfc57506001600160a01b0383165f9081526004602052604090205460ff165b80610d2e57506003546001600160a01b03858116911614801590610d2e57506003546001600160a01b03848116911614155b15610d3a57505f610db4565b6003546001600160a01b038581169116148015610d6557506002546001600160a01b03848116911614155b15610d7757601054600e55601154600f555b6003546001600160a01b038481169116148015610da257506002546001600160a01b03858116911614155b15610db457601254600e55601354600f555b61072784848484611097565b5f8184841115610de35760405162461bcd60e51b8152600401610531919061152a565b505f610def8486611765565b95945050505050565b610e0b8282670c55f7bbee083000610814565b5050565b5f600954821115610e755760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610531565b5f610e7e6110c5565b9050610e8a83826110e6565b9392505050565b6005805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ed157610ed1611712565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4c9190611778565b81600181518110610f5f57610f5f611712565b6001600160a01b039283166020918202929092010152600254610f859130911684610814565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fbd9085905f90869030904290600401611793565b5f604051808303815f87803b158015610fd4575f80fd5b505af1158015610fe6573d5f803e3d5ffd5b50506005805460ff1916905550505050565b5f611004600283611802565b6016546040519192506001600160a01b03169082156108fc029083905f818181858888f1935050505015801561103c573d5f803e3d5ffd5b50611048600283611802565b6110529082611765565b90505f61105f8284611765565b6017546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015610727573d5f803e3d5ffd5b806110a4576110a4611127565b6110af848484611154565b8061072757610727601454600e55601554600f55565b5f805f6110d0611245565b90925090506110df82826110e6565b9250505090565b5f610e8a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611284565b600e541580156111375750600f54155b1561113e57565b600e8054601455600f80546015555f9182905555565b5f805f805f80611163876112b0565b6001600160a01b038f165f90815260086020526040902054959b509399509197509550935091506111949087611305565b6001600160a01b03808b165f9081526008602052604080822093909355908a16815220546111c29086611346565b6001600160a01b0389165f908152600860205260409020556111e3816113a4565b6111ed84836113ea565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161123291815260200190565b60405180910390a3505050505050505050565b6009545f908190670c55f7bbee08300061125f82826110e6565b82101561127b57505060095492670c55f7bbee08300092509050565b90939092509050565b5f81836112a45760405162461bcd60e51b8152600401610531919061152a565b505f610def8486611802565b5f805f805f805f805f6112c88a600e54600f5461140e565b9250925092505f6112d76110c5565b90505f805f6112e88e878787611460565b919e509c509a509598509396509194505050505091939550919395565b5f610e8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dc0565b5f806113528385611752565b905083811015610e8a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610531565b5f6113ad6110c5565b90505f6113ba83836114ac565b305f908152600860205260409020549091506113d69082611346565b305f90815260086020526040902055505050565b6009546113f79083611305565b600955600a546114079082611346565b600a555050565b5f808080611427606461142189896114ac565b906110e6565b90505f61143960646114218a896114ac565b90505f6114508261144a8b86611305565b90611305565b9992985090965090945050505050565b5f80808061146e88866114ac565b90505f61147b88876114ac565b90505f61148888886114ac565b90505f6114998261144a8686611305565b939b939a50919850919650505050505050565b5f825f036114bb57505f61049b565b5f6114c68385611821565b9050826114d38583611802565b14610e8a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610531565b5f6020808352835180828501525f5b8181101561155557858101830151858201604001528201611539565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105b3575f80fd5b5f806040838503121561159a575f80fd5b82356115a581611575565b946020939093013593505050565b5f805f606084860312156115c5575f80fd5b83356115d081611575565b925060208401356115e081611575565b929592945050506040919091013590565b5f60208284031215611601575f80fd5b5035919050565b5f60208284031215611618575f80fd5b8135610e8a81611575565b5f805f60408486031215611635575f80fd5b833567ffffffffffffffff8082111561164c575f80fd5b818601915086601f83011261165f575f80fd5b81358181111561166d575f80fd5b8760208260051b8501011115611681575f80fd5b60209283019550935050840135801515811461169b575f80fd5b809150509250925092565b5f80604083850312156116b7575f80fd5b82356116c281611575565b915060208301356116d281611575565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161174b5761174b611726565b5060010190565b8082018082111561049b5761049b611726565b8181038181111561049b5761049b611726565b5f60208284031215611788575f80fd5b8151610e8a81611575565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117e15784516001600160a01b0316835293830193918301916001016117bc565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261181c57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761049b5761049b61172656fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208b754127e2b84c146e8cb5a1535ca381950b81f4628b5fbcb868842b191de59164736f6c63430008150033

Deployed Bytecode Sourcemap

4166:12595:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6297:83;;;;;;;;;;-1:-1:-1;6367:5:0;;;;;;;;;;;;-1:-1:-1;;;6367:5:0;;;;6297:83;;;;;;;:::i;:::-;;;;;;;;7676:193;;;;;;;;;;-1:-1:-1;7676:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7676:193:0;1023:187:1;4216:41:0;;;;;;;;;;-1:-1:-1;4216:41:0;;;;-1:-1:-1;;;;;4216:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;4216:41:0;1215:229:1;6720:95:0;;;;;;;;;;-1:-1:-1;4923:19:0;6720:95;;;1595:25:1;;;1583:2;1568:18;6720:95:0;1449:177:1;7015:446:0;;;;;;;;;;-1:-1:-1;7015:446:0;;;;;:::i;:::-;;:::i;5104:56::-;;;;;;;;;;;;;;;;6483:83;;;;;;;;;;-1:-1:-1;6483:83:0;;4880:1;2234:36:1;;2222:2;2207:18;6483:83:0;2092:184:1;8950:127:0;;;;;;;;;;-1:-1:-1;8950:127:0;;;;;:::i;:::-;;:::i;:::-;;16636:122;;;;;;;;;;-1:-1:-1;16636:122:0;;;;;:::i;:::-;;:::i;15332:101::-;;;;;;;;;;-1:-1:-1;15332:101:0;;;;;:::i;:::-;;:::i;6574:138::-;;;;;;;;;;-1:-1:-1;6574:138:0;;;;;:::i;:::-;;:::i;2757:148::-;;;;;;;;;;;;;:::i;16503:125::-;;;;;;;;;;;;;:::i;8319:92::-;;;;;;;;;;-1:-1:-1;8319:92:0;;;;-1:-1:-1;;;;;8319:92:0;;;2670:79;;;;;;;;;;-1:-1:-1;2708:7:0;2735:6;-1:-1:-1;;;;;2735:6:0;2670:79;;6388:87;;;;;;;;;;-1:-1:-1;6460:7:0;;;;;;;;;;;;-1:-1:-1;;;6460:7:0;;;;6388:87;;7469:199;;;;;;;;;;-1:-1:-1;7469:199:0;;;;;:::i;:::-;;:::i;5044:52::-;;;;;;;;;;;;;;;;8218:94;;;;;;;;;;-1:-1:-1;8218:94:0;;;;-1:-1:-1;;;;;8218:94:0;;;9089:234;;;;;;;;;;-1:-1:-1;9089:234:0;;;;;:::i;:::-;;:::i;5168:47::-;;;;;;;;;;;;;;;;4264:26;;;;;;;;;;-1:-1:-1;4264:26:0;;;;-1:-1:-1;;;;;4264:26:0;;;6823:184;;;;;;;;;;-1:-1:-1;6823:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;6972:18:0;;;6940:7;6972:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6823:184;2911:244;;;;;;;;;;-1:-1:-1;2911:244:0;;;;;:::i;:::-;;:::i;7676:193::-;7778:4;7800:39;323:10;7823:7;7832:6;7800:8;:39::i;:::-;-1:-1:-1;7857:4:0;7676:193;;;;;:::o;7015:446::-;7147:4;7164:36;7174:6;7182:9;7193:6;7164:9;:36::i;:::-;7211:220;7234:6;323:10;7282:138;7338:6;7282:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7282:19:0;;;;;;:11;:19;;;;;;;;323:10;7282:33;;;;;;;;;;:37;:138::i;:::-;7211:8;:220::i;:::-;-1:-1:-1;7449:4:0;7015:446;;;;;:::o;8950:127::-;2424:6;;-1:-1:-1;;;;;2424:6:0;323:10;2424:22;2416:67;;;;-1:-1:-1;;;2416:67:0;;;;;;;:::i;:::-;;;;;;;;;9034:14:::1;:35:::0;8950:127::o;16636:122::-;2424:6;;-1:-1:-1;;;;;2424:6:0;323:10;2424:22;2416:67;;;;-1:-1:-1;;;2416:67:0;;;;;;;:::i;:::-;16698:15:::1;:22:::0;;-1:-1:-1;;16698:22:0::1;::::0;::::1;::::0;;16731:11:::1;:19:::0;;-1:-1:-1;;;;;16731:19:0;;::::1;-1:-1:-1::0;;;;;;16731:19:0;;::::1;::::0;;;::::1;::::0;;16636:122::o;15332:101::-;15409:15;;15389:36;;15402:5;;-1:-1:-1;;;;;15409:15:0;15389:12;:36::i;:::-;15332:101;:::o;6574:138::-;-1:-1:-1;;;;;6687:16:0;;6640:7;6687:16;;;:7;:16;;;;;;6667:37;;:19;:37::i;2757:148::-;2424:6;;-1:-1:-1;;;;;2424:6:0;323:10;2424:22;2416:67;;;;-1:-1:-1;;;2416:67:0;;;;;;;:::i;:::-;2864:1:::1;2848:6:::0;;2827:40:::1;::::0;-1:-1:-1;;;;;2848:6:0;;::::1;::::0;2827:40:::1;::::0;2864:1;;2827:40:::1;2895:1;2878:19:::0;;-1:-1:-1;;;;;;2878:19:0::1;::::0;;2757:148::o;16503:125::-;2424:6;;-1:-1:-1;;;;;2424:6:0;323:10;2424:22;2416:67;;;;-1:-1:-1;;;2416:67:0;;;;;;;:::i;:::-;4923:19:::1;16555:15;:25:::0;;;16591:19:::1;:29:::0;16503:125::o;7469:199::-;7574:4;7596:42;323:10;7620:9;7631:6;7596:9;:42::i;9089:234::-;2424:6;;-1:-1:-1;;;;;2424:6:0;323:10;2424:22;2416:67;;;;-1:-1:-1;;;2416:67:0;;;;;;;:::i;:::-;9206:9:::1;9202:114;9221:19:::0;;::::1;9202:114;;;9296:8;9262:18;:31;9281:8;;9290:1;9281:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9262:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9262:31:0;:42;;-1:-1:-1;;9262:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9242:3;::::1;::::0;::::1;:::i;:::-;;;;9202:114;;;;9089:234:::0;;;:::o;2911:244::-;2424:6;;-1:-1:-1;;;;;2424:6:0;323:10;2424:22;2416:67;;;;-1:-1:-1;;;2416:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3000:22:0;::::1;2992:73;;;::::0;-1:-1:-1;;;2992:73:0;;5297:2:1;2992:73:0::1;::::0;::::1;5279:21:1::0;5336:2;5316:18;;;5309:30;5375:34;5355:18;;;5348:62;-1:-1:-1;;;5426:18:1;;;5419:36;5472:19;;2992:73:0::1;5095:402:1::0;2992:73:0::1;3102:6;::::0;;3081:38:::1;::::0;-1:-1:-1;;;;;3081:38:0;;::::1;::::0;3102:6;::::1;::::0;3081:38:::1;::::0;::::1;3130:6;:17:::0;;-1:-1:-1;;;;;;3130:17:0::1;-1:-1:-1::0;;;;;3130:17:0;;;::::1;::::0;;;::::1;::::0;;2911:244::o;10992:369::-;-1:-1:-1;;;;;11119:19:0;;11111:68;;;;-1:-1:-1;;;11111:68:0;;5704:2:1;11111:68:0;;;5686:21:1;5743:2;5723:18;;;5716:30;5782:34;5762:18;;;5755:62;-1:-1:-1;;;5833:18:1;;;5826:34;5877:19;;11111:68:0;5502:400:1;11111:68:0;-1:-1:-1;;;;;11198:21:0;;11190:68;;;;-1:-1:-1;;;11190:68:0;;6109:2:1;11190:68:0;;;6091:21:1;6148:2;6128:18;;;6121:30;6187:34;6167:18;;;6160:62;-1:-1:-1;;;6238:18:1;;;6231:32;6280:19;;11190:68:0;5907:398:1;11190:68:0;-1:-1:-1;;;;;11269:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11321:32;;1595:25:1;;;11321:32:0;;1568:18:1;11321:32:0;;;;;;;10992:369;;;:::o;12330:2474::-;-1:-1:-1;;;;;12452:16:0;;12444:64;;;;-1:-1:-1;;;12444:64:0;;6512:2:1;12444:64:0;;;6494:21:1;6551:2;6531:18;;;6524:30;6590:34;6570:18;;;6563:62;-1:-1:-1;;;6641:18:1;;;6634:33;6684:19;;12444:64:0;6310:399:1;12444:64:0;-1:-1:-1;;;;;12528:18:0;;12520:68;;;;-1:-1:-1;;;12520:68:0;;6916:2:1;12520:68:0;;;6898:21:1;6955:2;6935:18;;;6928:30;6994:34;6974:18;;;6967:62;-1:-1:-1;;;7045:18:1;;;7038:35;7090:19;;12520:68:0;6714:401:1;12520:68:0;12616:1;12607:6;:10;12599:64;;;;-1:-1:-1;;;12599:64:0;;7322:2:1;12599:64:0;;;7304:21:1;7361:2;7341:18;;;7334:30;7400:34;7380:18;;;7373:62;-1:-1:-1;;;7451:18:1;;;7444:39;7500:19;;12599:64:0;7120:405:1;12599:64:0;2708:7;2735:6;-1:-1:-1;;;;;12692:15:0;;;2735:6;;12692:15;;;;:46;;-1:-1:-1;2708:7:0;2735:6;-1:-1:-1;;;;;12725:13:0;;;2735:6;;12725:13;;12692:46;12674:1351;;;12803:15;;;;;;;12798:210;;2708:7;2735:6;-1:-1:-1;;;;;12869:15:0;;;2735:6;;12869:15;12839:153;;;;-1:-1:-1;;;12839:153:0;;7732:2:1;12839:153:0;;;7714:21:1;7771:2;7751:18;;;7744:30;7810:34;7790:18;;;7783:62;7881:33;7861:18;;;7854:61;7932:19;;12839:153:0;7530:427:1;12839:153:0;13040:15;;13030:6;:25;;13022:66;;;;-1:-1:-1;;;13022:66:0;;8164:2:1;13022:66:0;;;8146:21:1;8203:2;8183:18;;;8176:30;8242;8222:18;;;8215:58;8290:18;;13022:66:0;7962:352:1;13022:66:0;13112:11;;-1:-1:-1;;;;;13106:17:0;;;13112:11;;13106:17;13103:167;;13177:19;;13168:6;13152:13;13162:2;13152:9;:13::i;:::-;:22;;;;:::i;:::-;:44;13144:110;;;;-1:-1:-1;;;13144:110:0;;8651:2:1;13144:110:0;;;8633:21:1;8690:2;8670:18;;;8663:30;8729:34;8709:18;;;8702:62;-1:-1:-1;;;8780:18:1;;;8773:33;8823:19;;13144:110:0;8449:399:1;13144:110:0;13286:27;13316:24;13334:4;13316:9;:24::i;:::-;13286:54;;13451:15;;13428:19;:38;13425:83;;-1:-1:-1;13491:15:0;;13425:83;13528:12;;;;;;;:53;;;;;13567:14;;13544:19;:37;;13528:53;:89;;;;-1:-1:-1;13604:13:0;;;;13603:14;13528:89;:130;;;;-1:-1:-1;13647:11:0;;-1:-1:-1;;;;;13639:19:0;;;13647:11;;13639:19;;13528:130;:177;;;;-1:-1:-1;;;;;;13681:24:0;;;;;;:18;:24;;;;;;;;13680:25;13528:177;:222;;;;-1:-1:-1;;;;;;13728:22:0;;;;;;:18;:22;;;;;;;;13727:23;13528:222;13524:490;;;13785:29;13794:19;13785:8;:29::i;:::-;13856:21;13900:16;;13896:103;;13941:38;13957:21;13941:15;:38::i;:::-;13766:248;13524:490;12750:1275;12674:1351;-1:-1:-1;;;;;14114:24:0;;14037:13;14114:24;;;:18;:24;;;;;;14053:4;;14114:24;;;:50;;-1:-1:-1;;;;;;14142:22:0;;;;;;:18;:22;;;;;;;;14114:50;14113:98;;;-1:-1:-1;14178:11:0;;-1:-1:-1;;;;;14170:19:0;;;14178:11;;14170:19;;;;:40;;-1:-1:-1;14199:11:0;;-1:-1:-1;;;;;14193:17:0;;;14199:11;;14193:17;;14170:40;14095:642;;;-1:-1:-1;14249:5:0;14095:642;;;14330:11;;-1:-1:-1;;;;;14322:19:0;;;14330:11;;14322:19;:67;;;;-1:-1:-1;14373:15:0;;-1:-1:-1;;;;;14359:30:0;;;14373:15;;14359:30;;14322:67;14319:178;;;14423:16;;14410:10;:29;14468:13;;14458:7;:23;14319:178;14554:11;;-1:-1:-1;;;;;14548:17:0;;;14554:11;;14548:17;:68;;;;-1:-1:-1;14600:15:0;;-1:-1:-1;;;;;14584:32:0;;;14600:15;;14584:32;;14548:68;14544:182;;;14650:17;;14637:10;:30;14696:14;;14686:7;:24;14544:182;14747:49;14769:4;14775:2;14779:6;14787:8;14747:21;:49::i;557:224::-;677:7;713:12;705:6;;;;697:29;;;;-1:-1:-1;;;697:29:0;;;;;;;;:::i;:::-;-1:-1:-1;737:9:0;749:5;753:1;749;:5;:::i;:::-;737:17;557:224;-1:-1:-1;;;;;557:224:0:o;11373:111::-;11445:31;11454:5;11461;4923:19;11445:8;:31::i;:::-;11373:111;;:::o;16137:323::-;16232:7;16290;;16279;:18;;16257:110;;;;-1:-1:-1;;;16257:110:0;;9188:2:1;16257:110:0;;;9170:21:1;9227:2;9207:18;;;9200:30;9266:34;9246:18;;;9239:62;-1:-1:-1;;;9317:18:1;;;9310:40;9367:19;;16257:110:0;8986:406:1;16257:110:0;16378:19;16400:10;:8;:10::i;:::-;16378:32;-1:-1:-1;16428:24:0;:7;16378:32;16428:11;:24::i;:::-;16421:31;16137:323;-1:-1:-1;;;16137:323:0:o;8420:474::-;5259:13;:20;;-1:-1:-1;;5259:20:0;5275:4;5259:20;;;8513:16:::1;::::0;;8527:1:::1;8513:16:::0;;;;;::::1;::::0;;-1:-1:-1;;8513:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;8513:16:0::1;8489:40;;8558:4;8540;8545:1;8540:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8540:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;8584:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;8584:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;8540:7;;8584:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8574:4;8579:1;8574:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8574:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;8649:15:::1;::::0;8617:62:::1;::::0;8634:4:::1;::::0;8649:15:::1;8667:11:::0;8617:8:::1;:62::i;:::-;8690:15;::::0;:196:::1;::::0;-1:-1:-1;;;8690:196:0;;-1:-1:-1;;;;;8690:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;8771:11;;8690:15:::1;::::0;8813:4;;8840::::1;::::0;8860:15:::1;::::0;8690:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5302:13:0;:21;;-1:-1:-1;;5302:21:0;;;-1:-1:-1;;;;8420:474:0:o;9329:261::-;9389:14;9406:10;9415:1;9406:6;:10;:::i;:::-;9428:17;;:34;;9389:27;;-1:-1:-1;;;;;;9428:17:0;;:34;;;;;9389:27;;9428:17;:34;:17;:34;9389:27;9428:17;:34;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9474:10:0;9483:1;9474:6;:10;:::i;:::-;9464:20;;;;:::i;:::-;;-1:-1:-1;9495:20:0;9518:15;9464:20;9518:6;:15;:::i;:::-;9544;;:38;;9495;;-1:-1:-1;;;;;;9544:15:0;;:38;;;;;9495;;9544:15;:38;:15;:38;9495;9544:15;:38;;;;;;;;;;;;;;;;;;;7877:333;8040:7;8035:51;;8062:14;:12;:14::i;:::-;8097:42;8113:6;8121:9;8132:6;8097:15;:42::i;:::-;8155:7;8150:53;;8177:16;10322:13;;10309:10;:26;10356:10;;10346:7;:20;10264:110;9827:164;9869:7;9890:15;9907;9926:19;:17;:19::i;:::-;9889:56;;-1:-1:-1;9889:56:0;-1:-1:-1;9963:20:0;9889:56;;9963:11;:20::i;:::-;9956:27;;;;9827:164;:::o;1181:132::-;1239:7;1266:39;1270:1;1273;1266:39;;;;;;;;;;;;;;;;;:3;:39::i;12116:206::-;12163:10;;:15;:31;;;;-1:-1:-1;12182:7:0;;:12;12163:31;12159:44;;;12116:206::o;12159:44::-;12229:10;;;12213:13;:26;12261:7;;;12248:10;:20;-1:-1:-1;12280:14:0;;;;12303:11;12116:206::o;10382:602::-;10527:15;10557:23;10595:12;10622:23;10660:12;10687:13;10714:19;10725:7;10714:10;:19::i;:::-;-1:-1:-1;;;;;10762:15:0;;;;;;:7;:15;;;;;;10512:221;;-1:-1:-1;10512:221:0;;-1:-1:-1;10512:221:0;;-1:-1:-1;10512:221:0;-1:-1:-1;10512:221:0;-1:-1:-1;10512:221:0;-1:-1:-1;10762:28:0;;10512:221;10762:19;:28::i;:::-;-1:-1:-1;;;;;10744:15:0;;;;;;;:7;:15;;;;;;:46;;;;10822:18;;;;;;;:39;;10845:15;10822:22;:39::i;:::-;-1:-1:-1;;;;;10801:18:0;;;;;;:7;:18;;;;;:60;10872:18;10884:5;10872:11;:18::i;:::-;10892:24;10905:4;10911;10892:12;:24::i;:::-;10949:9;-1:-1:-1;;;;;10932:44:0;10941:6;-1:-1:-1;;;;;10932:44:0;;10960:15;10932:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;10932:44:0;;;;;;;;10501:483;;;;;;10382:602;;;:::o;9999:257::-;10097:7;;10050;;;;4923:19;10165:20;10097:7;4923:19;10165:11;:20::i;:::-;10155:7;:30;10151:61;;;-1:-1:-1;;10195:7:0;;;4923:19;;-1:-1:-1;9999:257:0;-1:-1:-1;9999:257:0:o;10151:61::-;10231:7;;10240;;-1:-1:-1;9999:257:0;-1:-1:-1;9999:257:0:o;1319:223::-;1439:7;1474:12;1467:5;1459:28;;;;-1:-1:-1;;;1459:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1498:9:0;1510:5;1514:1;1510;:5;:::i;11492:616::-;11592:7;11614;11636;11658;11680;11702;11738:23;11763:12;11777:13;11807:41;11819:7;11828:10;;11840:7;;11807:11;:41::i;:::-;11737:111;;;;;;11859:19;11881:10;:8;:10::i;:::-;11859:32;;11903:15;11920:23;11945:12;11974:46;11986:7;11995:4;12001:5;12008:11;11974;:46::i;:::-;11902:118;;-1:-1:-1;11902:118:0;-1:-1:-1;11902:118:0;-1:-1:-1;12071:15:0;;-1:-1:-1;12088:4:0;;-1:-1:-1;12094:5:0;;-1:-1:-1;;;;;11492:616:0;;;;;;;:::o;787:136::-;845:7;872:43;876:1;879;872:43;;;;;;;;;;;;;;;;;:3;:43::i;372:179::-;430:7;;462:5;466:1;462;:5;:::i;:::-;450:17;;491:1;486;:6;;478:46;;;;-1:-1:-1;;;478:46:0;;11194:2:1;478:46:0;;;11176:21:1;11233:2;11213:18;;;11206:30;11272:29;11252:18;;;11245:57;11319:18;;478:46:0;10992:351:1;9602:213:0;9657:19;9679:10;:8;:10::i;:::-;9657:32;-1:-1:-1;9700:13:0;9716:22;:5;9657:32;9716:9;:22::i;:::-;9790:4;9774:22;;;;:7;:22;;;;;;9700:38;;-1:-1:-1;9774:33:0;;9700:38;9774:26;:33::i;:::-;9765:4;9749:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;9602:213:0:o;15981:148::-;16060:7;;:17;;16072:4;16060:11;:17::i;:::-;16050:7;:27;16101:10;;:20;;16116:4;16101:14;:20::i;:::-;16088:10;:33;-1:-1:-1;;15981:148:0:o;14859:467::-;15027:7;;;;15121:29;15146:3;15121:20;:7;15133;15121:11;:20::i;:::-;:24;;:29::i;:::-;15106:44;-1:-1:-1;15161:13:0;15177:28;15201:3;15177:19;:7;15189:6;15177:11;:19::i;:28::-;15161:44;-1:-1:-1;15216:23:0;15242:28;15161:44;15242:17;:7;15254:4;15242:11;:17::i;:::-;:21;;:28::i;:::-;15216:54;15306:4;;-1:-1:-1;15312:5:0;;-1:-1:-1;14859:467:0;;-1:-1:-1;;;;;14859:467:0:o;15439:534::-;15633:7;;;;15730:24;:7;15742:11;15730;:24::i;:::-;15712:42;-1:-1:-1;15765:12:0;15780:21;:4;15789:11;15780:8;:21::i;:::-;15765:36;-1:-1:-1;15812:13:0;15828:22;:5;15838:11;15828:9;:22::i;:::-;15812:38;-1:-1:-1;15861:23:0;15887:28;15812:38;15887:17;:7;15899:4;15887:11;:17::i;:28::-;15934:7;;;;-1:-1:-1;15960:4:0;;-1:-1:-1;15439:534:0;;-1:-1:-1;;;;;;;15439:534:0:o;929:246::-;987:7;1011:1;1016;1011:6;1007:47;;-1:-1:-1;1041:1:0;1034:8;;1007:47;1064:9;1076:5;1080:1;1076;:5;:::i;:::-;1064:17;-1:-1:-1;1109:1:0;1100:5;1104:1;1064:17;1100:5;:::i;:::-;:10;1092:56;;;;-1:-1:-1;;;1092:56:0;;11723:2:1;1092:56:0;;;11705:21:1;11762:2;11742:18;;;11735:30;11801:34;11781:18;;;11774:62;-1:-1:-1;;;11852:18:1;;;11845:31;11893:19;;1092:56:0;11521: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;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;2281:180::-;2340:6;2393:2;2381:9;2372:7;2368:23;2364:32;2361:52;;;2409:1;2406;2399:12;2361:52;-1:-1:-1;2432:23:1;;2281:180;-1:-1:-1;2281:180:1:o;2466:247::-;2525:6;2578:2;2566:9;2557:7;2553:23;2549:32;2546:52;;;2594:1;2591;2584:12;2546:52;2633:9;2620:23;2652:31;2677:5;2652:31;:::i;3150:782::-;3242:6;3250;3258;3311:2;3299:9;3290:7;3286:23;3282:32;3279:52;;;3327:1;3324;3317:12;3279:52;3367:9;3354:23;3396:18;3437:2;3429:6;3426:14;3423:34;;;3453:1;3450;3443:12;3423:34;3491:6;3480:9;3476:22;3466:32;;3536:7;3529:4;3525:2;3521:13;3517:27;3507:55;;3558:1;3555;3548:12;3507:55;3598:2;3585:16;3624:2;3616:6;3613:14;3610:34;;;3640:1;3637;3630:12;3610:34;3695:7;3688:4;3678:6;3675:1;3671:14;3667:2;3663:23;3659:34;3656:47;3653:67;;;3716:1;3713;3706:12;3653:67;3747:4;3739:13;;;;-1:-1:-1;3771:6:1;-1:-1:-1;;3812:20:1;;3799:34;3869:13;;3862:21;3852:32;;3842:60;;3898:1;3895;3888:12;3842:60;3921:5;3911:15;;;3150:782;;;;;:::o;3937:388::-;4005:6;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:31;4165:5;4140:31;:::i;:::-;4190:5;-1:-1:-1;4247:2:1;4232:18;;4219:32;4260:33;4219:32;4260:33;:::i;:::-;4312:7;4302:17;;;3937:388;;;;;:::o;4330:356::-;4532:2;4514:21;;;4551:18;;;4544:30;4610:34;4605:2;4590:18;;4583:62;4677:2;4662:18;;4330:356::o;4691:127::-;4752:10;4747:3;4743:20;4740:1;4733:31;4783:4;4780:1;4773:15;4807:4;4804:1;4797:15;4823:127;4884:10;4879:3;4875:20;4872:1;4865:31;4915:4;4912:1;4905:15;4939:4;4936:1;4929:15;4955:135;4994:3;5015:17;;;5012:43;;5035:18;;:::i;:::-;-1:-1:-1;5082:1:1;5071:13;;4955:135::o;8319:125::-;8384:9;;;8405:10;;;8402:36;;;8418:18;;:::i;8853:128::-;8920:9;;;8941:11;;;8938:37;;;8955:18;;:::i;9529:251::-;9599:6;9652:2;9640:9;9631:7;9627:23;9623:32;9620:52;;;9668:1;9665;9658:12;9620:52;9700:9;9694:16;9719:31;9744:5;9719:31;:::i;9785:980::-;10047:4;10095:3;10084:9;10080:19;10126:6;10115:9;10108:25;10152:2;10190:6;10185:2;10174:9;10170:18;10163:34;10233:3;10228:2;10217:9;10213:18;10206:31;10257:6;10292;10286:13;10323:6;10315;10308:22;10361:3;10350:9;10346:19;10339:26;;10400:2;10392:6;10388:15;10374:29;;10421:1;10431:195;10445:6;10442:1;10439:13;10431:195;;;10510:13;;-1:-1:-1;;;;;10506:39:1;10494:52;;10601:15;;;;10566:12;;;;10542:1;10460:9;10431:195;;;-1:-1:-1;;;;;;;10682:32:1;;;;10677:2;10662:18;;10655:60;-1:-1:-1;;;10746:3:1;10731:19;10724:35;10643:3;9785:980;-1:-1:-1;;;9785:980:1:o;10770:217::-;10810:1;10836;10826:132;;10880:10;10875:3;10871:20;10868:1;10861:31;10915:4;10912:1;10905:15;10943:4;10940:1;10933:15;10826:132;-1:-1:-1;10972:9:1;;10770:217::o;11348:168::-;11421:9;;;11452;;11469:15;;;11463:22;;11449:37;11439:71;;11490:18;;:::i

Swarm Source

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