ETH Price: $2,401.93 (-0.83%)

Token

Notorious (Notorious)
 

Overview

Max Total Supply

10,000,000,000 Notorious

Holders

76

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
89,757,457.93481769 Notorious

Value
$0.00
0x9aca26ce349203DE539E8115083E1340EA92f64F
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:
ERC20NOTORIOUS

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-23
*/

/*

https://twitter.com/NotoriousToken
https://t.me/NotoriousErc

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.10;

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;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}  

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 ERC20NOTORIOUS is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 1e10 * 10**9;
    
    uint256 private _buyMarketingFee = 8;
    uint256 private _previousBuyMarketingFee = _buyMarketingFee;
    uint256 private _buyLiquidityFee = 2;
    uint256 private _previousBuyLiquidityFee = _buyLiquidityFee;
    
    uint256 private _sellMarketingFee = 8;
    uint256 private _previousSellMarketingFee = _sellMarketingFee;
    uint256 private _sellLiquidityFee = 2;
    uint256 private _previousSellLiquidityFee = _sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;

    address payable private _MarketingWallet;
    address payable private _liquidityWallet;
    
    string private constant _name = "Notorious";
    string private constant _symbol = "Notorious";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private swapping;
    bool private inSwap = false;
    bool private swapEnabled = false;
    
    uint256 private _maxBuyAmount = _tTotal;
    uint256 private _maxSellAmount = _tTotal;
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private swapTokensAtAmount = 0;
    
    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event MaxSellAmountUpdated(uint _maxSellAmount);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _MarketingWallet = payable(0x16c0b59E0618bC8bf3B72760Ab4D4eeAb785Cebd);
        _liquidityWallet = payable(0x244246a1d53BBA0045e46Ae4B542d284D27B722F);
        _rOwned[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_MarketingWallet] = true;
        _isExcludedFromFee[_liquidityWallet] = true;
        emit Transfer(address(0xbB2A56543df6D2070cfB6A68f8e16bf5B2237A2e), _msgSender(), _tTotal);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    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 _rOwned[account];
    }

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

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

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

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

    function setSwapEnabled(bool onoff) external onlyOwner(){
        swapEnabled = onoff;
    }

    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");
        bool takeFee = false;
        bool shouldSwap = false;
        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {

            takeFee = true;
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _maxBuyAmount, "Transfer amount exceeds the maxBuyAmount.");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount.");
            }
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !_isExcludedFromFee[from]) {
                require(amount <= _maxSellAmount, "Transfer amount exceeds the maxSellAmount.");
                shouldSwap = true;
            }
        }

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = (contractTokenBalance > swapTokensAtAmount) && shouldSwap;

        if (canSwap && swapEnabled && !swapping && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        
        
        uint256 ethForLiquidity = ethBalance - ethForMarketing;
        
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
        
        
        (success,) = address(_MarketingWallet).call{value: address(this).balance}("");
    }

    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 addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _liquidityWallet,
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _MarketingWallet.transfer(amount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        _maxBuyAmount = 1e8 * 10**9;
        _maxSellAmount = 1e8 * 10**9;
        _maxWalletAmount = 1e8 * 10**9;
        swapTokensAtAmount = 5e7 * 10**9;
        tradingOpen = true;
        
    }


    function setMaxBuyAmount(uint256 maxBuy) public onlyOwner {
        _maxBuyAmount = maxBuy;
    }

    function setMaxSellAmount(uint256 maxSell) public onlyOwner {
        _maxSellAmount = maxSell;
    }
    
    function setMaxWalletAmount(uint256 maxToken) public onlyOwner {
        _maxWalletAmount = maxToken;
    }
    
    function setSwapTokensAtAmount(uint256 newAmount) public onlyOwner {
        require(newAmount >= 1e3 * 10**9, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= 5e6 * 10**9, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
    }

    function setMarketingWallet(address MarketingWallet) public onlyOwner() {
        require(MarketingWallet != address(0), "MarketingWallet address cannot be 0");
        _isExcludedFromFee[_MarketingWallet] = false;
        _MarketingWallet = payable(MarketingWallet);
        _isExcludedFromFee[_MarketingWallet] = true;
    }


    function setLiquidityWallet(address liquidityWallet) public onlyOwner() {
        require(liquidityWallet != address(0), "liquidityWallet address cannot be 0");
        _isExcludedFromFee[_liquidityWallet] = false;
        _liquidityWallet = payable(liquidityWallet);
        _isExcludedFromFee[_liquidityWallet] = true;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setBuyFee(uint256 buyMarketingFee, uint256 buyLiquidityFee) external onlyOwner {
        require(buyMarketingFee + buyLiquidityFee <= 6, "Must keep buy taxes below 6%");
        _buyMarketingFee = buyMarketingFee;
        _buyLiquidityFee = buyLiquidityFee;
    }

    function setSellFee(uint256 sellMarketingFee, uint256 sellLiquidityFee) external onlyOwner {
        require(sellMarketingFee + sellLiquidityFee <= 6, "Must keep sell taxes below 6%");
        _sellMarketingFee = sellMarketingFee;
        _sellLiquidityFee = sellLiquidityFee;
    }


    function removeAllFee() private {
        if(_buyMarketingFee == 0 && _buyLiquidityFee == 0 && _sellMarketingFee == 0 && _sellLiquidityFee == 0) return;
        
        _previousBuyMarketingFee = _buyMarketingFee;
        _previousBuyLiquidityFee = _buyLiquidityFee;
        _previousSellMarketingFee = _sellMarketingFee;
        _previousSellLiquidityFee = _sellLiquidityFee;
        
        _buyMarketingFee = 0;
        _buyLiquidityFee = 0;
        _sellMarketingFee = 0;
        _sellLiquidityFee = 0;
    }
    
    function restoreAllFee() private {
        _buyMarketingFee = _previousBuyMarketingFee;
        _buyLiquidityFee = _previousBuyLiquidityFee;
        _sellMarketingFee = _previousSellMarketingFee;
        _sellLiquidityFee = _previousSellLiquidityFee;
    }

        
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee, bool isSell) private {
        if(!takeFee) {
            removeAllFee();
        } else {
            amount = _takeFees(sender, amount, isSell);
        }

        _transferStandard(sender, recipient, amount);
        
        if(!takeFee) {
            restoreAllFee();
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tAmount);
        emit Transfer(sender, recipient, tAmount);
    }

    function _takeFees(address sender, uint256 amount, bool isSell) private returns (uint256) {
        uint256 _totalFees;
        uint256 mrktFee;
        uint256 liqFee;
        
        _totalFees = _getTotalFees(isSell);
        if (isSell) {
            mrktFee = _sellMarketingFee;
            liqFee = _sellLiquidityFee;
        } else {
            mrktFee = _buyMarketingFee;
            liqFee = _buyLiquidityFee;
        }

        uint256 fees = amount.mul(_totalFees).div(100);
        tokensForMarketing += fees * mrktFee / _totalFees;
        tokensForLiquidity += fees * liqFee / _totalFees;
            
        if(fees > 0) {
            _transferStandard(sender, address(this), fees);
        }
            
        return amount -= fees;
    }

    receive() external payable {}
    
    function manualswap() public onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() public onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function withdrawStuckETH() external onlyOwner {
        require(!tradingOpen, "Can only withdraw if trading hasn't started");
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function _getTotalFees(bool isSell) private view returns(uint256) {
        if (isSell) {
            return _sellMarketingFee + _sellLiquidityFee;
        }
        return _buyMarketingFee + _buyLiquidityFee;
    }
}

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":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"MaxSellAmountUpdated","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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":[{"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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"MarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxToken","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600860058190556006819055600260078190558082556009829055600a91909155600b819055600c556012805461ffff60b01b19169055678ac7230489e800006013819055601481905560155560006016553480156200006357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f80546001600160a01b03199081167316c0b59e0618bc8bf3b72760ab4d4eeab785cebd179091556010805490911673244246a1d53bba0045e46ae4b542d284d27b722f179055678ac7230489e8000060026000620001023390565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600460006200013c6200043760201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155600f54821684528284208054861682179055601054909116835291208054909216179055620001ad3390565b6001600160a01b031673bb2a56543df6d2070cfb6a68f8e16bf5b2237a2e6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e800006040516200020e91815260200190565b60405180910390a3601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155620002543082678ac7230489e8000062000446565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000293573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b9919062000572565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000307573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032d919062000572565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200037b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a1919062000572565b601280546001600160a01b0319166001600160a01b0392831690811790915560115460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af115801562000409573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042f9190620005a4565b5050620005c8565b6000546001600160a01b031690565b6001600160a01b038316620004ae5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004a5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000602082840312156200058557600080fd5b81516001600160a01b03811681146200059d57600080fd5b9392505050565b600060208284031215620005b757600080fd5b815180151581146200059d57600080fd5b611f0a80620005d86000396000f3fe6080604052600436106101855760003560e01c80638da5cb5b116100d1578063dd62ed3e1161008a578063ea2f0b3711610064578063ea2f0b371461047d578063f34eb0b81461049d578063f5648a4f146104bd578063fb0ecfa4146104d257600080fd5b8063dd62ed3e146103f7578063e01af92c1461043d578063e99c9d091461045d57600080fd5b80638da5cb5b1461036557806395d89b4114610191578063a9059cbb1461038d578063afa4f3b2146103ad578063c3c8cd80146103cd578063c9567bf9146103e257600080fd5b8063313ce5671161013e5780636ac9a870116101185780636ac9a870146102e55780636fc3eaec1461030557806370a082311461031a578063715018a61461035057600080fd5b8063313ce56714610289578063437823ec146102a55780635d098b38146102c557600080fd5b806306fdde0314610191578063095ea7b3146101d257806318160ddd1461020257806323b872dd1461022757806327a14fc214610247578063296f0a0c1461026957600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201825260098152684e6f746f72696f757360b81b602082015290516101c99190611b95565b60405180910390f35b3480156101de57600080fd5b506101f26101ed366004611bff565b6104f2565b60405190151581526020016101c9565b34801561020e57600080fd5b50678ac7230489e800005b6040519081526020016101c9565b34801561023357600080fd5b506101f2610242366004611c2b565b610509565b34801561025357600080fd5b50610267610262366004611c6c565b610572565b005b34801561027557600080fd5b50610267610284366004611c85565b6105aa565b34801561029557600080fd5b50604051600981526020016101c9565b3480156102b157600080fd5b506102676102c0366004611c85565b610686565b3480156102d157600080fd5b506102676102e0366004611c85565b6106d4565b3480156102f157600080fd5b50610267610300366004611ca2565b6107b0565b34801561031157600080fd5b5061026761083f565b34801561032657600080fd5b50610219610335366004611c85565b6001600160a01b031660009081526002602052604090205490565b34801561035c57600080fd5b50610267610876565b34801561037157600080fd5b506000546040516001600160a01b0390911681526020016101c9565b34801561039957600080fd5b506101f26103a8366004611bff565b6108ea565b3480156103b957600080fd5b506102676103c8366004611c6c565b6108f7565b3480156103d957600080fd5b50610267610a0d565b3480156103ee57600080fd5b50610267610a50565b34801561040357600080fd5b50610219610412366004611cc4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561044957600080fd5b50610267610458366004611cfd565b610b10565b34801561046957600080fd5b50610267610478366004611c6c565b610b58565b34801561048957600080fd5b50610267610498366004611c85565b610b87565b3480156104a957600080fd5b506102676104b8366004611c6c565b610bd2565b3480156104c957600080fd5b50610267610c01565b3480156104de57600080fd5b506102676104ed366004611ca2565b610ce6565b60006104ff338484610d75565b5060015b92915050565b6000610516848484610e9a565b610568843361056385604051806060016040528060288152602001611ead602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611375565b610d75565b5060019392505050565b6000546001600160a01b031633146105a55760405162461bcd60e51b815260040161059c90611d1f565b60405180910390fd5b601555565b6000546001600160a01b031633146105d45760405162461bcd60e51b815260040161059c90611d1f565b6001600160a01b0381166106365760405162461bcd60e51b815260206004820152602360248201527f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260448201526206520360ec1b606482015260840161059c565b601080546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b031633146106b05760405162461bcd60e51b815260040161059c90611d1f565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146106fe5760405162461bcd60e51b815260040161059c90611d1f565b6001600160a01b0381166107605760405162461bcd60e51b815260206004820152602360248201527f4d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206260448201526206520360ec1b606482015260840161059c565b600f80546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b031633146107da5760405162461bcd60e51b815260040161059c90611d1f565b60066107e68284611d6a565b11156108345760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702073656c6c2074617865732062656c6f77203625000000604482015260640161059c565b600991909155600b55565b6000546001600160a01b031633146108695760405162461bcd60e51b815260040161059c90611d1f565b47610873816113af565b50565b6000546001600160a01b031633146108a05760405162461bcd60e51b815260040161059c90611d1f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006104ff338484610e9a565b6000546001600160a01b031633146109215760405162461bcd60e51b815260040161059c90611d1f565b64e8d4a510008110156109945760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161059c565b6611c37937e08000811115610a085760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161059c565b601655565b6000546001600160a01b03163314610a375760405162461bcd60e51b815260040161059c90611d1f565b30600090815260026020526040902054610873816113ed565b6000546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161059c90611d1f565b601254600160a01b900460ff1615610ad45760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161059c565b6012805467016345785d8a00006013819055601481905560155566b1a2bc2ec5000060165563ff0000ff60a01b1916630100000160a01b179055565b6000546001600160a01b03163314610b3a5760405162461bcd60e51b815260040161059c90611d1f565b60128054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610b825760405162461bcd60e51b815260040161059c90611d1f565b601455565b6000546001600160a01b03163314610bb15760405162461bcd60e51b815260040161059c90611d1f565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314610bfc5760405162461bcd60e51b815260040161059c90611d1f565b601355565b6000546001600160a01b03163314610c2b5760405162461bcd60e51b815260040161059c90611d1f565b601254600160a01b900460ff1615610c995760405162461bcd60e51b815260206004820152602b60248201527f43616e206f6e6c792077697468647261772069662074726164696e672068617360448201526a1b89dd081cdd185c9d195960aa1b606482015260840161059c565b604051600090339047908381818185875af1925050503d8060008114610cdb576040519150601f19603f3d011682016040523d82523d6000602084013e610ce0565b606091505b50505050565b6000546001600160a01b03163314610d105760405162461bcd60e51b815260040161059c90611d1f565b6006610d1c8284611d6a565b1115610d6a5760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b656570206275792074617865732062656c6f7720362500000000604482015260640161059c565b600591909155600755565b6001600160a01b038316610dd75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059c565b6001600160a01b038216610e385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610efe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059c565b6001600160a01b038216610f605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059c565b60008111610fc25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161059c565b600080610fd76000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561100657506000546001600160a01b03858116911614155b801561101a57506001600160a01b03841615155b801561103157506001600160a01b03841661dead14155b80156110475750601254600160a81b900460ff16155b1561124e57601254600192506001600160a01b03868116911614801561107b57506011546001600160a01b03858116911614155b80156110a057506001600160a01b03841660009081526004602052604090205460ff16155b15611190576013548311156111095760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b606482015260840161059c565b6015548361112c866001600160a01b031660009081526002602052604090205490565b6111369190611d6a565b11156111905760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b606482015260840161059c565b6012546001600160a01b0385811691161480156111bb57506011546001600160a01b03868116911614155b80156111e057506001600160a01b03851660009081526004602052604090205460ff16155b1561124e5760145483111561124a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b606482015260840161059c565b5060015b6001600160a01b03851660009081526004602052604090205460ff168061128d57506001600160a01b03841660009081526004602052604090205460ff165b1561129757600091505b3060009081526002602052604081205490506000601654821180156112b95750825b90508080156112d15750601254600160b81b900460ff165b80156112e75750601254600160a81b900460ff16155b801561130c57506001600160a01b03871660009081526004602052604090205460ff16155b801561133157506001600160a01b03861660009081526004602052604090205460ff16155b1561135f576012805460ff60a81b1916600160a81b179055611351611567565b6012805460ff60a81b191690555b61136c8787878787611716565b50505050505050565b600081848411156113995760405162461bcd60e51b815260040161059c9190611b95565b5060006113a68486611d82565b95945050505050565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113e9573d6000803e3d6000fd5b5050565b6012805460ff60b01b1916600160b01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061143557611435611d99565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561148e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b29190611daf565b816001815181106114c5576114c5611d99565b6001600160a01b0392831660209182029290920101526011546114eb9130911684610d75565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790611524908590600090869030904290600401611dcc565b600060405180830381600087803b15801561153e57600080fd5b505af1158015611552573d6000803e3d6000fd5b50506012805460ff60b01b1916905550505050565b3060009081526002602052604081205490506000600d54600e5461158b9190611d6a565b9050600082158061159a575081155b156115a457505050565b6016546115b290600a611e3d565b8311156115ca576016546115c790600a611e3d565b92505b6000600283600e54866115dd9190611e3d565b6115e79190611e5c565b6115f19190611e5c565b905060006115ff858361176a565b90504761160b826113ed565b6000611617478361176a565b9050600061163a87611634600d54856117b390919063ffffffff16565b90611832565b905060006116488284611d82565b6000600e819055600d55905085158015906116635750600081115b156116b6576116728682611874565b600e54604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b600f546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611703576040519150601f19603f3d011682016040523d82523d6000602084013e611708565b606091505b505050505050505050505050565b8161172857611723611921565b611736565b61173385848361197c565b92505b611741858585611a3a565b8161176357611763600654600555600854600755600a54600955600c54600b55565b5050505050565b60006117ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611375565b9392505050565b6000826117c257506000610503565b60006117ce8385611e3d565b9050826117db8583611e5c565b146117ac5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161059c565b60006117ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ae0565b60115461188c9030906001600160a01b031684610d75565b60115460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156118fc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117639190611e7e565b6005541580156119315750600754155b801561193d5750600954155b80156119495750600b54155b1561195057565b600580546006556007805460085560098054600a55600b8054600c556000938490559183905582905555565b60008060008061198b85611b0e565b925084156119a0575050600954600b546119a9565b50506005546007545b60006119ba606461163489876117b3565b9050836119c78483611e3d565b6119d19190611e5c565b600d60008282546119e29190611d6a565b909155508490506119f38383611e3d565b6119fd9190611e5c565b600e6000828254611a0e9190611d6a565b90915550508015611a2457611a24883083611a3a565b611a2e8188611d82565b98975050505050505050565b6001600160a01b038316600090815260026020526040902054611a5d908261176a565b6001600160a01b038085166000908152600260205260408082209390935590841681522054611a8c9082611b36565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e8d9085815260200190565b60008183611b015760405162461bcd60e51b815260040161059c9190611b95565b5060006113a68486611e5c565b60008115611b2657600b546009546105039190611d6a565b6007546005546105039190611d6a565b600080611b438385611d6a565b9050838110156117ac5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161059c565b600060208083528351808285015260005b81811015611bc257858101830151858201604001528201611ba6565b81811115611bd4576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461087357600080fd5b60008060408385031215611c1257600080fd5b8235611c1d81611bea565b946020939093013593505050565b600080600060608486031215611c4057600080fd5b8335611c4b81611bea565b92506020840135611c5b81611bea565b929592945050506040919091013590565b600060208284031215611c7e57600080fd5b5035919050565b600060208284031215611c9757600080fd5b81356117ac81611bea565b60008060408385031215611cb557600080fd5b50508035926020909101359150565b60008060408385031215611cd757600080fd5b8235611ce281611bea565b91506020830135611cf281611bea565b809150509250929050565b600060208284031215611d0f57600080fd5b813580151581146117ac57600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611d7d57611d7d611d54565b500190565b600082821015611d9457611d94611d54565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611dc157600080fd5b81516117ac81611bea565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e1c5784516001600160a01b031683529383019391830191600101611df7565b50506001600160a01b03969096166060850152505050608001529392505050565b6000816000190483118215151615611e5757611e57611d54565b500290565b600082611e7957634e487b7160e01b600052601260045260246000fd5b500490565b600080600060608486031215611e9357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202dba49c867ada51c539949ab81040d5f0900ec31e871e551c3876af19cdf5d4b64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106101855760003560e01c80638da5cb5b116100d1578063dd62ed3e1161008a578063ea2f0b3711610064578063ea2f0b371461047d578063f34eb0b81461049d578063f5648a4f146104bd578063fb0ecfa4146104d257600080fd5b8063dd62ed3e146103f7578063e01af92c1461043d578063e99c9d091461045d57600080fd5b80638da5cb5b1461036557806395d89b4114610191578063a9059cbb1461038d578063afa4f3b2146103ad578063c3c8cd80146103cd578063c9567bf9146103e257600080fd5b8063313ce5671161013e5780636ac9a870116101185780636ac9a870146102e55780636fc3eaec1461030557806370a082311461031a578063715018a61461035057600080fd5b8063313ce56714610289578063437823ec146102a55780635d098b38146102c557600080fd5b806306fdde0314610191578063095ea7b3146101d257806318160ddd1461020257806323b872dd1461022757806327a14fc214610247578063296f0a0c1461026957600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201825260098152684e6f746f72696f757360b81b602082015290516101c99190611b95565b60405180910390f35b3480156101de57600080fd5b506101f26101ed366004611bff565b6104f2565b60405190151581526020016101c9565b34801561020e57600080fd5b50678ac7230489e800005b6040519081526020016101c9565b34801561023357600080fd5b506101f2610242366004611c2b565b610509565b34801561025357600080fd5b50610267610262366004611c6c565b610572565b005b34801561027557600080fd5b50610267610284366004611c85565b6105aa565b34801561029557600080fd5b50604051600981526020016101c9565b3480156102b157600080fd5b506102676102c0366004611c85565b610686565b3480156102d157600080fd5b506102676102e0366004611c85565b6106d4565b3480156102f157600080fd5b50610267610300366004611ca2565b6107b0565b34801561031157600080fd5b5061026761083f565b34801561032657600080fd5b50610219610335366004611c85565b6001600160a01b031660009081526002602052604090205490565b34801561035c57600080fd5b50610267610876565b34801561037157600080fd5b506000546040516001600160a01b0390911681526020016101c9565b34801561039957600080fd5b506101f26103a8366004611bff565b6108ea565b3480156103b957600080fd5b506102676103c8366004611c6c565b6108f7565b3480156103d957600080fd5b50610267610a0d565b3480156103ee57600080fd5b50610267610a50565b34801561040357600080fd5b50610219610412366004611cc4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561044957600080fd5b50610267610458366004611cfd565b610b10565b34801561046957600080fd5b50610267610478366004611c6c565b610b58565b34801561048957600080fd5b50610267610498366004611c85565b610b87565b3480156104a957600080fd5b506102676104b8366004611c6c565b610bd2565b3480156104c957600080fd5b50610267610c01565b3480156104de57600080fd5b506102676104ed366004611ca2565b610ce6565b60006104ff338484610d75565b5060015b92915050565b6000610516848484610e9a565b610568843361056385604051806060016040528060288152602001611ead602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611375565b610d75565b5060019392505050565b6000546001600160a01b031633146105a55760405162461bcd60e51b815260040161059c90611d1f565b60405180910390fd5b601555565b6000546001600160a01b031633146105d45760405162461bcd60e51b815260040161059c90611d1f565b6001600160a01b0381166106365760405162461bcd60e51b815260206004820152602360248201527f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260448201526206520360ec1b606482015260840161059c565b601080546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b031633146106b05760405162461bcd60e51b815260040161059c90611d1f565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146106fe5760405162461bcd60e51b815260040161059c90611d1f565b6001600160a01b0381166107605760405162461bcd60e51b815260206004820152602360248201527f4d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206260448201526206520360ec1b606482015260840161059c565b600f80546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b031633146107da5760405162461bcd60e51b815260040161059c90611d1f565b60066107e68284611d6a565b11156108345760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702073656c6c2074617865732062656c6f77203625000000604482015260640161059c565b600991909155600b55565b6000546001600160a01b031633146108695760405162461bcd60e51b815260040161059c90611d1f565b47610873816113af565b50565b6000546001600160a01b031633146108a05760405162461bcd60e51b815260040161059c90611d1f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006104ff338484610e9a565b6000546001600160a01b031633146109215760405162461bcd60e51b815260040161059c90611d1f565b64e8d4a510008110156109945760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161059c565b6611c37937e08000811115610a085760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161059c565b601655565b6000546001600160a01b03163314610a375760405162461bcd60e51b815260040161059c90611d1f565b30600090815260026020526040902054610873816113ed565b6000546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161059c90611d1f565b601254600160a01b900460ff1615610ad45760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161059c565b6012805467016345785d8a00006013819055601481905560155566b1a2bc2ec5000060165563ff0000ff60a01b1916630100000160a01b179055565b6000546001600160a01b03163314610b3a5760405162461bcd60e51b815260040161059c90611d1f565b60128054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610b825760405162461bcd60e51b815260040161059c90611d1f565b601455565b6000546001600160a01b03163314610bb15760405162461bcd60e51b815260040161059c90611d1f565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314610bfc5760405162461bcd60e51b815260040161059c90611d1f565b601355565b6000546001600160a01b03163314610c2b5760405162461bcd60e51b815260040161059c90611d1f565b601254600160a01b900460ff1615610c995760405162461bcd60e51b815260206004820152602b60248201527f43616e206f6e6c792077697468647261772069662074726164696e672068617360448201526a1b89dd081cdd185c9d195960aa1b606482015260840161059c565b604051600090339047908381818185875af1925050503d8060008114610cdb576040519150601f19603f3d011682016040523d82523d6000602084013e610ce0565b606091505b50505050565b6000546001600160a01b03163314610d105760405162461bcd60e51b815260040161059c90611d1f565b6006610d1c8284611d6a565b1115610d6a5760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b656570206275792074617865732062656c6f7720362500000000604482015260640161059c565b600591909155600755565b6001600160a01b038316610dd75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059c565b6001600160a01b038216610e385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610efe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059c565b6001600160a01b038216610f605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059c565b60008111610fc25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161059c565b600080610fd76000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561100657506000546001600160a01b03858116911614155b801561101a57506001600160a01b03841615155b801561103157506001600160a01b03841661dead14155b80156110475750601254600160a81b900460ff16155b1561124e57601254600192506001600160a01b03868116911614801561107b57506011546001600160a01b03858116911614155b80156110a057506001600160a01b03841660009081526004602052604090205460ff16155b15611190576013548311156111095760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b606482015260840161059c565b6015548361112c866001600160a01b031660009081526002602052604090205490565b6111369190611d6a565b11156111905760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b606482015260840161059c565b6012546001600160a01b0385811691161480156111bb57506011546001600160a01b03868116911614155b80156111e057506001600160a01b03851660009081526004602052604090205460ff16155b1561124e5760145483111561124a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b606482015260840161059c565b5060015b6001600160a01b03851660009081526004602052604090205460ff168061128d57506001600160a01b03841660009081526004602052604090205460ff165b1561129757600091505b3060009081526002602052604081205490506000601654821180156112b95750825b90508080156112d15750601254600160b81b900460ff165b80156112e75750601254600160a81b900460ff16155b801561130c57506001600160a01b03871660009081526004602052604090205460ff16155b801561133157506001600160a01b03861660009081526004602052604090205460ff16155b1561135f576012805460ff60a81b1916600160a81b179055611351611567565b6012805460ff60a81b191690555b61136c8787878787611716565b50505050505050565b600081848411156113995760405162461bcd60e51b815260040161059c9190611b95565b5060006113a68486611d82565b95945050505050565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113e9573d6000803e3d6000fd5b5050565b6012805460ff60b01b1916600160b01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061143557611435611d99565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561148e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b29190611daf565b816001815181106114c5576114c5611d99565b6001600160a01b0392831660209182029290920101526011546114eb9130911684610d75565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790611524908590600090869030904290600401611dcc565b600060405180830381600087803b15801561153e57600080fd5b505af1158015611552573d6000803e3d6000fd5b50506012805460ff60b01b1916905550505050565b3060009081526002602052604081205490506000600d54600e5461158b9190611d6a565b9050600082158061159a575081155b156115a457505050565b6016546115b290600a611e3d565b8311156115ca576016546115c790600a611e3d565b92505b6000600283600e54866115dd9190611e3d565b6115e79190611e5c565b6115f19190611e5c565b905060006115ff858361176a565b90504761160b826113ed565b6000611617478361176a565b9050600061163a87611634600d54856117b390919063ffffffff16565b90611832565b905060006116488284611d82565b6000600e819055600d55905085158015906116635750600081115b156116b6576116728682611874565b600e54604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b600f546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611703576040519150601f19603f3d011682016040523d82523d6000602084013e611708565b606091505b505050505050505050505050565b8161172857611723611921565b611736565b61173385848361197c565b92505b611741858585611a3a565b8161176357611763600654600555600854600755600a54600955600c54600b55565b5050505050565b60006117ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611375565b9392505050565b6000826117c257506000610503565b60006117ce8385611e3d565b9050826117db8583611e5c565b146117ac5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161059c565b60006117ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ae0565b60115461188c9030906001600160a01b031684610d75565b60115460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156118fc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117639190611e7e565b6005541580156119315750600754155b801561193d5750600954155b80156119495750600b54155b1561195057565b600580546006556007805460085560098054600a55600b8054600c556000938490559183905582905555565b60008060008061198b85611b0e565b925084156119a0575050600954600b546119a9565b50506005546007545b60006119ba606461163489876117b3565b9050836119c78483611e3d565b6119d19190611e5c565b600d60008282546119e29190611d6a565b909155508490506119f38383611e3d565b6119fd9190611e5c565b600e6000828254611a0e9190611d6a565b90915550508015611a2457611a24883083611a3a565b611a2e8188611d82565b98975050505050505050565b6001600160a01b038316600090815260026020526040902054611a5d908261176a565b6001600160a01b038085166000908152600260205260408082209390935590841681522054611a8c9082611b36565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e8d9085815260200190565b60008183611b015760405162461bcd60e51b815260040161059c9190611b95565b5060006113a68486611e5c565b60008115611b2657600b546009546105039190611d6a565b6007546005546105039190611d6a565b600080611b438385611d6a565b9050838110156117ac5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161059c565b600060208083528351808285015260005b81811015611bc257858101830151858201604001528201611ba6565b81811115611bd4576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461087357600080fd5b60008060408385031215611c1257600080fd5b8235611c1d81611bea565b946020939093013593505050565b600080600060608486031215611c4057600080fd5b8335611c4b81611bea565b92506020840135611c5b81611bea565b929592945050506040919091013590565b600060208284031215611c7e57600080fd5b5035919050565b600060208284031215611c9757600080fd5b81356117ac81611bea565b60008060408385031215611cb557600080fd5b50508035926020909101359150565b60008060408385031215611cd757600080fd5b8235611ce281611bea565b91506020830135611cf281611bea565b809150509250929050565b600060208284031215611d0f57600080fd5b813580151581146117ac57600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611d7d57611d7d611d54565b500190565b600082821015611d9457611d94611d54565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611dc157600080fd5b81516117ac81611bea565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e1c5784516001600160a01b031683529383019391830191600101611df7565b50506001600160a01b03969096166060850152505050608001529392505050565b6000816000190483118215151615611e5757611e57611d54565b500290565b600082611e7957634e487b7160e01b600052601260045260246000fd5b500490565b600080600060608486031215611e9357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202dba49c867ada51c539949ab81040d5f0900ec31e871e551c3876af19cdf5d4b64736f6c634300080a0033

Deployed Bytecode Sourcemap

3596:14411:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6442:83;;;;;;;;;;-1:-1:-1;6512:5:0;;;;;;;;;;;-1:-1:-1;;;6512:5:0;;;;6442:83;;;;6512:5;6442:83;:::i;:::-;;;;;;;;7273:161;;;;;;;;;;-1:-1:-1;7273:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7273:161:0;1072:187:1;6719:95:0;;;;;;;;;;-1:-1:-1;3909:12:0;6719:95;;;1410:25:1;;;1398:2;1383:18;6719:95:0;1264:177:1;7442:313:0;;;;;;;;;;-1:-1:-1;7442:313:0;;;;;:::i;:::-;;:::i;12942:109::-;;;;;;;;;;-1:-1:-1;12942:109:0;;;;;:::i;:::-;;:::i;:::-;;13729:331;;;;;;;;;;-1:-1:-1;13729:331:0;;;;;:::i;:::-;;:::i;6628:83::-;;;;;;;;;;-1:-1:-1;6628:83:0;;4705:1;2486:36:1;;2474:2;2459:18;6628:83:0;2344:184:1;14068:111:0;;;;;;;;;;-1:-1:-1;14068:111:0;;;;;:::i;:::-;;:::i;13388:331::-;;;;;;;;;;-1:-1:-1;13388:331:0;;;;;:::i;:::-;;:::i;14593:286::-;;;;;;;;;;-1:-1:-1;14593:286:0;;;;;:::i;:::-;;:::i;17376:153::-;;;;;;;;;;;;;:::i;6822:117::-;;;;;;;;;;-1:-1:-1;6822:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;6915:16:0;6888:7;6915:16;;;:7;:16;;;;;;;6822:117;2675:148;;;;;;;;;;;;;:::i;2461:79::-;;;;;;;;;;-1:-1:-1;2499:7:0;2526:6;2461:79;;-1:-1:-1;;;;;2526:6:0;;;2932:51:1;;2920:2;2905:18;2461:79:0;2786:203:1;6947:167:0;;;;;;;;;;-1:-1:-1;6947:167:0;;;;;:::i;:::-;;:::i;13063:317::-;;;;;;;;;;-1:-1:-1;13063:317:0;;;;;:::i;:::-;;:::i;17210:154::-;;;;;;;;;;;;;:::i;12371:339::-;;;;;;;;;;;;;:::i;7122:143::-;;;;;;;;;;-1:-1:-1;7122:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7230:18:0;;;7203:7;7230:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7122:143;7763:94;;;;;;;;;;-1:-1:-1;7763:94:0;;;;;:::i;:::-;;:::i;12827:103::-;;;;;;;;;;-1:-1:-1;12827:103:0;;;;;:::i;:::-;;:::i;14191:110::-;;;;;;;;;;-1:-1:-1;14191:110:0;;;;;:::i;:::-;;:::i;12720:99::-;;;;;;;;;;-1:-1:-1;12720:99:0;;;;;:::i;:::-;;:::i;17537:239::-;;;;;;;;;;;;;:::i;14309:276::-;;;;;;;;;;-1:-1:-1;14309:276:0;;;;;:::i;:::-;;:::i;7273:161::-;7348:4;7365:39;259:10;7388:7;7397:6;7365:8;:39::i;:::-;-1:-1:-1;7422:4:0;7273:161;;;;;:::o;7442:313::-;7540:4;7557:36;7567:6;7575:9;7586:6;7557:9;:36::i;:::-;7604:121;7613:6;259:10;7635:89;7673:6;7635:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7635:19:0;;;;;;:11;:19;;;;;;;;259:10;7635:33;;;;;;;;;;:37;:89::i;:::-;7604:8;:121::i;:::-;-1:-1:-1;7743:4:0;7442:313;;;;;:::o;12942:109::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;;;;;;;;;13016:16:::1;:27:::0;12942:109::o;13729:331::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13820:29:0;::::1;13812:77;;;::::0;-1:-1:-1;;;13812:77:0;;4228:2:1;13812:77:0::1;::::0;::::1;4210:21:1::0;4267:2;4247:18;;;4240:30;4306:34;4286:18;;;4279:62;-1:-1:-1;;;4357:18:1;;;4350:33;4400:19;;13812:77:0::1;4026:399:1::0;13812:77:0::1;13919:16;::::0;;-1:-1:-1;;;;;13919:16:0;;::::1;13939:5;13900:36:::0;;;:18:::1;:36;::::0;;;;;:44;;-1:-1:-1;;13900:44:0;;::::1;::::0;;;13955:43;;-1:-1:-1;;;;;;13955:43:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;14009:36;;;;;:43;;;;::::1;-1:-1:-1::0;14009:43:0::1;::::0;;13729:331::o;14068:111::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14137:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;14137:34:0::1;14167:4;14137:34;::::0;;14068:111::o;13388:331::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13479:29:0;::::1;13471:77;;;::::0;-1:-1:-1;;;13471:77:0;;4632:2:1;13471:77:0::1;::::0;::::1;4614:21:1::0;4671:2;4651:18;;;4644:30;4710:34;4690:18;;;4683:62;-1:-1:-1;;;4761:18:1;;;4754:33;4804:19;;13471:77:0::1;4430:399:1::0;13471:77:0::1;13578:16;::::0;;-1:-1:-1;;;;;13578:16:0;;::::1;13598:5;13559:36:::0;;;:18:::1;:36;::::0;;;;;:44;;-1:-1:-1;;13559:44:0;;::::1;::::0;;;13614:43;;-1:-1:-1;;;;;;13614:43:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;13668:36;;;;;:43;;;;::::1;-1:-1:-1::0;13668:43:0::1;::::0;;13388:331::o;14593:286::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;14742:1:::1;14703:35;14722:16:::0;14703;:35:::1;:::i;:::-;:40;;14695:82;;;::::0;-1:-1:-1;;;14695:82:0;;5301:2:1;14695:82:0::1;::::0;::::1;5283:21:1::0;5340:2;5320:18;;;5313:30;5379:31;5359:18;;;5352:59;5428:18;;14695:82:0::1;5099:353:1::0;14695:82:0::1;14788:17;:36:::0;;;;14835:17:::1;:36:::0;14593:286::o;17376:153::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;17457:21:::1;17489:32;17457:21:::0;17489:12:::1;:32::i;:::-;17417:112;17376:153::o:0;2675:148::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;2782:1:::1;2766:6:::0;;2745:40:::1;::::0;-1:-1:-1;;;;;2766:6:0;;::::1;::::0;2745:40:::1;::::0;2782:1;;2745:40:::1;2813:1;2796:19:::0;;-1:-1:-1;;;;;;2796:19:0::1;::::0;;2675:148::o;6947:167::-;7025:4;7042:42;259:10;7066:9;7077:6;7042:9;:42::i;13063:317::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;13162:11:::1;13149:9;:24;;13141:90;;;::::0;-1:-1:-1;;;13141:90:0;;5659:2:1;13141:90:0::1;::::0;::::1;5641:21:1::0;5698:2;5678:18;;;5671:30;5737:34;5717:18;;;5710:62;-1:-1:-1;;;5788:18:1;;;5781:51;5849:19;;13141:90:0::1;5457:417:1::0;13141:90:0::1;13263:11;13250:9;:24;;13242:89;;;::::0;-1:-1:-1;;;13242:89:0;;6081:2:1;13242:89:0::1;::::0;::::1;6063:21:1::0;6120:2;6100:18;;;6093:30;6159:34;6139:18;;;6132:62;-1:-1:-1;;;6210:18:1;;;6203:50;6270:19;;13242:89:0::1;5879:416:1::0;13242:89:0::1;13342:18;:30:::0;13063:317::o;17210:154::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;17306:4:::1;17262:23;6915:16:::0;;;:7;:16;;;;;;17323:33:::1;6915:16:::0;17323::::1;:33::i;12371:339::-:0;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;12435:11:::1;::::0;-1:-1:-1;;;12435:11:0;::::1;;;12434:12;12426:47;;;::::0;-1:-1:-1;;;12426:47:0;;6502:2:1;12426:47:0::1;::::0;::::1;6484:21:1::0;6541:2;6521:18;;;6514:30;6580:25;6560:18;;;6553:53;6623:18;;12426:47:0::1;6300:347:1::0;12426:47:0::1;12484:11;:18:::0;;12529:11:::1;12513:13;:27:::0;;;12551:14:::1;:28:::0;;;12590:16:::1;:30:::0;12652:11:::1;12631:18;:32:::0;-1:-1:-1;;;;12674:18:0;-1:-1:-1;;;12674:18:0;;;12371:339::o;7763:94::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;7830:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;7830:19:0::1;-1:-1:-1::0;;;;7830:19:0;;::::1;::::0;;;::::1;::::0;;7763:94::o;12827:103::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;12898:14:::1;:24:::0;12827:103::o;14191:110::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14258:27:0::1;14288:5;14258:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;14258:35:0::1;::::0;;14191:110::o;12720:99::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;12789:13:::1;:22:::0;12720:99::o;17537:239::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;17604:11:::1;::::0;-1:-1:-1;;;17604:11:0;::::1;;;17603:12;17595:68;;;::::0;-1:-1:-1;;;17595:68:0;;6854:2:1;17595:68:0::1;::::0;::::1;6836:21:1::0;6893:2;6873:18;;;6866:30;6932:34;6912:18;;;6905:62;-1:-1:-1;;;6983:18:1;;;6976:41;7034:19;;17595:68:0::1;6652:407:1::0;17595:68:0::1;17710:58;::::0;17674:12:::1;::::0;17718:10:::1;::::0;17742:21:::1;::::0;17674:12;17710:58;17674:12;17710:58;17742:21;17718:10;17710:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;17537:239:0:o;14309:276::-;2588:6;;-1:-1:-1;;;;;2588:6:0;259:10;2588:22;2580:67;;;;-1:-1:-1;;;2580:67:0;;;;;;;:::i;:::-;14453:1:::1;14416:33;14434:15:::0;14416;:33:::1;:::i;:::-;:38;;14408:79;;;::::0;-1:-1:-1;;;14408:79:0;;7476:2:1;14408:79:0::1;::::0;::::1;7458:21:1::0;7515:2;7495:18;;;7488:30;7554;7534:18;;;7527:58;7602:18;;14408:79:0::1;7274:352:1::0;14408:79:0::1;14498:16;:34:::0;;;;14543:16:::1;:34:::0;14309:276::o;7865:335::-;-1:-1:-1;;;;;7958:19:0;;7950:68;;;;-1:-1:-1;;;7950:68:0;;7833:2:1;7950:68:0;;;7815:21:1;7872:2;7852:18;;;7845:30;7911:34;7891:18;;;7884:62;-1:-1:-1;;;7962:18:1;;;7955:34;8006:19;;7950:68:0;7631:400:1;7950:68:0;-1:-1:-1;;;;;8037:21:0;;8029:68;;;;-1:-1:-1;;;8029:68:0;;8238:2:1;8029:68:0;;;8220:21:1;8277:2;8257:18;;;8250:30;8316:34;8296:18;;;8289:62;-1:-1:-1;;;8367:18:1;;;8360:32;8409:19;;8029:68:0;8036:398:1;8029:68:0;-1:-1:-1;;;;;8108:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8160:32;;1410:25:1;;;8160:32:0;;1383:18:1;8160:32:0;;;;;;;;7865:335;;;:::o;8208:1642::-;-1:-1:-1;;;;;8296:18:0;;8288:68;;;;-1:-1:-1;;;8288:68:0;;8641:2:1;8288:68:0;;;8623:21:1;8680:2;8660:18;;;8653:30;8719:34;8699:18;;;8692:62;-1:-1:-1;;;8770:18:1;;;8763:35;8815:19;;8288:68:0;8439:401:1;8288:68:0;-1:-1:-1;;;;;8375:16:0;;8367:64;;;;-1:-1:-1;;;8367:64:0;;9047:2:1;8367:64:0;;;9029:21:1;9086:2;9066:18;;;9059:30;9125:34;9105:18;;;9098:62;-1:-1:-1;;;9176:18:1;;;9169:33;9219:19;;8367:64:0;8845:399:1;8367:64:0;8459:1;8450:6;:10;8442:64;;;;-1:-1:-1;;;8442:64:0;;9451:2:1;8442:64:0;;;9433:21:1;9490:2;9470:18;;;9463:30;9529:34;9509:18;;;9502:62;-1:-1:-1;;;9580:18:1;;;9573:39;9629:19;;8442:64:0;9249:405:1;8442:64:0;8517:12;8548:15;8594:7;2499;2526:6;-1:-1:-1;;;;;2526:6:0;;2461:79;8594:7;-1:-1:-1;;;;;8586:15:0;:4;-1:-1:-1;;;;;8586:15:0;;;:32;;;;-1:-1:-1;2499:7:0;2526:6;-1:-1:-1;;;;;8605:13:0;;;2526:6;;8605:13;;8586:32;:52;;;;-1:-1:-1;;;;;;8622:16:0;;;;8586:52;:77;;;;-1:-1:-1;;;;;;8642:21:0;;8656:6;8642:21;;8586:77;:90;;;;-1:-1:-1;8668:8:0;;-1:-1:-1;;;8668:8:0;;;;8667:9;8586:90;8582:731;;;8736:13;;8705:4;;-1:-1:-1;;;;;;8728:21:0;;;8736:13;;8728:21;:55;;;;-1:-1:-1;8767:15:0;;-1:-1:-1;;;;;8753:30:0;;;8767:15;;8753:30;;8728:55;:82;;;;-1:-1:-1;;;;;;8788:22:0;;;;;;:18;:22;;;;;;;;8787:23;8728:82;8724:310;;;8849:13;;8839:6;:23;;8831:77;;;;-1:-1:-1;;;8831:77:0;;9861:2:1;8831:77:0;;;9843:21:1;9900:2;9880:18;;;9873:30;9939:34;9919:18;;;9912:62;-1:-1:-1;;;9990:18:1;;;9983:39;10039:19;;8831:77:0;9659:405:1;8831:77:0;8961:16;;8951:6;8935:13;8945:2;-1:-1:-1;;;;;6915:16:0;6888:7;6915:16;;;:7;:16;;;;;;;6822:117;8935:13;:22;;;;:::i;:::-;:42;;8927:91;;;;-1:-1:-1;;;8927:91:0;;10271:2:1;8927:91:0;;;10253:21:1;10310:2;10290:18;;;10283:30;10349:34;10329:18;;;10322:62;-1:-1:-1;;;10400:18:1;;;10393:34;10444:19;;8927:91:0;10069:400:1;8927:91:0;9072:13;;-1:-1:-1;;;;;9066:19:0;;;9072:13;;9066:19;:55;;;;-1:-1:-1;9105:15:0;;-1:-1:-1;;;;;9089:32:0;;;9105:15;;9089:32;;9066:55;:84;;;;-1:-1:-1;;;;;;9126:24:0;;;;;;:18;:24;;;;;;;;9125:25;9066:84;9062:240;;;9189:14;;9179:6;:24;;9171:79;;;;-1:-1:-1;;;9171:79:0;;10676:2:1;9171:79:0;;;10658:21:1;10715:2;10695:18;;;10688:30;10754:34;10734:18;;;10727:62;-1:-1:-1;;;10805:18:1;;;10798:40;10855:19;;9171:79:0;10474:406:1;9171:79:0;-1:-1:-1;9282:4:0;9062:240;-1:-1:-1;;;;;9328:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;9356:22:0;;;;;;:18;:22;;;;;;;;9328:50;9325:97;;;9405:5;9395:15;;9325:97;9483:4;9434:28;6915:16;;;:7;:16;;;;;;9434:55;;9500:12;9539:18;;9516:20;:41;9515:57;;;;;9562:10;9515:57;9500:72;;9589:7;:22;;;;-1:-1:-1;9600:11:0;;-1:-1:-1;;;9600:11:0;;;;9589:22;:35;;;;-1:-1:-1;9616:8:0;;-1:-1:-1;;;9616:8:0;;;;9615:9;9589:35;:64;;;;-1:-1:-1;;;;;;9629:24:0;;;;;;:18;:24;;;;;;;;9628:25;9589:64;:91;;;;-1:-1:-1;;;;;;9658:22:0;;;;;;:18;:22;;;;;;;;9657:23;9589:91;9585:195;;;9697:8;:15;;-1:-1:-1;;;;9697:15:0;-1:-1:-1;;;9697:15:0;;;9727:10;:8;:10::i;:::-;9752:8;:16;;-1:-1:-1;;;;9752:16:0;;;9585:195;9792:50;9807:4;9812:2;9815:6;9822:7;9831:10;9792:14;:50::i;:::-;8277:1573;;;;8208:1642;;;:::o;1316:190::-;1402:7;1438:12;1430:6;;;;1422:29;;;;-1:-1:-1;;;1422:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1462:9:0;1474:5;1478:1;1474;:5;:::i;:::-;1462:17;1316:190;-1:-1:-1;;;;;1316:190:0:o;12261:98::-;12318:16;;:33;;-1:-1:-1;;;;;12318:16:0;;;;:33;;;;;12344:6;;12318:16;:33;:16;:33;12344:6;12318:16;:33;;;;;;;;;;;;;;;;;;;;;12261:98;:::o;11331:483::-;5407:6;:13;;-1:-1:-1;;;;5407:13:0;-1:-1:-1;;;5407:13:0;;;11433:16:::1;::::0;;11447:1:::1;11433:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11433:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11433:16:0::1;11409:40;;11478:4;11460;11465:1;11460:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11460:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11504:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11504:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11460:7;;11504:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11494:4;11499:1;11494:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11494:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11569:15:::1;::::0;11537:62:::1;::::0;11554:4:::1;::::0;11569:15:::1;11587:11:::0;11537:8:::1;:62::i;:::-;11610:15;::::0;:196:::1;::::0;-1:-1:-1;;;11610:196:0;;-1:-1:-1;;;;;11610:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11691:11;;11610:15:::1;::::0;11733:4;;11760::::1;::::0;11780:15:::1;::::0;11610:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5443:6:0;:14;;-1:-1:-1;;;;5443:14:0;;;-1:-1:-1;;;;11331:483:0:o;9858:1465::-;9941:4;9897:23;6915:16;;;:7;:16;;;;;;9897:50;;9958:25;10007:18;;9986;;:39;;;;:::i;:::-;9958:67;-1:-1:-1;10036:12:0;10072:20;;;:46;;-1:-1:-1;10096:22:0;;10072:46;10069:60;;;10121:7;;;9858:1465::o;10069:60::-;10162:18;;:23;;10183:2;10162:23;:::i;:::-;10144:15;:41;10141:114;;;10220:18;;:23;;10241:2;10220:23;:::i;:::-;10202:41;;10141:114;10324:23;10409:1;10389:17;10368:18;;10350:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;10324:86;-1:-1:-1;10421:26:0;10450:36;:15;10324:86;10450:19;:36::i;:::-;10421:65;-1:-1:-1;10535:21:0;10569:36;10421:65;10569:16;:36::i;:::-;10627:18;10648:44;:21;10674:17;10648:25;:44::i;:::-;10627:65;;10713:23;10739:57;10778:17;10739:34;10754:18;;10739:10;:14;;:34;;;;:::i;:::-;:38;;:57::i;:::-;10713:83;-1:-1:-1;10827:23:0;10853:28;10713:83;10853:10;:28;:::i;:::-;10933:1;10912:18;:22;;;10945:18;:22;10827:54;-1:-1:-1;11001:19:0;;;;;:42;;;11042:1;11024:15;:19;11001:42;10998:210;;;11059:46;11072:15;11089;11059:12;:46::i;:::-;11177:18;;11125:71;;;13117:25:1;;;13173:2;13158:18;;13151:34;;;13201:18;;;13194:34;;;;11125:71:0;;;;;;13105:2:1;11125:71:0;;;10998:210;11259:16;;11251:64;;-1:-1:-1;;;;;11259:16:0;;;;11289:21;;11251:64;;;;11289:21;11259:16;11251:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;9858:1465:0:o;15706:389::-;15831:7;15827:129;;15855:14;:12;:14::i;:::-;15827:129;;;15911:33;15921:6;15929;15937;15911:9;:33::i;:::-;15902:42;;15827:129;15968:44;15986:6;15994:9;16005:6;15968:17;:44::i;:::-;16037:7;16033:55;;16061:15;15490:24;;15471:16;:43;15544:24;;15525:16;:43;15599:25;;15579:17;:45;15655:25;;15635:17;:45;15427:261;16061:15;15706:389;;;;;:::o;1172:136::-;1230:7;1257:43;1261:1;1264;1257:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1250:50;1172:136;-1:-1:-1;;;1172:136:0:o;1514:246::-;1572:7;1596:6;1592:47;;-1:-1:-1;1626:1:0;1619:8;;1592:47;1649:9;1661:5;1665:1;1661;:5;:::i;:::-;1649:17;-1:-1:-1;1694:1:0;1685:5;1689:1;1649:17;1685:5;:::i;:::-;:10;1677:56;;;;-1:-1:-1;;;1677:56:0;;13441:2:1;1677:56:0;;;13423:21:1;13480:2;13460:18;;;13453:30;13519:34;13499:18;;;13492:62;-1:-1:-1;;;13570:18:1;;;13563:31;13611:19;;1677:56:0;13239:397:1;1768:132:0;1826:7;1853:39;1857:1;1860;1853:39;;;;;;;;;;;;;;;;;:3;:39::i;11822:423::-;11935:15;;11903:62;;11920:4;;-1:-1:-1;;;;;11935:15:0;11953:11;11903:8;:62::i;:::-;11976:15;;12180:16;;11976:261;;-1:-1:-1;;;11976:261:0;;12048:4;11976:261;;;13990:34:1;14040:18;;;14033:34;;;11976:15:0;14083:18:1;;;14076:34;;;14126:18;;;14119:34;-1:-1:-1;;;;;12180:16:0;;;14169:19:1;;;14162:44;12211:15:0;14222:19:1;;;14215:35;11976:15:0;;;:31;;12015:9;;13924:19:1;;11976:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14889:526::-;14935:16;;:21;:46;;;;-1:-1:-1;14960:16:0;;:21;14935:46;:72;;;;-1:-1:-1;14985:17:0;;:22;14935:72;:98;;;;-1:-1:-1;15011:17:0;;:22;14935:98;14932:110;;;14889:526::o;14932:110::-;15089:16;;;15062:24;:43;15143:16;;;15116:24;:43;15198:17;;;15170:25;:45;15254:17;;;15226:25;:45;-1:-1:-1;15292:20:0;;;;15323;;;;15354:21;;;15386;14889:526::o;16378:783::-;16459:7;16479:18;16508:15;16534:14;16582:21;16596:6;16582:13;:21::i;:::-;16569:34;;16618:6;16614:206;;;-1:-1:-1;;16651:17:0;;16692;;16614:206;;;-1:-1:-1;;16752:16:0;;16792;;16614:206;16832:12;16847:31;16874:3;16847:22;:6;16858:10;16847;:22::i;:31::-;16832:46;-1:-1:-1;16928:10:0;16911:14;16918:7;16832:46;16911:14;:::i;:::-;:27;;;;:::i;:::-;16889:18;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;16987:10:0;;-1:-1:-1;16971:13:0;16978:6;16971:4;:13;:::i;:::-;:26;;;;:::i;:::-;16949:18;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;17025:8:0;;17022:86;;17050:46;17068:6;17084:4;17091;17050:17;:46::i;:::-;17139:14;17149:4;17139:14;;:::i;:::-;;16378:783;-1:-1:-1;;;;;;;;16378:783:0:o;16103:267::-;-1:-1:-1;;;;;16219:15:0;;;;;;:7;:15;;;;;;:28;;16239:7;16219:19;:28::i;:::-;-1:-1:-1;;;;;16201:15:0;;;;;;;:7;:15;;;;;;:46;;;;16279:18;;;;;;;:31;;16302:7;16279:22;:31::i;:::-;-1:-1:-1;;;;;16258:18:0;;;;;;;:7;:18;;;;;;;:52;;;;16326:36;;;;;;;;;;16354:7;1410:25:1;;1398:2;1383:18;;1264:177;1908:189:0;1994:7;2029:12;2022:5;2014:28;;;;-1:-1:-1;;;2014:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2053:9:0;2065:5;2069:1;2065;:5;:::i;17784:220::-;17841:7;17865:6;17861:83;;;17915:17;;17895;;:37;;;;:::i;17861:83::-;17980:16;;17961;;:35;;;;:::i;985:179::-;1043:7;;1075:5;1079:1;1075;:5;:::i;:::-;1063:17;;1104:1;1099;:6;;1091:46;;;;-1:-1:-1;;;1091:46:0;;14774:2:1;1091:46:0;;;14756:21:1;14813:2;14793:18;;;14786:30;14852:29;14832:18;;;14825:57;14899:18;;1091:46:0;14572:351:1;14:597;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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;1907:180::-;1966:6;2019:2;2007:9;1998:7;1994:23;1990:32;1987:52;;;2035:1;2032;2025:12;1987:52;-1:-1:-1;2058:23:1;;1907:180;-1:-1:-1;1907:180:1:o;2092:247::-;2151:6;2204:2;2192:9;2183:7;2179:23;2175:32;2172:52;;;2220:1;2217;2210:12;2172:52;2259:9;2246:23;2278:31;2303:5;2278:31;:::i;2533:248::-;2601:6;2609;2662:2;2650:9;2641:7;2637:23;2633:32;2630:52;;;2678:1;2675;2668:12;2630:52;-1:-1:-1;;2701:23:1;;;2771:2;2756:18;;;2743:32;;-1:-1:-1;2533:248:1:o;2994:388::-;3062:6;3070;3123:2;3111:9;3102:7;3098:23;3094:32;3091:52;;;3139:1;3136;3129:12;3091:52;3178:9;3165:23;3197:31;3222:5;3197:31;:::i;:::-;3247:5;-1:-1:-1;3304:2:1;3289:18;;3276:32;3317:33;3276:32;3317:33;:::i;:::-;3369:7;3359:17;;;2994:388;;;;;:::o;3387:273::-;3443:6;3496:2;3484:9;3475:7;3471:23;3467:32;3464:52;;;3512:1;3509;3502:12;3464:52;3551:9;3538:23;3604:5;3597:13;3590:21;3583:5;3580:32;3570:60;;3626:1;3623;3616:12;3665:356;3867:2;3849:21;;;3886:18;;;3879:30;3945:34;3940:2;3925:18;;3918:62;4012:2;3997:18;;3665:356::o;4834:127::-;4895:10;4890:3;4886:20;4883:1;4876:31;4926:4;4923:1;4916:15;4950:4;4947:1;4940:15;4966:128;5006:3;5037:1;5033:6;5030:1;5027:13;5024:39;;;5043:18;;:::i;:::-;-1:-1:-1;5079:9:1;;4966:128::o;10885:125::-;10925:4;10953:1;10950;10947:8;10944:34;;;10958:18;;:::i;:::-;-1:-1:-1;10995:9:1;;10885:125::o;11147:127::-;11208:10;11203:3;11199:20;11196:1;11189:31;11239:4;11236:1;11229:15;11263:4;11260:1;11253:15;11279:251;11349:6;11402:2;11390:9;11381:7;11377:23;11373:32;11370:52;;;11418:1;11415;11408:12;11370:52;11450:9;11444:16;11469:31;11494:5;11469:31;:::i;11535:980::-;11797:4;11845:3;11834:9;11830:19;11876:6;11865:9;11858:25;11902:2;11940:6;11935:2;11924:9;11920:18;11913:34;11983:3;11978:2;11967:9;11963:18;11956:31;12007:6;12042;12036:13;12073:6;12065;12058:22;12111:3;12100:9;12096:19;12089:26;;12150:2;12142:6;12138:15;12124:29;;12171:1;12181:195;12195:6;12192:1;12189:13;12181:195;;;12260:13;;-1:-1:-1;;;;;12256:39:1;12244:52;;12351:15;;;;12316:12;;;;12292:1;12210:9;12181:195;;;-1:-1:-1;;;;;;;12432:32:1;;;;12427:2;12412:18;;12405:60;-1:-1:-1;;;12496:3:1;12481:19;12474:35;12393:3;11535:980;-1:-1:-1;;;11535:980:1:o;12520:168::-;12560:7;12626:1;12622;12618:6;12614:14;12611:1;12608:21;12603:1;12596:9;12589:17;12585:45;12582:71;;;12633:18;;:::i;:::-;-1:-1:-1;12673:9:1;;12520:168::o;12693:217::-;12733:1;12759;12749:132;;12803:10;12798:3;12794:20;12791:1;12784:31;12838:4;12835:1;12828:15;12866:4;12863:1;12856:15;12749:132;-1:-1:-1;12895:9:1;;12693:217::o;14261:306::-;14349:6;14357;14365;14418:2;14406:9;14397:7;14393:23;14389:32;14386:52;;;14434:1;14431;14424:12;14386:52;14463:9;14457:16;14447:26;;14513:2;14502:9;14498:18;14492:25;14482:35;;14557:2;14546:9;14542:18;14536:25;14526:35;;14261:306;;;;;:::o

Swarm Source

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