ETH Price: $3,429.28 (-2.46%)

Token

Finally November is coming, its been very hard for... (FNNN)
 

Overview

Max Total Supply

1,000,000,000 FNNN

Holders

83

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.361641958 FNNN

Value
$0.00
0xe066c8fc0734715b00fbcabb4ece7fb6a557e33b
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:
FNNN

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-01
*/

/*
Finally November is coming, it’s been very hard for me last 5 years, i was unable to get past day 2 in no nut november, 
i was constantly relapsing due to many different reasons, like looking my neighbours single granny walking, 
or thinking about how the cute cashier tells me hello good morning, whenever i enter my workplace, mcdonalds, every day.
I am 35, living in my parents house, and THIS YEAR I WILL BE READY TO TRY NNN Again, wish me luck, 
i hope you guys also take on the NNN Challenge because not only it’s good for your health, 
it apparently makes you work more efficiently, 
so i am launching this token to test out the results of my NNN Journey and lets see the growth curve in my mental health and the token’s chart, 
Good luck

Website: https://www.keepfailingnnn.online/
Twitter: https://twitter.com/fnnn_erc20
Telegram: https://t.me/keepfailingNNN

https://twitter.com/fnnn_erc20/status/1719407057089056841

*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

contract FNNN is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

    uint256 private _currentBuyTax=15;
    uint256 private _currentSellTax=35;
    uint256 private _preventSwapBefore=15;
    uint256 private _buyCount=0;
    uint256 private constant _incrementalPercentage = 10;
    uint256 private constant _maxPercentage = 200;
    uint256 private constant _buyThreshold = 10;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = "Finally November is coming, its been very hard for me last 5 years, i was unable to get past day 2 in no nut november, i was constantly relapsing due to many different reasons, like looking my neighbours single granny walking, or thinking about how the cute cashier tells me hello good morning, whenever i enter my workplace, mcdonalds, every day. I am 35, living in my parents house, and THIS YEAR I WILL BE READY TO TRY NNN Again, wish me luck, i hope you guys also take on the NNN Challenge because not only its good for your health, it apparently makes you work more efficiently, so i am launching this token to test out the results of my NNN Journey and lets see the growth curve in my mental health and the tokens chart, Good luck";
    string private constant _symbol = "FNNN";
    uint256 public _maxTxAmount = _tTotal.mul(20).div(10000);
    uint256 public _maxWalletSize = _tTotal.mul(20).div(10000);
    uint256 public _taxSwapThreshold= 10000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 10000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

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

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul(_currentBuyTax).div(100);

            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
                if (_buyCount % _buyThreshold == 0 && _maxTxAmount < _tTotal.mul(_maxPercentage).div(10000)) {
                    uint256 incrementalAmount = _tTotal.mul(_incrementalPercentage).div(10000);
                    _maxTxAmount = _maxTxAmount.add(incrementalAmount);
                    _maxWalletSize = _maxWalletSize.add(incrementalAmount);
                }
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount.mul(_currentSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 50000000000000000) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    // Dev set MaxTxAmount and maxWallet
    function setMaxBuyAmountAndMaxWalletSize(uint256 maxBuyAmount, uint256 maxWalletAmount) external onlyOwner {
        _maxTxAmount = maxBuyAmount;
        _maxWalletSize = maxWalletAmount;
        emit MaxTxAmountUpdated(maxBuyAmount);
    }

    // Dev set buy and sell taxes
    function setBuyAndSellTax(uint256 buyTax, uint256 sellTax) external onlyOwner {
        require(buyTax <= 100, "Buy Tax must be less than 100%");
        require(sellTax <= 100, "Sell Tax must be less than 100%");
        _currentBuyTax = buyTax;
        _currentSellTax = sellTax;
    }
    
    // Users can see the currentTaxes
    function getCurrentTaxes() public view returns (uint256 currentBuyTax, uint256 currentSellTax) {
        return (_currentBuyTax, _currentSellTax);
    }

    // Users can see the MaxTxAmount and MaxWalletAmount
    function getMaxTxAmountAndWalletSize() public view returns (uint256, uint256) {
        return (_maxTxAmount, _maxWalletSize);
    }

    // Users can see current Buy Count, MaxTxAmount and MaxWalletAmount
    function getBuyCountAndLimits() public view returns (uint256, uint256, uint256) {
        return (_buyCount, _maxTxAmount, _maxWalletSize);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }


    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","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":"_taxSwapThreshold","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":"getBuyCountAndLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentTaxes","outputs":[{"internalType":"uint256","name":"currentBuyTax","type":"uint256"},{"internalType":"uint256","name":"currentSellTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTxAmountAndWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","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":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"setBuyAndSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxBuyAmountAndMaxWalletSize","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040526006805460ff19166001179055600f6007819055602360085560099081555f600a9081556200006391612710916200005c9160149162000045919062000463565b6200005590633b9aca0062000473565b9062000240565b90620002d3565b600b55620000816127106200005c6014620000456009600a62000463565b600c55620000926009600a62000463565b620000a1906298968062000473565b600d55620000b26009600a62000463565b620000c1906298968062000473565b600e556010805461ffff60a81b19169055348015620000de575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060068054610100600160a81b0319166101003302179055620001446009600a62000463565b6200015490633b9aca0062000473565b335f9081526001602081905260408220929092556003906200017d5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556006546101009004909116835291208054909216179055620001e03390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002196009600a62000463565b6200022990633b9aca0062000473565b60405190815260200160405180910390a3620004fa565b5f825f036200025157505f620002cd565b5f6200025e838562000473565b9050826200026d85836200048d565b14620002ca5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f620002ca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200031c60201b60201c565b5f81836200033f5760405162461bcd60e51b8152600401620002c19190620004ad565b505f6200034d84866200048d565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003aa57815f19048211156200038e576200038e62000356565b808516156200039c57918102915b93841c93908002906200036f565b509250929050565b5f82620003c257506001620002cd565b81620003d057505f620002cd565b8160018114620003e95760028114620003f45762000414565b6001915050620002cd565b60ff84111562000408576200040862000356565b50506001821b620002cd565b5060208310610133831016604e8410600b841016171562000439575081810a620002cd565b6200044583836200036a565b805f19048211156200045b576200045b62000356565b029392505050565b5f620002ca60ff841683620003b2565b8082028115828204841417620002cd57620002cd62000356565b5f82620004a857634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020808352835180828501525f5b81811015620004da57858101830151858201604001528201620004bc565b505f604082860101526040601f19601f8301168501019250505092915050565b611db580620005085f395ff3fe60806040526004361061014a575f3560e01c80637d1db4a5116100b3578063c876d0b91161006d578063c876d0b914610390578063c9567bf9146103a9578063d4049a4c146103bd578063d71fdd00146103dc578063d85e9c4b14610404578063dd62ed3e1461041b575f80fd5b80637d1db4a5146102e05780638da5cb5b146102f55780638f9a55c01461031b57806395d89b4114610330578063a9059cbb1461035c578063bf474bed1461037b575f80fd5b8063313ce56711610104578063313ce5671461023457806350ef22511461024f57806351bc3c851461027057806370a0823114610284578063715018a6146102b8578063751039fc146102cc575f80fd5b806306fdde0314610155578063095ea7b31461017f5780630faee56f146101ae57806318160ddd146101d157806323b872dd146101e5578063269f517c14610204575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016961045f565b604051610176919061168d565b60405180910390f35b34801561018a575f80fd5b5061019e6101993660046116ef565b610482565b6040519015158152602001610176565b3480156101b9575f80fd5b506101c3600e5481565b604051908152602001610176565b3480156101dc575f80fd5b506101c3610498565b3480156101f0575f80fd5b5061019e6101ff366004611719565b6104b8565b34801561020f575f80fd5b50600a54600b54600c5460408051938452602084019290925290820152606001610176565b34801561023f575f80fd5b5060405160098152602001610176565b34801561025a575f80fd5b5061026e610269366004611757565b61051f565b005b34801561027b575f80fd5b5061026e6105fe565b34801561028f575f80fd5b506101c361029e366004611777565b6001600160a01b03165f9081526001602052604090205490565b3480156102c3575f80fd5b5061026e610654565b3480156102d7575f80fd5b5061026e6106c5565b3480156102eb575f80fd5b506101c3600b5481565b348015610300575f80fd5b505f546040516001600160a01b039091168152602001610176565b348015610326575f80fd5b506101c3600c5481565b34801561033b575f80fd5b506040805180820190915260048152632327272760e11b6020820152610169565b348015610367575f80fd5b5061019e6103763660046116ef565b610780565b348015610386575f80fd5b506101c3600d5481565b34801561039b575f80fd5b5060065461019e9060ff1681565b3480156103b4575f80fd5b5061026e61078c565b3480156103c8575f80fd5b5061026e6103d7366004611757565b610b35565b3480156103e7575f80fd5b506007546008545b60408051928352602083019190915201610176565b34801561040f575f80fd5b50600b54600c546103ef565b348015610426575f80fd5b506101c3610435366004611792565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b60606040518061030001604052806102e08152602001611a786102e09139905090565b5f61048e338484610b9f565b5060015b92915050565b5f6104a56009600a6118bd565b6104b390633b9aca006118cb565b905090565b5f6104c4848484610cc2565b610515843361051085604051806060016040528060288152602001611d58602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611305565b610b9f565b5060019392505050565b5f546001600160a01b031633146105515760405162461bcd60e51b8152600401610548906118e2565b60405180910390fd5b60648211156105a25760405162461bcd60e51b815260206004820152601e60248201527f42757920546178206d757374206265206c657373207468616e203130302500006044820152606401610548565b60648111156105f35760405162461bcd60e51b815260206004820152601f60248201527f53656c6c20546178206d757374206265206c657373207468616e2031303025006044820152606401610548565b600791909155600855565b60065461010090046001600160a01b0316336001600160a01b031614610622575f80fd5b305f908152600160205260409020548015610640576106408161133d565b47801561065057610650816114ad565b5050565b5f546001600160a01b0316331461067d5760405162461bcd60e51b8152600401610548906118e2565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106ee5760405162461bcd60e51b8152600401610548906118e2565b6106fa6009600a6118bd565b61070890633b9aca006118cb565b600b556107176009600a6118bd565b61072590633b9aca006118cb565b600c556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61075f6009600a6118bd565b61076d90633b9aca006118cb565b60405190815260200160405180910390a1565b5f61048e338484610cc2565b5f546001600160a01b031633146107b55760405162461bcd60e51b8152600401610548906118e2565b601054600160a01b900460ff161561080f5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610548565b600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561085890309061084a6009600a6118bd565b61051090633b9aca006118cb565b600f5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cc9190611917565b6001600160a01b031663c9c6539630600f5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094f9190611917565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610999573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bd9190611917565b601080546001600160a01b039283166001600160a01b0319909116179055600f541663f305d7194730610a04816001600160a01b03165f9081526001602052604090205490565b5f80610a175f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a7d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610aa29190611932565b5050601054600f5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610af7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b1b919061195d565b506010805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610b5e5760405162461bcd60e51b8152600401610548906118e2565b600b829055600c8190556040518281527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a15050565b6001600160a01b038316610c015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610548565b6001600160a01b038216610c625760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610548565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610548565b6001600160a01b038216610d885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610548565b5f8111610de95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610548565b5f80546001600160a01b03858116911614801590610e1457505f546001600160a01b03848116911614155b156111c857610e396064610e33600754856114e890919063ffffffff16565b9061156d565b60065490915060ff1615610f1f57600f546001600160a01b03848116911614801590610e7357506010546001600160a01b03848116911614155b15610f1f57325f908152600560205260409020544311610f0d5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610548565b325f9081526005602052604090204390555b6010546001600160a01b038581169116148015610f4a5750600f546001600160a01b03848116911614155b8015610f6e57506001600160a01b0383165f9081526003602052604090205460ff16155b156110da57600b54821115610fc55760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610548565b600c5482610fe7856001600160a01b03165f9081526001602052604090205490565b610ff1919061197c565b111561103f5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610548565b600a8054905f61104e8361198f565b9190505550600a805461106191906119bb565b1580156110995750611094612710610e3360c86110806009600a6118bd565b61108e90633b9aca006118cb565b906114e8565b600b54105b156110da575f6110b5612710610e33600a6110806009826118bd565b600b549091506110c590826115ae565b600b55600c546110d590826115ae565b600c55505b6010546001600160a01b03848116911614801561110057506001600160a01b0384163014155b156111225761111f6064610e33600854856114e890919063ffffffff16565b90505b305f90815260016020526040902054601054600160a81b900460ff1615801561115857506010546001600160a01b038581169116145b801561116d5750601054600160b01b900460ff165b801561117a5750600d5481115b80156111895750600954600a54115b156111c6576111ab6111a6846111a184600e5461160c565b61160c565b61133d565b4766b1a2bc2ec500008111156111c4576111c4476114ad565b505b505b801561124057305f908152600160205260409020546111e790826115ae565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112379085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546112629083611620565b6001600160a01b0385165f908152600160205260409020556112a56112878383611620565b6001600160a01b0385165f90815260016020526040902054906115ae565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112ee8585611620565b60405190815260200160405180910390a350505050565b5f81848411156113285760405162461bcd60e51b8152600401610548919061168d565b505f61133484866119ce565b95945050505050565b6010805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611383576113836119e1565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190611917565b81600181518110611411576114116119e1565b6001600160a01b039283166020918202929092010152600f546114379130911684610b9f565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061146f9085905f908690309042906004016119f5565b5f604051808303815f87803b158015611486575f80fd5b505af1158015611498573d5f803e3d5ffd5b50506010805460ff60a81b1916905550505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610650573d5f803e3d5ffd5b5f825f036114f757505f610492565b5f61150283856118cb565b90508261150f8583611a64565b146115665760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610548565b9392505050565b5f61156683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611661565b5f806115ba838561197c565b9050838110156115665760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610548565b5f81831161161a5782611566565b50919050565b5f61156683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611305565b5f81836116815760405162461bcd60e51b8152600401610548919061168d565b505f6113348486611a64565b5f6020808352835180828501525f5b818110156116b85785810183015185820160400152820161169c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116ec575f80fd5b50565b5f8060408385031215611700575f80fd5b823561170b816116d8565b946020939093013593505050565b5f805f6060848603121561172b575f80fd5b8335611736816116d8565b92506020840135611746816116d8565b929592945050506040919091013590565b5f8060408385031215611768575f80fd5b50508035926020909101359150565b5f60208284031215611787575f80fd5b8135611566816116d8565b5f80604083850312156117a3575f80fd5b82356117ae816116d8565b915060208301356117be816116d8565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561181757815f19048211156117fd576117fd6117c9565b8085161561180a57918102915b93841c93908002906117e2565b509250929050565b5f8261182d57506001610492565b8161183957505f610492565b816001811461184f576002811461185957611875565b6001915050610492565b60ff84111561186a5761186a6117c9565b50506001821b610492565b5060208310610133831016604e8410600b8410161715611898575081810a610492565b6118a283836117dd565b805f19048211156118b5576118b56117c9565b029392505050565b5f61156660ff84168361181f565b8082028115828204841417610492576104926117c9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611927575f80fd5b8151611566816116d8565b5f805f60608486031215611944575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561196d575f80fd5b81518015158114611566575f80fd5b80820180821115610492576104926117c9565b5f600182016119a0576119a06117c9565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f826119c9576119c96119a7565b500690565b81810381811115610492576104926117c9565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a435784516001600160a01b031683529383019391830191600101611a1e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a7257611a726119a7565b50049056fe46696e616c6c79204e6f76656d62657220697320636f6d696e672c20697473206265656e2076657279206861726420666f72206d65206c61737420352079656172732c20692077617320756e61626c6520746f20676574207061737420646179203220696e206e6f206e7574206e6f76656d6265722c20692077617320636f6e7374616e746c792072656c617073696e672064756520746f206d616e7920646966666572656e7420726561736f6e732c206c696b65206c6f6f6b696e67206d79206e65696768626f7572732073696e676c65206772616e6e792077616c6b696e672c206f72207468696e6b696e672061626f757420686f7720746865206375746520636173686965722074656c6c73206d652068656c6c6f20676f6f64206d6f726e696e672c207768656e65766572206920656e746572206d7920776f726b706c6163652c206d63646f6e616c64732c206576657279206461792e204920616d2033352c206c6976696e6720696e206d7920706172656e747320686f7573652c20616e642054484953205945415220492057494c4c20424520524541445920544f20545259204e4e4e20416761696e2c2077697368206d65206c75636b2c206920686f706520796f75206775797320616c736f2074616b65206f6e20746865204e4e4e204368616c6c656e67652062656361757365206e6f74206f6e6c792069747320676f6f6420666f7220796f7572206865616c74682c206974206170706172656e746c79206d616b657320796f7520776f726b206d6f726520656666696369656e746c792c20736f206920616d206c61756e6368696e67207468697320746f6b656e20746f2074657374206f75742074686520726573756c7473206f66206d79204e4e4e204a6f75726e657920616e64206c65747320736565207468652067726f77746820637572766520696e206d79206d656e74616c206865616c746820616e642074686520746f6b656e732063686172742c20476f6f64206c75636b45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d7deff85e435142aac1022acfc34e13ee92837f87c0edd366ef8309dfb064f7464736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c80637d1db4a5116100b3578063c876d0b91161006d578063c876d0b914610390578063c9567bf9146103a9578063d4049a4c146103bd578063d71fdd00146103dc578063d85e9c4b14610404578063dd62ed3e1461041b575f80fd5b80637d1db4a5146102e05780638da5cb5b146102f55780638f9a55c01461031b57806395d89b4114610330578063a9059cbb1461035c578063bf474bed1461037b575f80fd5b8063313ce56711610104578063313ce5671461023457806350ef22511461024f57806351bc3c851461027057806370a0823114610284578063715018a6146102b8578063751039fc146102cc575f80fd5b806306fdde0314610155578063095ea7b31461017f5780630faee56f146101ae57806318160ddd146101d157806323b872dd146101e5578063269f517c14610204575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016961045f565b604051610176919061168d565b60405180910390f35b34801561018a575f80fd5b5061019e6101993660046116ef565b610482565b6040519015158152602001610176565b3480156101b9575f80fd5b506101c3600e5481565b604051908152602001610176565b3480156101dc575f80fd5b506101c3610498565b3480156101f0575f80fd5b5061019e6101ff366004611719565b6104b8565b34801561020f575f80fd5b50600a54600b54600c5460408051938452602084019290925290820152606001610176565b34801561023f575f80fd5b5060405160098152602001610176565b34801561025a575f80fd5b5061026e610269366004611757565b61051f565b005b34801561027b575f80fd5b5061026e6105fe565b34801561028f575f80fd5b506101c361029e366004611777565b6001600160a01b03165f9081526001602052604090205490565b3480156102c3575f80fd5b5061026e610654565b3480156102d7575f80fd5b5061026e6106c5565b3480156102eb575f80fd5b506101c3600b5481565b348015610300575f80fd5b505f546040516001600160a01b039091168152602001610176565b348015610326575f80fd5b506101c3600c5481565b34801561033b575f80fd5b506040805180820190915260048152632327272760e11b6020820152610169565b348015610367575f80fd5b5061019e6103763660046116ef565b610780565b348015610386575f80fd5b506101c3600d5481565b34801561039b575f80fd5b5060065461019e9060ff1681565b3480156103b4575f80fd5b5061026e61078c565b3480156103c8575f80fd5b5061026e6103d7366004611757565b610b35565b3480156103e7575f80fd5b506007546008545b60408051928352602083019190915201610176565b34801561040f575f80fd5b50600b54600c546103ef565b348015610426575f80fd5b506101c3610435366004611792565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b60606040518061030001604052806102e08152602001611a786102e09139905090565b5f61048e338484610b9f565b5060015b92915050565b5f6104a56009600a6118bd565b6104b390633b9aca006118cb565b905090565b5f6104c4848484610cc2565b610515843361051085604051806060016040528060288152602001611d58602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611305565b610b9f565b5060019392505050565b5f546001600160a01b031633146105515760405162461bcd60e51b8152600401610548906118e2565b60405180910390fd5b60648211156105a25760405162461bcd60e51b815260206004820152601e60248201527f42757920546178206d757374206265206c657373207468616e203130302500006044820152606401610548565b60648111156105f35760405162461bcd60e51b815260206004820152601f60248201527f53656c6c20546178206d757374206265206c657373207468616e2031303025006044820152606401610548565b600791909155600855565b60065461010090046001600160a01b0316336001600160a01b031614610622575f80fd5b305f908152600160205260409020548015610640576106408161133d565b47801561065057610650816114ad565b5050565b5f546001600160a01b0316331461067d5760405162461bcd60e51b8152600401610548906118e2565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106ee5760405162461bcd60e51b8152600401610548906118e2565b6106fa6009600a6118bd565b61070890633b9aca006118cb565b600b556107176009600a6118bd565b61072590633b9aca006118cb565b600c556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61075f6009600a6118bd565b61076d90633b9aca006118cb565b60405190815260200160405180910390a1565b5f61048e338484610cc2565b5f546001600160a01b031633146107b55760405162461bcd60e51b8152600401610548906118e2565b601054600160a01b900460ff161561080f5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610548565b600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561085890309061084a6009600a6118bd565b61051090633b9aca006118cb565b600f5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cc9190611917565b6001600160a01b031663c9c6539630600f5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094f9190611917565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610999573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bd9190611917565b601080546001600160a01b039283166001600160a01b0319909116179055600f541663f305d7194730610a04816001600160a01b03165f9081526001602052604090205490565b5f80610a175f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a7d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610aa29190611932565b5050601054600f5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610af7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b1b919061195d565b506010805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610b5e5760405162461bcd60e51b8152600401610548906118e2565b600b829055600c8190556040518281527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a15050565b6001600160a01b038316610c015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610548565b6001600160a01b038216610c625760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610548565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610548565b6001600160a01b038216610d885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610548565b5f8111610de95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610548565b5f80546001600160a01b03858116911614801590610e1457505f546001600160a01b03848116911614155b156111c857610e396064610e33600754856114e890919063ffffffff16565b9061156d565b60065490915060ff1615610f1f57600f546001600160a01b03848116911614801590610e7357506010546001600160a01b03848116911614155b15610f1f57325f908152600560205260409020544311610f0d5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610548565b325f9081526005602052604090204390555b6010546001600160a01b038581169116148015610f4a5750600f546001600160a01b03848116911614155b8015610f6e57506001600160a01b0383165f9081526003602052604090205460ff16155b156110da57600b54821115610fc55760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610548565b600c5482610fe7856001600160a01b03165f9081526001602052604090205490565b610ff1919061197c565b111561103f5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610548565b600a8054905f61104e8361198f565b9190505550600a805461106191906119bb565b1580156110995750611094612710610e3360c86110806009600a6118bd565b61108e90633b9aca006118cb565b906114e8565b600b54105b156110da575f6110b5612710610e33600a6110806009826118bd565b600b549091506110c590826115ae565b600b55600c546110d590826115ae565b600c55505b6010546001600160a01b03848116911614801561110057506001600160a01b0384163014155b156111225761111f6064610e33600854856114e890919063ffffffff16565b90505b305f90815260016020526040902054601054600160a81b900460ff1615801561115857506010546001600160a01b038581169116145b801561116d5750601054600160b01b900460ff165b801561117a5750600d5481115b80156111895750600954600a54115b156111c6576111ab6111a6846111a184600e5461160c565b61160c565b61133d565b4766b1a2bc2ec500008111156111c4576111c4476114ad565b505b505b801561124057305f908152600160205260409020546111e790826115ae565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112379085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546112629083611620565b6001600160a01b0385165f908152600160205260409020556112a56112878383611620565b6001600160a01b0385165f90815260016020526040902054906115ae565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112ee8585611620565b60405190815260200160405180910390a350505050565b5f81848411156113285760405162461bcd60e51b8152600401610548919061168d565b505f61133484866119ce565b95945050505050565b6010805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611383576113836119e1565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190611917565b81600181518110611411576114116119e1565b6001600160a01b039283166020918202929092010152600f546114379130911684610b9f565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061146f9085905f908690309042906004016119f5565b5f604051808303815f87803b158015611486575f80fd5b505af1158015611498573d5f803e3d5ffd5b50506010805460ff60a81b1916905550505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610650573d5f803e3d5ffd5b5f825f036114f757505f610492565b5f61150283856118cb565b90508261150f8583611a64565b146115665760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610548565b9392505050565b5f61156683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611661565b5f806115ba838561197c565b9050838110156115665760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610548565b5f81831161161a5782611566565b50919050565b5f61156683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611305565b5f81836116815760405162461bcd60e51b8152600401610548919061168d565b505f6113348486611a64565b5f6020808352835180828501525f5b818110156116b85785810183015185820160400152820161169c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116ec575f80fd5b50565b5f8060408385031215611700575f80fd5b823561170b816116d8565b946020939093013593505050565b5f805f6060848603121561172b575f80fd5b8335611736816116d8565b92506020840135611746816116d8565b929592945050506040919091013590565b5f8060408385031215611768575f80fd5b50508035926020909101359150565b5f60208284031215611787575f80fd5b8135611566816116d8565b5f80604083850312156117a3575f80fd5b82356117ae816116d8565b915060208301356117be816116d8565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561181757815f19048211156117fd576117fd6117c9565b8085161561180a57918102915b93841c93908002906117e2565b509250929050565b5f8261182d57506001610492565b8161183957505f610492565b816001811461184f576002811461185957611875565b6001915050610492565b60ff84111561186a5761186a6117c9565b50506001821b610492565b5060208310610133831016604e8410600b8410161715611898575081810a610492565b6118a283836117dd565b805f19048211156118b5576118b56117c9565b029392505050565b5f61156660ff84168361181f565b8082028115828204841417610492576104926117c9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611927575f80fd5b8151611566816116d8565b5f805f60608486031215611944575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561196d575f80fd5b81518015158114611566575f80fd5b80820180821115610492576104926117c9565b5f600182016119a0576119a06117c9565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f826119c9576119c96119a7565b500690565b81810381811115610492576104926117c9565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a435784516001600160a01b031683529383019391830191600101611a1e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a7257611a726119a7565b50049056fe46696e616c6c79204e6f76656d62657220697320636f6d696e672c20697473206265656e2076657279206861726420666f72206d65206c61737420352079656172732c20692077617320756e61626c6520746f20676574207061737420646179203220696e206e6f206e7574206e6f76656d6265722c20692077617320636f6e7374616e746c792072656c617073696e672064756520746f206d616e7920646966666572656e7420726561736f6e732c206c696b65206c6f6f6b696e67206d79206e65696768626f7572732073696e676c65206772616e6e792077616c6b696e672c206f72207468696e6b696e672061626f757420686f7720746865206375746520636173686965722074656c6c73206d652068656c6c6f20676f6f64206d6f726e696e672c207768656e65766572206920656e746572206d7920776f726b706c6163652c206d63646f6e616c64732c206576657279206461792e204920616d2033352c206c6976696e6720696e206d7920706172656e747320686f7573652c20616e642054484953205945415220492057494c4c20424520524541445920544f20545259204e4e4e20416761696e2c2077697368206d65206c75636b2c206920686f706520796f75206775797320616c736f2074616b65206f6e20746865204e4e4e204368616c6c656e67652062656361757365206e6f74206f6e6c792069747320676f6f6420666f7220796f7572206865616c74682c206974206170706172656e746c79206d616b657320796f7520776f726b206d6f726520656666696369656e746c792c20736f206920616d206c61756e6368696e67207468697320746f6b656e20746f2074657374206f75742074686520726573756c7473206f66206d79204e4e4e204a6f75726e657920616e64206c65747320736565207468652067726f77746820637572766520696e206d79206d656e74616c206865616c746820616e642074686520746f6b656e732063686172742c20476f6f64206c75636b45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d7deff85e435142aac1022acfc34e13ee92837f87c0edd366ef8309dfb064f7464736f6c63430008140033

Deployed Bytecode Sourcemap

4431:10267:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7081:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7914:161;;;;;;;;;;-1:-1:-1;7914:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7914:161:0;1023:187:1;6356:52:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;6356:52:0;1215:177:1;7358:95:0;;;;;;;;;;;;;:::i;8083:313::-;;;;;;;;;;-1:-1:-1;8083:313:0;;;;;:::i;:::-;;:::i;13374:147::-;;;;;;;;;;-1:-1:-1;13473:9:0;;13484:12;;13498:14;;13374:147;;;2060:25:1;;;2116:2;2101:18;;2094:34;;;;2144:18;;;2137:34;2048:2;2033:18;13374:147:0;1858:319:1;7267:83:0;;;;;;;;;;-1:-1:-1;7267:83:0;;5263:1;2324:36:1;;2312:2;2297:18;7267:83:0;2182:184:1;12596:292:0;;;;;;;;;;-1:-1:-1;12596:292:0;;;;;:::i;:::-;;:::i;:::-;;14347:348;;;;;;;;;;;;;:::i;7461:119::-;;;;;;;;;;-1:-1:-1;7461:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7554:18:0;7527:7;7554:18;;;:9;:18;;;;;;;7461:119;3512:148;;;;;;;;;;;;;:::i;12063:196::-;;;;;;;;;;;;;:::i;6163:56::-;;;;;;;;;;;;;;;;3298:79;;;;;;;;;;-1:-1:-1;3336:7:0;3363:6;3298:79;;-1:-1:-1;;;;;3363:6:0;;;3022:51:1;;3010:2;2995:18;3298:79:0;2876:203:1;6226:58:0;;;;;;;;;;;;;;;;7172:87;;;;;;;;;;-1:-1:-1;7244:7:0;;;;;;;;;;;;-1:-1:-1;;;7244:7:0;;;;7172:87;;7588:167;;;;;;;;;;-1:-1:-1;7588:167:0;;;;;:::i;:::-;;:::i;6291:58::-;;;;;;;;;;;;;;;;4817:39;;;;;;;;;;-1:-1:-1;4817:39:0;;;;;;;;13631:671;;;;;;;;;;;;;:::i;12309:244::-;;;;;;;;;;-1:-1:-1;12309:244:0;;;;;:::i;:::-;;:::i;12939:154::-;;;;;;;;;;-1:-1:-1;13053:14:0;;13069:15;;12939:154;;;;3258:25:1;;;3314:2;3299:18;;3292:34;;;;3231:18;12939:154:0;3084:248:1;13159:134:0;;;;;;;;;;-1:-1:-1;13256:12:0;;13270:14;;13159:134;;7763:143;;;;;;;;;;-1:-1:-1;7763:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7871:18:0;;;7844:7;7871:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7763:143;7081:83;7118:13;7151:5;;;;;;;;;;;;;;;;;7144:12;;7081:83;:::o;7914:161::-;7989:4;8006:39;1133:10;8029:7;8038:6;8006:8;:39::i;:::-;-1:-1:-1;8063:4:0;7914:161;;;;;:::o;7358:95::-;7411:7;5319:13;5263:1;5319:2;:13;:::i;:::-;5306:26;;:10;:26;:::i;:::-;7431:14;;7358:95;:::o;8083:313::-;8181:4;8198:36;8208:6;8216:9;8227:6;8198:9;:36::i;:::-;8245:121;8254:6;1133:10;8276:89;8314:6;8276:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8276:19:0;;;;;;:11;:19;;;;;;;;1133:10;8276:33;;;;;;;;;;:37;:89::i;:::-;8245:8;:121::i;:::-;-1:-1:-1;8384:4:0;8083:313;;;;;:::o;12596:292::-;3425:6;;-1:-1:-1;;;;;3425:6:0;1133:10;3425:22;3417:67;;;;-1:-1:-1;;;3417:67:0;;;;;;;:::i;:::-;;;;;;;;;12703:3:::1;12693:6;:13;;12685:56;;;::::0;-1:-1:-1;;;12685:56:0;;5981:2:1;12685:56:0::1;::::0;::::1;5963:21:1::0;6020:2;6000:18;;;5993:30;6059:32;6039:18;;;6032:60;6109:18;;12685:56:0::1;5779:354:1::0;12685:56:0::1;12771:3;12760:7;:14;;12752:58;;;::::0;-1:-1:-1;;;12752:58:0;;6340:2:1;12752:58:0::1;::::0;::::1;6322:21:1::0;6379:2;6359:18;;;6352:30;6418:33;6398:18;;;6391:61;6469:18;;12752:58:0::1;6138:355:1::0;12752:58:0::1;12821:14;:23:::0;;;;12855:15:::1;:25:::0;12596:292::o;14347:348::-;14411:10;;;;;-1:-1:-1;;;;;14411:10:0;1133;-1:-1:-1;;;;;14397:24:0;;14389:33;;;;;;14472:4;14433:20;7554:18;;;:9;:18;;;;;;14492:14;;14489:73;;14520:30;14537:12;14520:16;:30::i;:::-;14591:21;14626:12;;14623:65;;14652:24;14665:10;14652:12;:24::i;:::-;14378:317;;14347:348::o;3512:148::-;3425:6;;-1:-1:-1;;;;;3425:6:0;1133:10;3425:22;3417:67;;;;-1:-1:-1;;;3417:67:0;;;;;;;:::i;:::-;3619:1:::1;3603:6:::0;;3582:40:::1;::::0;-1:-1:-1;;;;;3603:6:0;;::::1;::::0;3582:40:::1;::::0;3619:1;;3582:40:::1;3650:1;3633:19:::0;;-1:-1:-1;;;;;;3633:19:0::1;::::0;;3512:148::o;12063:196::-;3425:6;;-1:-1:-1;;;;;3425:6:0;1133:10;3425:22;3417:67;;;;-1:-1:-1;;;3417:67:0;;;;;;;:::i;:::-;5319:13:::1;5263:1;5319:2;:13;:::i;:::-;5306:26;::::0;:10:::1;:26;:::i;:::-;12116:12;:22:::0;5319:13:::1;5263:1;5319:2;:13;:::i;:::-;5306:26;::::0;:10:::1;:26;:::i;:::-;12149:14;:22:::0;12182:20:::1;:26:::0;;-1:-1:-1;;12182:26:0::1;::::0;;12224:27:::1;5319:13;5263:1;5319:2;:13;:::i;:::-;5306:26;::::0;:10:::1;:26;:::i;:::-;12224:27;::::0;1361:25:1;;;1349:2;1334:18;12224:27:0::1;;;;;;;12063:196::o:0;7588:167::-;7666:4;7683:42;1133:10;7707:9;7718:6;7683:9;:42::i;13631:671::-;3425:6;;-1:-1:-1;;;;;3425:6:0;1133:10;3425:22;3417:67;;;;-1:-1:-1;;;3417:67:0;;;;;;;:::i;:::-;13695:11:::1;::::0;-1:-1:-1;;;13695:11:0;::::1;;;13694:12;13686:47;;;::::0;-1:-1:-1;;;13686:47:0;;6700:2:1;13686:47:0::1;::::0;::::1;6682:21:1::0;6739:2;6719:18;;;6712:30;6778:25;6758:18;;;6751:53;6821:18;;13686:47:0::1;6498:347:1::0;13686:47:0::1;13744:15;:80:::0;;-1:-1:-1;;;;;;13744:80:0::1;13781:42;13744:80:::0;;::::1;::::0;;;13835:58:::1;::::0;13852:4:::1;::::0;5319:13:::1;5263:1;5319:2;:13;:::i;:::-;5306:26;::::0;:10:::1;:26;:::i;13835:58::-;13938:15;;;;;;;;;-1:-1:-1::0;;;;;13938:15:0::1;-1:-1:-1::0;;;;;13938:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13920:55:0::1;;13984:4;13991:15;;;;;;;;;-1:-1:-1::0;;;;;13991:15:0::1;-1:-1:-1::0;;;;;13991:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13920:94;::::0;-1:-1:-1;;;;;;13920:94:0::1;::::0;;;;;;-1:-1:-1;;;;;7336:15:1;;;13920:94:0::1;::::0;::::1;7318:34:1::0;7388:15;;7368:18;;;7361:43;7253:18;;13920:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13904:13;:110:::0;;-1:-1:-1;;;;;13904:110:0;;::::1;-1:-1:-1::0;;;;;;13904:110:0;;::::1;;::::0;;14025:15:::1;::::0;::::1;:31;14064:21;14095:4;14101:24;14095:4:::0;-1:-1:-1;;;;;7554:18:0;7527:7;7554:18;;;:9;:18;;;;;;;7461:119;14101:24:::1;14126:1;14128::::0;14130:7:::1;3336::::0;3363:6;-1:-1:-1;;;;;3363:6:0;;3298:79;14130:7:::1;14025:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;14025:129:0;;;-1:-1:-1;;;;;7774:15:1;;;14025:129:0::1;::::0;::::1;7756:34:1::0;7806:18;;;7799:34;;;;7849:18;;;7842:34;;;;7892:18;;;7885:34;7956:15;;;7935:19;;;7928:44;14138:15:0::1;7988:19:1::0;;;7981:35;7690:19;;14025:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14172:13:0::1;::::0;14203:15:::1;::::0;14165:71:::1;::::0;-1:-1:-1;;;14165:71:0;;-1:-1:-1;;;;;14203:15:0;;::::1;14165:71;::::0;::::1;8512:51:1::0;-1:-1:-1;;8579:18:1;;;8572:34;14172:13:0;::::1;::::0;-1:-1:-1;14165:29:0::1;::::0;8485:18:1;;14165:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14247:11:0::1;:18:::0;;-1:-1:-1;;;;14276:18:0;-1:-1:-1;;;14276:18:0;;;13631:671::o;12309:244::-;3425:6;;-1:-1:-1;;;;;3425:6:0;1133:10;3425:22;3417:67;;;;-1:-1:-1;;;3417:67:0;;;;;;;:::i;:::-;12427:12:::1;:27:::0;;;12465:14:::1;:32:::0;;;12513::::1;::::0;1361:25:1;;;12513:32:0::1;::::0;1349:2:1;1334:18;12513:32:0::1;;;;;;;12309:244:::0;;:::o;8404:335::-;-1:-1:-1;;;;;8497:19:0;;8489:68;;;;-1:-1:-1;;;8489:68:0;;9101:2:1;8489:68:0;;;9083:21:1;9140:2;9120:18;;;9113:30;9179:34;9159:18;;;9152:62;-1:-1:-1;;;9230:18:1;;;9223:34;9274:19;;8489:68:0;8899:400:1;8489:68:0;-1:-1:-1;;;;;8576:21:0;;8568:68;;;;-1:-1:-1;;;8568:68:0;;9506:2:1;8568:68:0;;;9488:21:1;9545:2;9525:18;;;9518:30;9584:34;9564:18;;;9557:62;-1:-1:-1;;;9635:18:1;;;9628:32;9677:19;;8568:68:0;9304:398:1;8568:68:0;-1:-1:-1;;;;;8647:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8699:32;;1361:25:1;;;8699:32:0;;1334:18:1;8699:32:0;;;;;;;8404:335;;;:::o;8747:2709::-;-1:-1:-1;;;;;8835:18:0;;8827:68;;;;-1:-1:-1;;;8827:68:0;;9909:2:1;8827:68:0;;;9891:21:1;9948:2;9928:18;;;9921:30;9987:34;9967:18;;;9960:62;-1:-1:-1;;;10038:18:1;;;10031:35;10083:19;;8827:68:0;9707:401:1;8827:68:0;-1:-1:-1;;;;;8914:16:0;;8906:64;;;;-1:-1:-1;;;8906:64:0;;10315:2:1;8906:64:0;;;10297:21:1;10354:2;10334:18;;;10327:30;10393:34;10373:18;;;10366:62;-1:-1:-1;;;10444:18:1;;;10437:33;10487:19;;8906:64:0;10113:399:1;8906:64:0;8998:1;8989:6;:10;8981:64;;;;-1:-1:-1;;;8981:64:0;;10719:2:1;8981:64:0;;;10701:21:1;10758:2;10738:18;;;10731:30;10797:34;10777:18;;;10770:62;-1:-1:-1;;;10848:18:1;;;10841:39;10897:19;;8981:64:0;10517:405:1;8981:64:0;9056:17;3363:6;;-1:-1:-1;;;;;9090:15:0;;;3363:6;;9090:15;;;;:32;;-1:-1:-1;3336:7:0;3363:6;-1:-1:-1;;;;;9109:13:0;;;3363:6;;9109:13;;9090:32;9086:2014;;;9151:35;9182:3;9151:26;9162:14;;9151:6;:10;;:26;;;;:::i;:::-;:30;;:35::i;:::-;9207:20;;9139:47;;-1:-1:-1;9207:20:0;;9203:508;;;9268:15;;-1:-1:-1;;;;;9254:30:0;;;9268:15;;9254:30;;;;:62;;-1:-1:-1;9302:13:0;;-1:-1:-1;;;;;9288:28:0;;;9302:13;;9288:28;;9254:62;9250:444;;;9408:9;9379:39;;;;:28;:39;;;;;;9452:12;-1:-1:-1;9343:250:0;;;;-1:-1:-1;;;9343:250:0;;11129:2:1;9343:250:0;;;11111:21:1;11168:2;11148:18;;;11141:30;11207:34;11187:18;;;11180:62;11278:34;11258:18;;;11251:62;-1:-1:-1;;;11329:19:1;;;11322:40;11379:19;;9343:250:0;10927:477:1;9343:250:0;9647:9;9618:39;;;;:28;:39;;;;;9660:12;9618:54;;9250:444;9739:13;;-1:-1:-1;;;;;9731:21:0;;;9739:13;;9731:21;:55;;;;-1:-1:-1;9770:15:0;;-1:-1:-1;;;;;9756:30:0;;;9770:15;;9756:30;;9731:55;:82;;;;-1:-1:-1;;;;;;9791:22:0;;;;;;:18;:22;;;;;;;;9790:23;9731:82;9727:690;;;9853:12;;9843:6;:22;;9835:60;;;;-1:-1:-1;;;9835:60:0;;11611:2:1;9835:60:0;;;11593:21:1;11650:2;11630:18;;;11623:30;11689:27;11669:18;;;11662:55;11734:18;;9835:60:0;11409:349:1;9835:60:0;9948:14;;9938:6;9922:13;9932:2;-1:-1:-1;;;;;7554:18:0;7527:7;7554:18;;;:9;:18;;;;;;;7461:119;9922:13;:22;;;;:::i;:::-;:40;;9914:79;;;;-1:-1:-1;;;9914:79:0;;12095:2:1;9914:79:0;;;12077:21:1;12134:2;12114:18;;;12107:30;12173:28;12153:18;;;12146:56;12219:18;;9914:79:0;11893:350:1;9914:79:0;10012:9;:11;;;:9;:11;;;:::i;:::-;;;;;;5217:2;10046:9;;:25;;;;:::i;:::-;:30;:87;;;;-1:-1:-1;10095:38:0;10127:5;10095:27;5166:3;5319:13;5263:1;5319:2;:13;:::i;:::-;5306:26;;:10;:26;:::i;:::-;10095:11;;:27::i;:38::-;10080:12;;:53;10046:87;10042:360;;;10158:25;10186:46;10226:5;10186:35;5115:2;5319:13;5263:1;5115:2;5319:13;:::i;10186:46::-;10270:12;;10158:74;;-1:-1:-1;10270:35:0;;10158:74;10270:16;:35::i;:::-;10255:12;:50;10345:14;;:37;;10364:17;10345:18;:37::i;:::-;10328:14;:54;-1:-1:-1;10042:360:0;10443:13;;-1:-1:-1;;;;;10437:19:0;;;10443:13;;10437:19;:44;;;;-1:-1:-1;;;;;;10460:21:0;;10476:4;10460:21;;10437:44;10433:133;;;10514:36;10546:3;10514:27;10525:15;;10514:6;:10;;:27;;;;:::i;:36::-;10502:48;;10433:133;10631:4;10582:28;7554:18;;;:9;:18;;;;;;10657:6;;-1:-1:-1;;;10657:6:0;;;;10656:7;:32;;;;-1:-1:-1;10675:13:0;;-1:-1:-1;;;;;10667:21:0;;;10675:13;;10667:21;10656:32;:47;;;;-1:-1:-1;10692:11:0;;-1:-1:-1;;;10692:11:0;;;;10656:47;:89;;;;;10728:17;;10707:20;:38;10656:89;:121;;;;;10759:18;;10749:9;;:28;10656:121;10652:437;;;10798:67;10815:49;10819:6;10826:37;10830:20;10851:11;;10826:3;:37::i;:::-;10815:3;:49::i;:::-;10798:16;:67::i;:::-;10913:21;10977:17;10956:38;;10953:121;;;11019:35;11032:21;11019:12;:35::i;:::-;10779:310;10652:437;9124:1976;9086:2014;11115:11;;11112:161;;11183:4;11165:24;;;;:9;:24;;;;;;:39;;11194:9;11165:28;:39::i;:::-;11158:4;11140:24;;;;:9;:24;;;;;;;:64;;;;11222:39;;-1:-1:-1;;;;;11222:39:0;;;;;;;11251:9;1361:25:1;;1349:2;1334:18;;1215:177;11222:39:0;;;;;;;;11112:161;-1:-1:-1;;;;;11299:15:0;;;;;;:9;:15;;;;;;:27;;11319:6;11299:19;:27::i;:::-;-1:-1:-1;;;;;11283:15:0;;;;;;:9;:15;;;;;:43;11351:40;11369:21;:6;11380:9;11369:10;:21::i;:::-;-1:-1:-1;;;;;11351:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;11337:13:0;;;;;;;:9;:13;;;;;:54;;;;11407:41;;;11426:21;:6;11437:9;11426:10;:21::i;:::-;11407:41;;1361:25:1;;;1349:2;1334:18;11407:41:0;;;;;;;8816:2640;8747:2709;;;:::o;2190:190::-;2276:7;2312:12;2304:6;;;;2296:29;;;;-1:-1:-1;;;2296:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2336:9:0;2348:5;2352:1;2348;:5;:::i;:::-;2336:17;2190:190;-1:-1:-1;;;;;2190:190:0:o;11572:483::-;6690:6;:13;;-1:-1:-1;;;;6690:13:0;-1:-1:-1;;;6690:13:0;;;11674:16:::1;::::0;;11688:1:::1;11674:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11674:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11674:16:0::1;11650:40;;11719:4;11701;11706:1;11701:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11701:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11745:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11745:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11701:7;;11745:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11735:4;11740:1;11735:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11735:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11810:15:::1;::::0;11778:62:::1;::::0;11795:4:::1;::::0;11810:15:::1;11828:11:::0;11778:8:::1;:62::i;:::-;11851:15;::::0;:196:::1;::::0;-1:-1:-1;;;11851:196:0;;-1:-1:-1;;;;;11851:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11932:11;;11851:15:::1;::::0;11974:4;;12001::::1;::::0;12021:15:::1;::::0;11851:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6726:6:0;:14;;-1:-1:-1;;;;6726:14:0;;;-1:-1:-1;;;;11572:483:0:o;13529:92::-;13586:10;;:27;;:10;;;;-1:-1:-1;;;;;13586:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;2388:246;2446:7;2470:1;2475;2470:6;2466:47;;-1:-1:-1;2500:1:0;2493:8;;2466:47;2523:9;2535:5;2539:1;2535;:5;:::i;:::-;2523:17;-1:-1:-1;2568:1:0;2559:5;2563:1;2523:17;2559:5;:::i;:::-;:10;2551:56;;;;-1:-1:-1;;;2551:56:0;;14346:2:1;2551:56:0;;;14328:21:1;14385:2;14365:18;;;14358:30;14424:34;14404:18;;;14397:62;-1:-1:-1;;;14475:18:1;;;14468:31;14516:19;;2551:56:0;14144:397:1;2551:56:0;2625:1;2388:246;-1:-1:-1;;;2388:246:0:o;2642:132::-;2700:7;2727:39;2731:1;2734;2727:39;;;;;;;;;;;;;;;;;:3;:39::i;1859:179::-;1917:7;;1949:5;1953:1;1949;:5;:::i;:::-;1937:17;;1978:1;1973;:6;;1965:46;;;;-1:-1:-1;;;1965:46:0;;14748:2:1;1965:46:0;;;14730:21:1;14787:2;14767:18;;;14760:30;14826:29;14806:18;;;14799:57;14873:18;;1965:46:0;14546:351:1;11466:98:0;11523:7;11550:1;11548;:3;11547:9;;11555:1;11547:9;;;-1:-1:-1;11553:1:0;11466:98;-1:-1:-1;11466:98:0:o;2046:136::-;2104:7;2131:43;2135:1;2138;2131:43;;;;;;;;;;;;;;;;;:3;:43::i;2782:189::-;2868:7;2903:12;2896:5;2888:28;;;;-1:-1:-1;;;2888:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2927:9:0;2939:5;2943:1;2939;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;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;2371:248::-;2439:6;2447;2500:2;2488:9;2479:7;2475:23;2471:32;2468:52;;;2516:1;2513;2506:12;2468:52;-1:-1:-1;;2539:23:1;;;2609:2;2594:18;;;2581:32;;-1:-1:-1;2371:248:1:o;2624:247::-;2683:6;2736:2;2724:9;2715:7;2711:23;2707:32;2704:52;;;2752:1;2749;2742:12;2704:52;2791:9;2778:23;2810:31;2835:5;2810:31;:::i;3337:388::-;3405:6;3413;3466:2;3454:9;3445:7;3441:23;3437:32;3434:52;;;3482:1;3479;3472:12;3434:52;3521:9;3508:23;3540:31;3565:5;3540:31;:::i;:::-;3590:5;-1:-1:-1;3647:2:1;3632:18;;3619:32;3660:33;3619:32;3660:33;:::i;:::-;3712:7;3702:17;;;3337:388;;;;;:::o;3730:127::-;3791:10;3786:3;3782:20;3779:1;3772:31;3822:4;3819:1;3812:15;3846:4;3843:1;3836:15;3862:422;3951:1;3994:5;3951:1;4008:270;4029:7;4019:8;4016:21;4008:270;;;4088:4;4084:1;4080:6;4076:17;4070:4;4067:27;4064:53;;;4097:18;;:::i;:::-;4147:7;4137:8;4133:22;4130:55;;;4167:16;;;;4130:55;4246:22;;;;4206:15;;;;4008:270;;;4012:3;3862:422;;;;;:::o;4289:806::-;4338:5;4368:8;4358:80;;-1:-1:-1;4409:1:1;4423:5;;4358:80;4457:4;4447:76;;-1:-1:-1;4494:1:1;4508:5;;4447:76;4539:4;4557:1;4552:59;;;;4625:1;4620:130;;;;4532:218;;4552:59;4582:1;4573:10;;4596:5;;;4620:130;4657:3;4647:8;4644:17;4641:43;;;4664:18;;:::i;:::-;-1:-1:-1;;4720:1:1;4706:16;;4735:5;;4532:218;;4834:2;4824:8;4821:16;4815:3;4809:4;4806:13;4802:36;4796:2;4786:8;4783:16;4778:2;4772:4;4769:12;4765:35;4762:77;4759:159;;;-1:-1:-1;4871:19:1;;;4903:5;;4759:159;4950:34;4975:8;4969:4;4950:34;:::i;:::-;5020:6;5016:1;5012:6;5008:19;4999:7;4996:32;4993:58;;;5031:18;;:::i;:::-;5069:20;;4289:806;-1:-1:-1;;;4289:806:1:o;5100:140::-;5158:5;5187:47;5228:4;5218:8;5214:19;5208:4;5187:47;:::i;5245:168::-;5318:9;;;5349;;5366:15;;;5360:22;;5346:37;5336:71;;5387:18;;:::i;5418:356::-;5620:2;5602:21;;;5639:18;;;5632:30;5698:34;5693:2;5678:18;;5671:62;5765:2;5750:18;;5418:356::o;6850:251::-;6920:6;6973:2;6961:9;6952:7;6948:23;6944:32;6941:52;;;6989:1;6986;6979:12;6941:52;7021:9;7015:16;7040:31;7065:5;7040:31;:::i;8027:306::-;8115:6;8123;8131;8184:2;8172:9;8163:7;8159:23;8155:32;8152:52;;;8200:1;8197;8190:12;8152:52;8229:9;8223:16;8213:26;;8279:2;8268:9;8264:18;8258:25;8248:35;;8323:2;8312:9;8308:18;8302:25;8292:35;;8027:306;;;;;:::o;8617:277::-;8684:6;8737:2;8725:9;8716:7;8712:23;8708:32;8705:52;;;8753:1;8750;8743:12;8705:52;8785:9;8779:16;8838:5;8831:13;8824:21;8817:5;8814:32;8804:60;;8860:1;8857;8850:12;11763:125;11828:9;;;11849:10;;;11846:36;;;11862:18;;:::i;12248:135::-;12287:3;12308:17;;;12305:43;;12328:18;;:::i;:::-;-1:-1:-1;12375:1:1;12364:13;;12248:135::o;12388:127::-;12449:10;12444:3;12440:20;12437:1;12430:31;12480:4;12477:1;12470:15;12504:4;12501:1;12494:15;12520:112;12552:1;12578;12568:35;;12583:18;;:::i;:::-;-1:-1:-1;12617:9:1;;12520:112::o;12637:128::-;12704:9;;;12725:11;;;12722:37;;;12739:18;;:::i;12902:127::-;12963:10;12958:3;12954:20;12951:1;12944:31;12994:4;12991:1;12984:15;13018:4;13015:1;13008:15;13034:980;13296:4;13344:3;13333:9;13329:19;13375:6;13364:9;13357:25;13401:2;13439:6;13434:2;13423:9;13419:18;13412:34;13482:3;13477:2;13466:9;13462:18;13455:31;13506:6;13541;13535:13;13572:6;13564;13557:22;13610:3;13599:9;13595:19;13588:26;;13649:2;13641:6;13637:15;13623:29;;13670:1;13680:195;13694:6;13691:1;13688:13;13680:195;;;13759:13;;-1:-1:-1;;;;;13755:39:1;13743:52;;13850:15;;;;13815:12;;;;13791:1;13709:9;13680:195;;;-1:-1:-1;;;;;;;13931:32:1;;;;13926:2;13911:18;;13904:60;-1:-1:-1;;;13995:3:1;13980:19;13973:35;13892:3;13034:980;-1:-1:-1;;;13034:980:1:o;14019:120::-;14059:1;14085;14075:35;;14090:18;;:::i;:::-;-1:-1:-1;14124:9:1;;14019:120::o

Swarm Source

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