ETH Price: $2,267.41 (+2.28%)

Token

ViralDAO (ViralDAO)
 

Overview

Max Total Supply

100,000,000 ViralDAO

Holders

192

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
137,129.378745475 ViralDAO

Value
$0.00
0x6c2287e4ada266d24bee17ee807a94453d289193
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:
ViralDAO

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-21
*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.5;

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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract ViralDAO is IBEP20, Auth {
    using SafeMath for uint256;

    string constant _name = "ViralDAO";
    string constant _symbol = "ViralDAO";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 100000000 * (10 ** _decimals);
    uint256 public _maxWalletSize = (_totalSupply * 1) / 100; 
    uint256 public _minTransferForReferral = 1 * (10 ** _decimals); 

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    
    mapping (address => bool) isFeeExempt;
    mapping (address => address) public referrer; 
    mapping(address => bool) public isReferred;

    uint256 liquidityFee = 3;
    uint256 devFee = 0;
    uint256 marketingFee = 4;

    uint256 totalFee = 10;
    uint256 feeDenominator = 100;

    uint256 referralFee = 3;

    uint256 public minSupplyForReferralReward = (_totalSupply * 1) / 1000;
    
    address private marketingFeeReceiver = 0xBC456bbe548D24dB5d11b577f79f50D2a9C33317;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 3; // 0.3%

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event ReferralBonus(address indexed feesTo , address indexed feesFrom , uint value);
    event Referred(address indexed referred,address indexed referrer);

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[_owner] = true;
        isFeeExempt[pair] = true;
        isFeeExempt[address(router)] = true;

        isReferred[_owner] = true;
        
        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }    

        if (recipient != pair) {
            require(isFeeExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the bag size.");
        }

        uint256 amountReceived = amount; 
        
        if(sender == pair) { //buy
            if(!isFeeExempt[recipient]) {
                require(isReferred[recipient],"Not referred");
                amountReceived = takeReferralFees(recipient,amount);
            }

        } else if(recipient == pair) { //sell
            if(shouldTakeFee(sender)) {
                amountReceived = takeFee(sender, amount);
            }  

        } else if(isReferred[recipient]==false) {
            if(amount >= _minTransferForReferral) {
                isReferred[recipient] = true;
                referrer[recipient] = sender;
                emit Referred(recipient,sender);
            }
        } 
        
        if(shouldSwapBack()){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amountReceived);

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

    function takeReferralFees(address from,uint256 amount) internal returns(uint) {
        uint256 referralTokens = referralFee * amount / feeDenominator;
        if(_balances[referrer[from]] > minSupplyForReferralReward) {
            _balances[referrer[from]] = _balances[referrer[from]].add(referralTokens);
            emit ReferralBonus(referrer[from],from,referralTokens);
        } else {
             _balances[marketingFeeReceiver] = _balances[marketingFeeReceiver].add(referralTokens);
            emit ReferralBonus(marketingFeeReceiver,from,referralTokens);
        }

        return amount - referralTokens;
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity;

        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");
        addLiquidity(amountToLiquify, amountBNBLiquidity);
    }

    function addLiquidity(uint256 tokenAmount, uint256 BNBAmount) private {
        if(tokenAmount > 0){
                router.addLiquidityETH{value: BNBAmount}(
                    address(this),
                    tokenAmount,
                    0,
                    0,
                    address(this),
                    block.timestamp
                );
                emit AutoLiquify(BNBAmount, tokenAmount);
            }
    }

    function setMaxWallet(uint256 amount) external onlyOwner() {
        require(amount >= _totalSupply / 1000 );
        _maxWalletSize = amount;
    }   

    function setMinTransferForReferral(uint256 amount) external onlyOwner() {
        require(amount <= 1*(10**_decimals) );
        _minTransferForReferral = amount; 
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _devFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        devFee = _devFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_devFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingFeeReceiver).transfer(contractETHBalance);
    }

    function transferForeignToken(address _token) public authorized {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IBEP20(_token).balanceOf(address(this));
        payable(marketingFeeReceiver).transfer(_contractBalance);
    }
    
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feesTo","type":"address"},{"indexed":true,"internalType":"address","name":"feesFrom","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ReferralBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referred","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"}],"name":"Referred","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTransferForReferral","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReferred","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minSupplyForReferralReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinTransferForReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004a6565b62000022906305f5e100620004be565b60025560646002546001620000389190620004be565b620000449190620004e0565b600355620000556009600a620004a6565b62000062906001620004be565b6004556003600a556000600b556004600c55600a600d556064600e556003600f556103e86002546001620000979190620004be565b620000a39190620004e0565b601055601180546001600160a01b03191673bc456bbe548d24db5d11b577f79f50d2a9c333171790556013805460ff60a01b1916600160a01b179055600254620000f1906103e890620004e0565b620000fe906003620004be565b6014553480156200010e57600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560128054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa15801562000195573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bb919062000503565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000243919062000503565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000290573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b6919062000503565b601380546001600160a01b0319166001600160a01b03928316178155306000908152600660209081526040808320601280548716855290835281842060001990558354861680855260078452828520805460ff19908116600190811790925596548816865283862080548816821790559154909616845281842080548616821790558584526009835281842080549095161790935560025460058252838320819055925192835283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200052e565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003e8578160001904821115620003cc57620003cc62000391565b80851615620003da57918102915b93841c9390800290620003ac565b509250929050565b6000826200040157506001620004a0565b816200041057506000620004a0565b8160018114620004295760028114620004345762000454565b6001915050620004a0565b60ff84111562000448576200044862000391565b50506001821b620004a0565b5060208310610133831016604e8410600b841016171562000479575081810a620004a0565b620004858383620003a7565b80600019048211156200049c576200049c62000391565b0290505b92915050565b6000620004b760ff841683620003f0565b9392505050565b6000816000190483118215151615620004db57620004db62000391565b500290565b600082620004fe57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200051657600080fd5b81516001600160a01b0381168114620004b757600080fd5b611d06806200053e6000396000f3fe6080604052600436106101e75760003560e01c8063893d20e811610102578063df20fd4911610095578063f2fde38b11610064578063f2fde38b146105e0578063f429389014610600578063f887ea4014610615578063fe9fbb801461063557600080fd5b8063df20fd4914610550578063ea23a2b814610570578063f0b37c0414610590578063f0bc6cfb146105b057600080fd5b8063a9059cbb116100d1578063a9059cbb146104aa578063b6a5d7de146104ca578063dc93cf70146104ea578063dd62ed3e1461050a57600080fd5b8063893d20e8146104565780638f9a55c01461047457806395d89b411461021c578063a8aa1b311461048a57600080fd5b8063571ac8b01161017a5780636ddd1713116101495780636ddd1713146103c95780636fcba377146103ea57806370a082311461040a57806371d0979b1461044057600080fd5b8063571ac8b0146103515780635acbdedb146103715780635d0044ca14610387578063658d4b7f146103a957600080fd5b806323b872dd116101b657806323b872dd146102985780632cf003c2146102b85780632f54bf6e14610306578063313ce5671461033557600080fd5b80630445b667146101f357806306fdde031461021c578063095ea7b31461025357806318160ddd1461028357600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020960145481565b6040519081526020015b60405180910390f35b34801561022857600080fd5b506040805180820182526008815267566972616c44414f60c01b602082015290516102139190611846565b34801561025f57600080fd5b5061027361026e3660046118b3565b610655565b6040519015158152602001610213565b34801561028f57600080fd5b50600254610209565b3480156102a457600080fd5b506102736102b33660046118df565b6106c2565b3480156102c457600080fd5b506102ee6102d3366004611920565b6008602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610213565b34801561031257600080fd5b50610273610321366004611920565b6000546001600160a01b0391821691161490565b34801561034157600080fd5b5060405160098152602001610213565b34801561035d57600080fd5b5061027361036c366004611920565b610784565b34801561037d57600080fd5b5061020960105481565b34801561039357600080fd5b506103a76103a236600461193d565b610792565b005b3480156103b557600080fd5b506103a76103c436600461196b565b6107e6565b3480156103d557600080fd5b5060135461027390600160a01b900460ff1681565b3480156103f657600080fd5b506103a76104053660046119a0565b610836565b34801561041657600080fd5b50610209610425366004611920565b6001600160a01b031660009081526005602052604090205490565b34801561044c57600080fd5b5061020960045481565b34801561046257600080fd5b506000546001600160a01b03166102ee565b34801561048057600080fd5b5061020960035481565b34801561049657600080fd5b506013546102ee906001600160a01b031681565b3480156104b657600080fd5b506102736104c53660046118b3565b610889565b3480156104d657600080fd5b506103a76104e5366004611920565b610896565b3480156104f657600080fd5b506103a7610505366004611920565b6108e7565b34801561051657600080fd5b506102096105253660046119d2565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561055c57600080fd5b506103a761056b366004611a0b565b610a1c565b34801561057c57600080fd5b506103a761058b36600461193d565b610a63565b34801561059c57600080fd5b506103a76105ab366004611920565b610ab5565b3480156105bc57600080fd5b506102736105cb366004611920565b60096020526000908152604090205460ff1681565b3480156105ec57600080fd5b506103a76105fb366004611920565b610b00565b34801561060c57600080fd5b506103a7610b96565b34801561062157600080fd5b506012546102ee906001600160a01b031681565b34801561064157600080fd5b50610273610650366004611920565b610bf9565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106b09086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526006602090815260408083203384529091528120546000191461076f576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260068252838120338252909152919091205461074a918490610c17565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61077a848484610c51565b90505b9392505050565b60006106bc82600019610655565b6000546001600160a01b031633146107c55760405162461bcd60e51b81526004016107bc90611a27565b60405180910390fd5b6103e86002546107d59190611a5d565b8110156107e157600080fd5b600355565b6107ef33610bf9565b61080b5760405162461bcd60e51b81526004016107bc90611a7f565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b61083f33610bf9565b61085b5760405162461bcd60e51b81526004016107bc90611a7f565b600a849055600b839055600c82905561087e826108788686610f9d565b90610f9d565b600d55600e55505050565b600061077d338484610c51565b6000546001600160a01b031633146108c05760405162461bcd60e51b81526004016107bc90611a27565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6108f033610bf9565b61090c5760405162461bcd60e51b81526004016107bc90611a7f565b6001600160a01b0381163014156109715760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b60648201526084016107bc565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190611aa4565b6011546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610a17573d6000803e3d6000fd5b505050565b610a2533610bf9565b610a415760405162461bcd60e51b81526004016107bc90611a7f565b60138054921515600160a01b0260ff60a01b1990931692909217909155601455565b6000546001600160a01b03163314610a8d5760405162461bcd60e51b81526004016107bc90611a27565b610a996009600a611ba1565b610aa4906001611bb0565b811115610ab057600080fd5b600455565b6000546001600160a01b03163314610adf5760405162461bcd60e51b81526004016107bc90611a27565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610b2a5760405162461bcd60e51b81526004016107bc90611a27565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610b9f33610bf9565b610bbb5760405162461bcd60e51b81526004016107bc90611a7f565b60115460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610bf5573d6000803e3d6000fd5b5050565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115610c3b5760405162461bcd60e51b81526004016107bc9190611846565b506000610c488486611bcf565b95945050505050565b60155460009060ff1615610c7157610c6a848484610ffc565b905061077d565b6013546001600160a01b03848116911614610d2c576001600160a01b03831660009081526007602052604090205460ff1680610cd257506003546001600160a01b038416600090815260056020526040902054610ccf908490611be6565b11155b610d2c5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016107bc565b60135482906001600160a01b0386811691161415610dcd576001600160a01b03841660009081526007602052604090205460ff16610dc8576001600160a01b03841660009081526009602052604090205460ff16610dbb5760405162461bcd60e51b815260206004820152600c60248201526b139bdd081c9959995c9c995960a21b60448201526064016107bc565b610dc584846110e2565b90505b610ea0565b6013546001600160a01b0385811691161415610e0d576001600160a01b03851660009081526007602052604090205460ff16610dc857610dc58584611274565b6001600160a01b03841660009081526009602052604090205460ff16610ea0576004548310610ea0576001600160a01b038085166000818152600960209081526040808320805460ff1916600117905560089091528082208054948a166001600160a01b031990951685179055517f2c07cd45454a31c572d49686c5ec6fef884778b2cf441c7fd58f4bde0fa6400b9190a35b610ea8611318565b15610eb557610eb5611370565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038816600090815260059091529190912054610f07918590610c17565b6001600160a01b038087166000908152600560205260408082209390935590861681522054610f369082610f9d565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f8a9085815260200190565b60405180910390a3506001949350505050565b600080610faa8385611be6565b90508381101561077d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107bc565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461104d918490610c17565b6001600160a01b03808616600090815260056020526040808220939093559085168152205461107c9083610f9d565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110d09086815260200190565b60405180910390a35060019392505050565b600080600e5483600f546110f69190611bb0565b6111009190611a5d565b6010546001600160a01b03808716600090815260086020908152604080832054909316825260059052205491925010156111d6576001600160a01b0380851660009081526008602090815260408083205490931682526005905220546111669082610f9d565b6001600160a01b0385811660008181526008602081815260408084208054871685526005835281852097909755928490529081529354905185815291939216917f9be71e54c914a5355f90883acdff2a1d75cebe9a1c6f15305d1fb0c28d7d7630910160405180910390a3611262565b6011546001600160a01b03166000908152600560205260409020546111fb9082610f9d565b601180546001600160a01b0390811660009081526005602052604090819020939093559054915186821692909116907f9be71e54c914a5355f90883acdff2a1d75cebe9a1c6f15305d1fb0c28d7d7630906112599085815260200190565b60405180910390a35b61126c8184611bcf565b949350505050565b600080611298600e54611292600d548661163d90919063ffffffff16565b906116bc565b306000908152600560205260409020549091506112b59082610f9d565b30600081815260056020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113069085815260200190565b60405180910390a361126c83826116fe565b6013546000906001600160a01b03163314801590611339575060155460ff16155b801561134e5750601354600160a01b900460ff165b801561136b57506014543060009081526005602052604090205410155b905090565b6015805460ff1916600117905530600090815260056020526040812054905060006113b16002611292600d54611292600a548761163d90919063ffffffff16565b905060006113bf83836116fe565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106113f9576113f9611bfe565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190611c14565b8160018151811061148957611489611bfe565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac947906114d3908690600090879030904290600401611c31565b600060405180830381600087803b1580156114ed57600080fd5b505af1158015611501573d6000803e3d6000fd5b50505050600061151a82476116fe90919063ffffffff16565b905060006115406115376002600a546116bc90919063ffffffff16565b600d54906116fe565b90506000611562600261129284611292600a548861163d90919063ffffffff16565b905060006115708285611bcf565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146115c7576040519150601f19603f3d011682016040523d82523d6000602084013e6115cc565b606091505b505090508061161d5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016107bc565b6116278984611740565b50506015805460ff191690555050505050505050565b60008261164c575060006106bc565b60006116588385611bb0565b9050826116658583611a5d565b1461077d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107bc565b600061077d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611818565b600061077d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c17565b8115610bf55760125460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156117b3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117d89190611ca2565b505060408051838152602081018590527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15050565b600081836118395760405162461bcd60e51b81526004016107bc9190611846565b506000610c488486611a5d565b600060208083528351808285015260005b8181101561187357858101830151858201604001528201611857565b81811115611885576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146118b057600080fd5b50565b600080604083850312156118c657600080fd5b82356118d18161189b565b946020939093013593505050565b6000806000606084860312156118f457600080fd5b83356118ff8161189b565b9250602084013561190f8161189b565b929592945050506040919091013590565b60006020828403121561193257600080fd5b813561077d8161189b565b60006020828403121561194f57600080fd5b5035919050565b8035801515811461196657600080fd5b919050565b6000806040838503121561197e57600080fd5b82356119898161189b565b915061199760208401611956565b90509250929050565b600080600080608085870312156119b657600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156119e557600080fd5b82356119f08161189b565b91506020830135611a008161189b565b809150509250929050565b60008060408385031215611a1e57600080fd5b6118d183611956565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082611a7a57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060208284031215611ab657600080fd5b5051919050565b600181815b80851115611af8578160001904821115611ade57611ade611a47565b80851615611aeb57918102915b93841c9390800290611ac2565b509250929050565b600082611b0f575060016106bc565b81611b1c575060006106bc565b8160018114611b325760028114611b3c57611b58565b60019150506106bc565b60ff841115611b4d57611b4d611a47565b50506001821b6106bc565b5060208310610133831016604e8410600b8410161715611b7b575081810a6106bc565b611b858383611abd565b8060001904821115611b9957611b99611a47565b029392505050565b600061077d60ff841683611b00565b6000816000190483118215151615611bca57611bca611a47565b500290565b600082821015611be157611be1611a47565b500390565b60008219821115611bf957611bf9611a47565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c2657600080fd5b815161077d8161189b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c815784516001600160a01b031683529383019391830191600101611c5c565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611cb757600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220288c925d37ec5b2a94da198d9c7d8cef29b5d9c743dc5b4f1aac7fdd11f6415564736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063893d20e811610102578063df20fd4911610095578063f2fde38b11610064578063f2fde38b146105e0578063f429389014610600578063f887ea4014610615578063fe9fbb801461063557600080fd5b8063df20fd4914610550578063ea23a2b814610570578063f0b37c0414610590578063f0bc6cfb146105b057600080fd5b8063a9059cbb116100d1578063a9059cbb146104aa578063b6a5d7de146104ca578063dc93cf70146104ea578063dd62ed3e1461050a57600080fd5b8063893d20e8146104565780638f9a55c01461047457806395d89b411461021c578063a8aa1b311461048a57600080fd5b8063571ac8b01161017a5780636ddd1713116101495780636ddd1713146103c95780636fcba377146103ea57806370a082311461040a57806371d0979b1461044057600080fd5b8063571ac8b0146103515780635acbdedb146103715780635d0044ca14610387578063658d4b7f146103a957600080fd5b806323b872dd116101b657806323b872dd146102985780632cf003c2146102b85780632f54bf6e14610306578063313ce5671461033557600080fd5b80630445b667146101f357806306fdde031461021c578063095ea7b31461025357806318160ddd1461028357600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020960145481565b6040519081526020015b60405180910390f35b34801561022857600080fd5b506040805180820182526008815267566972616c44414f60c01b602082015290516102139190611846565b34801561025f57600080fd5b5061027361026e3660046118b3565b610655565b6040519015158152602001610213565b34801561028f57600080fd5b50600254610209565b3480156102a457600080fd5b506102736102b33660046118df565b6106c2565b3480156102c457600080fd5b506102ee6102d3366004611920565b6008602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610213565b34801561031257600080fd5b50610273610321366004611920565b6000546001600160a01b0391821691161490565b34801561034157600080fd5b5060405160098152602001610213565b34801561035d57600080fd5b5061027361036c366004611920565b610784565b34801561037d57600080fd5b5061020960105481565b34801561039357600080fd5b506103a76103a236600461193d565b610792565b005b3480156103b557600080fd5b506103a76103c436600461196b565b6107e6565b3480156103d557600080fd5b5060135461027390600160a01b900460ff1681565b3480156103f657600080fd5b506103a76104053660046119a0565b610836565b34801561041657600080fd5b50610209610425366004611920565b6001600160a01b031660009081526005602052604090205490565b34801561044c57600080fd5b5061020960045481565b34801561046257600080fd5b506000546001600160a01b03166102ee565b34801561048057600080fd5b5061020960035481565b34801561049657600080fd5b506013546102ee906001600160a01b031681565b3480156104b657600080fd5b506102736104c53660046118b3565b610889565b3480156104d657600080fd5b506103a76104e5366004611920565b610896565b3480156104f657600080fd5b506103a7610505366004611920565b6108e7565b34801561051657600080fd5b506102096105253660046119d2565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561055c57600080fd5b506103a761056b366004611a0b565b610a1c565b34801561057c57600080fd5b506103a761058b36600461193d565b610a63565b34801561059c57600080fd5b506103a76105ab366004611920565b610ab5565b3480156105bc57600080fd5b506102736105cb366004611920565b60096020526000908152604090205460ff1681565b3480156105ec57600080fd5b506103a76105fb366004611920565b610b00565b34801561060c57600080fd5b506103a7610b96565b34801561062157600080fd5b506012546102ee906001600160a01b031681565b34801561064157600080fd5b50610273610650366004611920565b610bf9565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106b09086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526006602090815260408083203384529091528120546000191461076f576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260068252838120338252909152919091205461074a918490610c17565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61077a848484610c51565b90505b9392505050565b60006106bc82600019610655565b6000546001600160a01b031633146107c55760405162461bcd60e51b81526004016107bc90611a27565b60405180910390fd5b6103e86002546107d59190611a5d565b8110156107e157600080fd5b600355565b6107ef33610bf9565b61080b5760405162461bcd60e51b81526004016107bc90611a7f565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b61083f33610bf9565b61085b5760405162461bcd60e51b81526004016107bc90611a7f565b600a849055600b839055600c82905561087e826108788686610f9d565b90610f9d565b600d55600e55505050565b600061077d338484610c51565b6000546001600160a01b031633146108c05760405162461bcd60e51b81526004016107bc90611a27565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6108f033610bf9565b61090c5760405162461bcd60e51b81526004016107bc90611a7f565b6001600160a01b0381163014156109715760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b60648201526084016107bc565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190611aa4565b6011546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610a17573d6000803e3d6000fd5b505050565b610a2533610bf9565b610a415760405162461bcd60e51b81526004016107bc90611a7f565b60138054921515600160a01b0260ff60a01b1990931692909217909155601455565b6000546001600160a01b03163314610a8d5760405162461bcd60e51b81526004016107bc90611a27565b610a996009600a611ba1565b610aa4906001611bb0565b811115610ab057600080fd5b600455565b6000546001600160a01b03163314610adf5760405162461bcd60e51b81526004016107bc90611a27565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610b2a5760405162461bcd60e51b81526004016107bc90611a27565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610b9f33610bf9565b610bbb5760405162461bcd60e51b81526004016107bc90611a7f565b60115460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610bf5573d6000803e3d6000fd5b5050565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115610c3b5760405162461bcd60e51b81526004016107bc9190611846565b506000610c488486611bcf565b95945050505050565b60155460009060ff1615610c7157610c6a848484610ffc565b905061077d565b6013546001600160a01b03848116911614610d2c576001600160a01b03831660009081526007602052604090205460ff1680610cd257506003546001600160a01b038416600090815260056020526040902054610ccf908490611be6565b11155b610d2c5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016107bc565b60135482906001600160a01b0386811691161415610dcd576001600160a01b03841660009081526007602052604090205460ff16610dc8576001600160a01b03841660009081526009602052604090205460ff16610dbb5760405162461bcd60e51b815260206004820152600c60248201526b139bdd081c9959995c9c995960a21b60448201526064016107bc565b610dc584846110e2565b90505b610ea0565b6013546001600160a01b0385811691161415610e0d576001600160a01b03851660009081526007602052604090205460ff16610dc857610dc58584611274565b6001600160a01b03841660009081526009602052604090205460ff16610ea0576004548310610ea0576001600160a01b038085166000818152600960209081526040808320805460ff1916600117905560089091528082208054948a166001600160a01b031990951685179055517f2c07cd45454a31c572d49686c5ec6fef884778b2cf441c7fd58f4bde0fa6400b9190a35b610ea8611318565b15610eb557610eb5611370565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038816600090815260059091529190912054610f07918590610c17565b6001600160a01b038087166000908152600560205260408082209390935590861681522054610f369082610f9d565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f8a9085815260200190565b60405180910390a3506001949350505050565b600080610faa8385611be6565b90508381101561077d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107bc565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461104d918490610c17565b6001600160a01b03808616600090815260056020526040808220939093559085168152205461107c9083610f9d565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110d09086815260200190565b60405180910390a35060019392505050565b600080600e5483600f546110f69190611bb0565b6111009190611a5d565b6010546001600160a01b03808716600090815260086020908152604080832054909316825260059052205491925010156111d6576001600160a01b0380851660009081526008602090815260408083205490931682526005905220546111669082610f9d565b6001600160a01b0385811660008181526008602081815260408084208054871685526005835281852097909755928490529081529354905185815291939216917f9be71e54c914a5355f90883acdff2a1d75cebe9a1c6f15305d1fb0c28d7d7630910160405180910390a3611262565b6011546001600160a01b03166000908152600560205260409020546111fb9082610f9d565b601180546001600160a01b0390811660009081526005602052604090819020939093559054915186821692909116907f9be71e54c914a5355f90883acdff2a1d75cebe9a1c6f15305d1fb0c28d7d7630906112599085815260200190565b60405180910390a35b61126c8184611bcf565b949350505050565b600080611298600e54611292600d548661163d90919063ffffffff16565b906116bc565b306000908152600560205260409020549091506112b59082610f9d565b30600081815260056020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113069085815260200190565b60405180910390a361126c83826116fe565b6013546000906001600160a01b03163314801590611339575060155460ff16155b801561134e5750601354600160a01b900460ff165b801561136b57506014543060009081526005602052604090205410155b905090565b6015805460ff1916600117905530600090815260056020526040812054905060006113b16002611292600d54611292600a548761163d90919063ffffffff16565b905060006113bf83836116fe565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106113f9576113f9611bfe565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190611c14565b8160018151811061148957611489611bfe565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac947906114d3908690600090879030904290600401611c31565b600060405180830381600087803b1580156114ed57600080fd5b505af1158015611501573d6000803e3d6000fd5b50505050600061151a82476116fe90919063ffffffff16565b905060006115406115376002600a546116bc90919063ffffffff16565b600d54906116fe565b90506000611562600261129284611292600a548861163d90919063ffffffff16565b905060006115708285611bcf565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146115c7576040519150601f19603f3d011682016040523d82523d6000602084013e6115cc565b606091505b505090508061161d5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016107bc565b6116278984611740565b50506015805460ff191690555050505050505050565b60008261164c575060006106bc565b60006116588385611bb0565b9050826116658583611a5d565b1461077d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107bc565b600061077d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611818565b600061077d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c17565b8115610bf55760125460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156117b3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117d89190611ca2565b505060408051838152602081018590527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15050565b600081836118395760405162461bcd60e51b81526004016107bc9190611846565b506000610c488486611a5d565b600060208083528351808285015260005b8181101561187357858101830151858201604001528201611857565b81811115611885576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146118b057600080fd5b50565b600080604083850312156118c657600080fd5b82356118d18161189b565b946020939093013593505050565b6000806000606084860312156118f457600080fd5b83356118ff8161189b565b9250602084013561190f8161189b565b929592945050506040919091013590565b60006020828403121561193257600080fd5b813561077d8161189b565b60006020828403121561194f57600080fd5b5035919050565b8035801515811461196657600080fd5b919050565b6000806040838503121561197e57600080fd5b82356119898161189b565b915061199760208401611956565b90509250929050565b600080600080608085870312156119b657600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156119e557600080fd5b82356119f08161189b565b91506020830135611a008161189b565b809150509250929050565b60008060408385031215611a1e57600080fd5b6118d183611956565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082611a7a57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060208284031215611ab657600080fd5b5051919050565b600181815b80851115611af8578160001904821115611ade57611ade611a47565b80851615611aeb57918102915b93841c9390800290611ac2565b509250929050565b600082611b0f575060016106bc565b81611b1c575060006106bc565b8160018114611b325760028114611b3c57611b58565b60019150506106bc565b60ff841115611b4d57611b4d611a47565b50506001821b6106bc565b5060208310610133831016604e8410600b8410161715611b7b575081810a6106bc565b611b858383611abd565b8060001904821115611b9957611b99611a47565b029392505050565b600061077d60ff841683611b00565b6000816000190483118215151615611bca57611bca611a47565b500290565b600082821015611be157611be1611a47565b500390565b60008219821115611bf957611bf9611a47565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c2657600080fd5b815161077d8161189b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c815784516001600160a01b031683529383019391830191600101611c5c565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611cb757600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220288c925d37ec5b2a94da198d9c7d8cef29b5d9c743dc5b4f1aac7fdd11f6415564736f6c634300080c0033

Deployed Bytecode Sourcemap

4823:9945:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5935:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5935:54:0;;;;;;;;7147:80;;;;;;;;;;-1:-1:-1;7219:5:0;;;;;;;;;;;-1:-1:-1;;;7219:5:0;;;;7147:80;;;;7219:5;7147:80;:::i;7569:216::-;;;;;;;;;;-1:-1:-1;7569:216:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;7569:216:0;1254:187:1;6877:88:0;;;;;;;;;;-1:-1:-1;6950:12:0;;6877:88;;8087:370;;;;;;;;;;-1:-1:-1;8087:370:0;;;;;:::i;:::-;;:::i;5378:44::-;;;;;;;;;;-1:-1:-1;5378:44:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;5378:44:0;;;;;;-1:-1:-1;;;;;2323:32:1;;;2305:51;;2293:2;2278:18;5378:44:0;2159:203:1;2892:103:0;;;;;;;;;;-1:-1:-1;2892:103:0;;;;;:::i;:::-;2947:4;2982:5;-1:-1:-1;;;;;2971:16:0;;;2982:5;;2971:16;;2892:103;6971:80;;;;;;;;;;-1:-1:-1;6971:80:0;;5010:1;2509:36:1;;2497:2;2482:18;6971:80:0;2367:184:1;7793:122:0;;;;;;;;;;-1:-1:-1;7793:122:0;;;;;:::i;:::-;;:::i;5667:69::-;;;;;;;;;;;;;;;;13221:151;;;;;;;;;;-1:-1:-1;13221:151:0;;;;;:::i;:::-;;:::i;:::-;;13563:120;;;;;;;;;;-1:-1:-1;13563:120:0;;;;;:::i;:::-;;:::i;5898:30::-;;;;;;;;;;-1:-1:-1;5898:30:0;;;;-1:-1:-1;;;5898:30:0;;;;;;13691:348;;;;;;;;;;-1:-1:-1;13691:348:0;;;;;:::i;:::-;;:::i;7317:105::-;;;;;;;;;;-1:-1:-1;7317:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7401:18:0;7383:7;7401:18;;;:9;:18;;;;;;;7317:105;5143:62;;;;;;;;;;;;;;;;7233:78;;;;;;;;;;-1:-1:-1;7285:7:0;7303:5;-1:-1:-1;;;;;7303:5:0;7233:78;;5079:56;;;;;;;;;;;;;;;;5870:19;;;;;;;;;;-1:-1:-1;5870:19:0;;;;-1:-1:-1;;;;;5870:19:0;;;7923:156;;;;;;;;;;-1:-1:-1;7923:156:0;;;;;:::i;:::-;;:::i;2685:94::-;;;;;;;;;;-1:-1:-1;2685:94:0;;;;;:::i;:::-;;:::i;14399:298::-;;;;;;;;;;-1:-1:-1;14399:298:0;;;;;:::i;:::-;;:::i;7428:133::-;;;;;;;;;;-1:-1:-1;7428:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7530:19:0;;;7512:7;7530:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7428:133;14047:156;;;;;;;;;;-1:-1:-1;14047:156:0;;;;;:::i;:::-;;:::i;13383:172::-;;;;;;;;;;-1:-1:-1;13383:172:0;;;;;:::i;:::-;;:::i;2787:97::-;;;;;;;;;;-1:-1:-1;2787:97:0;;;;;:::i;:::-;;:::i;5430:42::-;;;;;;;;;;-1:-1:-1;5430:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3118:173;;;;;;;;;;-1:-1:-1;3118:173:0;;;;;:::i;:::-;;:::i;14211:180::-;;;;;;;;;;;;;:::i;5839:24::-;;;;;;;;;;-1:-1:-1;5839:24:0;;;;-1:-1:-1;;;;;5839:24:0;;;3003:107;;;;;;;;;;-1:-1:-1;3003:107:0;;;;;:::i;:::-;;:::i;7569:216::-;7673:10;7644:4;7661:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7661:32:0;;;;;;;;;;:41;;;7718:37;7644:4;;7661:32;;7718:37;;;;7696:6;160:25:1;;148:2;133:18;;14:177;7718:37:0;;;;;;;;-1:-1:-1;7773:4:0;7569:216;;;;;:::o;8087:370::-;-1:-1:-1;;;;;8207:19:0;;8187:4;8207:19;;;:11;:19;;;;;;;;8227:10;8207:31;;;;;;;;-1:-1:-1;;8207:52:0;8204:186;;8309:69;;;;;;;;;;;-1:-1:-1;;;8309:69:0;;;;;;;;-1:-1:-1;;;;;8309:19:0;;-1:-1:-1;8309:19:0;;;:11;:19;;;;;8329:10;8309:31;;;;;;;;;;:69;;8345:6;;8309:35;:69::i;:::-;-1:-1:-1;;;;;8275:19:0;;;;;;:11;:19;;;;;;;;8295:10;8275:31;;;;;;;:103;8204:186;8409:40;8423:6;8431:9;8442:6;8409:13;:40::i;:::-;8402:47;;8087:370;;;;;;:::o;7793:122::-;7848:4;7872:35;7880:7;-1:-1:-1;;7872:7:0;:35::i;13221:151::-;2947:4;2982:5;-1:-1:-1;;;;;2982:5:0;2544:10;2971:16;2528:38;;;;-1:-1:-1;;;2528:38:0;;;;;;;:::i;:::-;;;;;;;;;13324:4:::1;13309:12;;:19;;;;:::i;:::-;13299:6;:29;;13291:39;;;::::0;::::1;;13341:14;:23:::0;13221:151::o;13563:120::-;2626:24;2639:10;2626:12;:24::i;:::-;2618:48;;;;-1:-1:-1;;;2618:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13647:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;13647:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13563:120::o;13691:348::-;2626:24;2639:10;2626:12;:24::i;:::-;2618:48;;;;-1:-1:-1;;;2618:48:0;;;;;;;:::i;:::-;13827:12:::1;:28:::0;;;13866:6:::1;:16:::0;;;13893:12:::1;:28:::0;;;13943:45:::1;13908:13:::0;13943:26:::1;13842:13:::0;13875:7;13943:17:::1;:26::i;:::-;:30:::0;::::1;:45::i;:::-;13932:8;:56:::0;13999:14:::1;:32:::0;-1:-1:-1;;;13691:348:0:o;7923:156::-;8003:4;8027:44;8041:10;8053:9;8064:6;8027:13;:44::i;2685:94::-;2947:4;2982:5;-1:-1:-1;;;;;2982:5:0;2544:10;2971:16;2528:38;;;;-1:-1:-1;;;2528:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2745:19:0::1;;::::0;;;2767:4:::1;2745:19;::::0;;;;;;;:26;;-1:-1:-1;;2745:26:0::1;::::0;;::::1;::::0;;2685:94::o;14399:298::-;2626:24;2639:10;2626:12;:24::i;:::-;2618:48;;;;-1:-1:-1;;;2618:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14482:23:0;::::1;14500:4;14482:23;;14474:71;;;::::0;-1:-1:-1;;;14474:71:0;;5978:2:1;14474:71:0::1;::::0;::::1;5960:21:1::0;6017:2;5997:18;;;5990:30;6056:34;6036:18;;;6029:62;-1:-1:-1;;;6107:18:1;;;6100:33;6150:19;;14474:71:0::1;5776:399:1::0;14474:71:0::1;14583:39;::::0;-1:-1:-1;;;14583:39:0;;14616:4:::1;14583:39;::::0;::::1;2305:51:1::0;14556:24:0::1;::::0;-1:-1:-1;;;;;14583:24:0;::::1;::::0;::::1;::::0;2278:18:1;;14583:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14641:20;::::0;14633:56:::1;::::0;14556:66;;-1:-1:-1;;;;;;14641:20:0::1;::::0;14633:56;::::1;;;::::0;14556:66;;14641:20:::1;14633:56:::0;14641:20;14633:56;14556:66;14641:20;14633:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14463:234;14399:298:::0;:::o;14047:156::-;2626:24;2639:10;2626:12;:24::i;:::-;2618:48;;;;-1:-1:-1;;;2618:48:0;;;;;;;:::i;:::-;14139:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;14139:22:0::1;-1:-1:-1::0;;;;14139:22:0;;::::1;::::0;;;::::1;::::0;;;:11:::1;14172:23:::0;14047:156::o;13383:172::-;2947:4;2982:5;-1:-1:-1;;;;;2982:5:0;2544:10;2971:16;2528:38;;;;-1:-1:-1;;;2528:38:0;;;;;;;:::i;:::-;13487:13:::1;5010:1;13487:2;:13;:::i;:::-;13484:17;::::0;:1:::1;:17;:::i;:::-;13474:6;:27;;13466:37;;;::::0;::::1;;13514:23;:32:::0;13383:172::o;2787:97::-;2947:4;2982:5;-1:-1:-1;;;;;2982:5:0;2544:10;2971:16;2528:38;;;;-1:-1:-1;;;2528:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2849:19:0::1;2871:5;2849:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2849:27:0::1;::::0;;2787:97::o;3118:173::-;2947:4;2982:5;-1:-1:-1;;;;;2982:5:0;2544:10;2971:16;2528:38;;;;-1:-1:-1;;;2528:38:0;;;;;;;:::i;:::-;3194:5:::1;:11:::0;;-1:-1:-1;;;;;;3194:11:0::1;-1:-1:-1::0;;;;;3194:11:0;::::1;::::0;;::::1;::::0;;3216:19;;;-1:-1:-1;3216:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3216:26:0::1;::::0;;::::1;::::0;;;3258:25;;2305:51:1;;;3258:25:0::1;::::0;2278:18:1;3258:25:0::1;;;;;;;3118:173:::0;:::o;14211:180::-;2626:24;2639:10;2626:12;:24::i;:::-;2618:48;;;;-1:-1:-1;;;2618:48:0;;;;;;;:::i;:::-;14333:20:::1;::::0;14325:58:::1;::::0;14293:21:::1;::::0;-1:-1:-1;;;;;14333:20:0::1;::::0;14325:58;::::1;;;::::0;14293:21;;14264:26:::1;14325:58:::0;14264:26;14325:58;14293:21;14333:20;14325:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14253:138;14211:180::o:0;3003:107::-;-1:-1:-1;;;;;3083:19:0;3059:4;3083:19;;;:14;:19;;;;;;;;;3003:107::o;412:192::-;498:7;534:12;526:6;;;;518:29;;;;-1:-1:-1;;;518:29:0;;;;;;;;:::i;:::-;-1:-1:-1;558:9:0;570:5;574:1;570;:5;:::i;:::-;558:17;412:192;-1:-1:-1;;;;;412:192:0:o;8465:1392::-;8577:6;;8557:4;;8577:6;;8574:63;;;8593:41;8608:6;8616:9;8627:6;8593:14;:41::i;:::-;8586:48;;;;8574:63;8670:4;;-1:-1:-1;;;;;8657:17:0;;;8670:4;;8657:17;8653:173;;-1:-1:-1;;;;;8699:22:0;;;;;;:11;:22;;;;;;;;;:73;;-1:-1:-1;8758:14:0;;-1:-1:-1;;;;;8725:20:0;;;;;;:9;:20;;;;;;:29;;8748:6;;8725:29;:::i;:::-;:47;;8699:73;8691:123;;;;-1:-1:-1;;;8691:123:0;;8606:2:1;8691:123:0;;;8588:21:1;8645:2;8625:18;;;8618:30;8684:34;8664:18;;;8657:62;-1:-1:-1;;;8735:18:1;;;8728:35;8780:19;;8691:123:0;8404:401:1;8691:123:0;8904:4;;8863:6;;-1:-1:-1;;;;;8894:14:0;;;8904:4;;8894:14;8891:660;;;-1:-1:-1;;;;;8935:22:0;;;;;;:11;:22;;;;;;;;8931:178;;-1:-1:-1;;;;;8986:21:0;;;;;;:10;:21;;;;;;;;8978:45;;;;-1:-1:-1;;;8978:45:0;;9012:2:1;8978:45:0;;;8994:21:1;9051:2;9031:18;;;9024:30;-1:-1:-1;;;9070:18:1;;;9063:42;9122:18;;8978:45:0;8810:336:1;8978:45:0;9059:34;9076:9;9086:6;9059:16;:34::i;:::-;9042:51;;8931:178;8891:660;;;9144:4;;-1:-1:-1;;;;;9131:17:0;;;9144:4;;9131:17;9128:423;;;-1:-1:-1;;;;;10940:19:0;;10915:4;10940:19;;;:11;:19;;;;;;;;9172:101;;9234:23;9242:6;9250;9234:7;:23::i;9128:423::-;-1:-1:-1;;;;;9297:21:0;;;;;;:10;:21;;;;;;;;9294:257;;9355:23;;9345:6;:33;9342:198;;-1:-1:-1;;;;;9399:21:0;;;;;;;:10;:21;;;;;;;;:28;;-1:-1:-1;;9399:28:0;9423:4;9399:28;;;9446:8;:19;;;;;;:28;;;;;-1:-1:-1;;;;;;9446:28:0;;;;;;;9498:26;;;9399:21;9498:26;9342:198;9575:16;:14;:16::i;:::-;9572:35;;;9594:10;:8;:10::i;:::-;9639:53;;;;;;;;;;;-1:-1:-1;;;9639:53:0;;;;;;;;-1:-1:-1;;;;;9639:17:0;;-1:-1:-1;9639:17:0;;;:9;:17;;;;;;;;:53;;9661:6;;9639:21;:53::i;:::-;-1:-1:-1;;;;;9619:17:0;;;;;;;:9;:17;;;;;;:73;;;;9726:20;;;;;;;:40;;9751:14;9726:24;:40::i;:::-;-1:-1:-1;;;;;9703:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9784:43;;;;;;;;;;9812:14;160:25:1;;148:2;133:18;;14:177;9784:43:0;;;;;;;;-1:-1:-1;9845:4:0;;8465:1392;-1:-1:-1;;;;8465:1392:0:o;83:181::-;141:7;;173:5;177:1;173;:5;:::i;:::-;161:17;;202:1;197;:6;;189:46;;;;-1:-1:-1;;;189:46:0;;9353:2:1;189:46:0;;;9335:21:1;9392:2;9372:18;;;9365:30;9431:29;9411:18;;;9404:57;9478:18;;189:46:0;9151:351:1;9869:330:0;9999:53;;;;;;;;;;;-1:-1:-1;;;9999:53:0;;;;;;;;-1:-1:-1;;;;;9999:17:0;;9962:4;9999:17;;;:9;:17;;;;;;;:53;;10021:6;;9999:21;:53::i;:::-;-1:-1:-1;;;;;9979:17:0;;;;;;;:9;:17;;;;;;:73;;;;10086:20;;;;;;;:32;;10111:6;10086:24;:32::i;:::-;-1:-1:-1;;;;;10063:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10134:35;;;;;;;;;;10162:6;160:25:1;;148:2;133:18;;14:177;10134:35:0;;;;;;;;-1:-1:-1;10187:4:0;9869:330;;;;;:::o;10207:634::-;10279:4;10296:22;10344:14;;10335:6;10321:11;;:20;;;;:::i;:::-;:37;;;;:::i;:::-;10400:26;;-1:-1:-1;;;;;10382:14:0;;;10372:25;10382:14;;;:8;:14;;;;;;;;;;;;10372:25;;:9;:25;;;;10296:62;;-1:-1:-1;;10369:422:0;;;-1:-1:-1;;;;;10481:14:0;;;10471:25;10481:14;;;:8;:14;;;;;;;;;;;;10471:25;;:9;:25;;;;:45;;10501:14;10471:29;:45::i;:::-;-1:-1:-1;;;;;10453:14:0;;;10443:25;10453:14;;;:8;:14;;;;;;;;;;;;10443:25;;:9;:25;;;;;:73;;;;10550:14;;;;;;;;;10536:49;;160:25:1;;;10453:14:0;;10550;;;10536:49;;133:18:1;10536:49:0;;;;;;;10369:422;;;10663:20;;-1:-1:-1;;;;;10663:20:0;10653:31;;;;:9;:31;;;;;;:51;;10689:14;10653:35;:51::i;:::-;10629:20;;;-1:-1:-1;;;;;10629:20:0;;;10619:31;;;;:9;:31;;;;;;;:85;;;;10738:20;;10724:55;;;;;;10738:20;;;;10724:55;;;;10764:14;160:25:1;;148:2;133:18;;14:177;10724:55:0;;;;;;;;10369:422;10810:23;10819:14;10810:6;:23;:::i;:::-;10803:30;10207:634;-1:-1:-1;;;;10207:634:0:o;10975:333::-;11042:7;11062:17;11082:40;11107:14;;11082:20;11093:8;;11082:6;:10;;:20;;;;:::i;:::-;:24;;:40::i;:::-;11180:4;11162:24;;;;:9;:24;;;;;;11062:60;;-1:-1:-1;11162:39:0;;11062:60;11162:28;:39::i;:::-;11153:4;11135:24;;;;:9;:24;;;;;;;:66;;;;11217:42;;-1:-1:-1;;;;;11217:42:0;;;;;;;11249:9;160:25:1;;148:2;133:18;;14:177;11217:42:0;;;;;;;;11279:21;:6;11290:9;11279:10;:21::i;11316:197::-;11403:4;;11365;;-1:-1:-1;;;;;11403:4:0;11389:10;:18;;;;:38;;-1:-1:-1;11421:6:0;;;;11420:7;11389:38;:62;;;;-1:-1:-1;11440:11:0;;-1:-1:-1;;;11440:11:0;;;;11389:62;:116;;;;-1:-1:-1;11492:13:0;;11482:4;11464:24;;;;:9;:24;;;;;;:41;;11389:116;11382:123;;11316:197;:::o;11521:1232::-;6046:6;:13;;-1:-1:-1;;6046:13:0;6055:4;6046:13;;;11619:4:::1;-1:-1:-1::0;7401:18:0;;;:9;:18;;;;;;11570:55:::1;;11636:23;11662:59;11719:1;11662:52;11705:8;;11662:38;11687:12;;11662:20;:24;;:38;;;;:::i;:59::-;11636:85:::0;-1:-1:-1;11732:20:0::1;11755:41;:20:::0;11636:85;11755:24:::1;:41::i;:::-;11833:16;::::0;;11847:1:::1;11833:16:::0;;;;;::::1;::::0;;11732:64;;-1:-1:-1;11809:21:0::1;::::0;11833:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11833:16:0::1;11809:40;;11878:4;11860;11865:1;11860:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11860:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11904:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;11904:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;11860:7;;11904:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11894:4;11899:1;11894:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11894:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11988:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;11988:188:0;;11954:21:::1;::::0;11988:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;12060:12;;11930:21:::1;::::0;12103:4;;12130::::1;::::0;12150:15:::1;::::0;11988:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12187:17;12207:40;12233:13;12207:21;:25;;:40;;;;:::i;:::-;12187:60;;12258:19;12280:33;12293:19;12310:1;12293:12;;:16;;:19;;;;:::i;:::-;12280:8;::::0;;:12:::1;:33::i;:::-;12258:55;;12324:26;12353:51;12402:1;12353:44;12385:11;12353:27;12367:12;;12353:9;:13;;:27;;;;:::i;:51::-;12324:80:::0;-1:-1:-1;12415:26:0::1;12444:30;12324:80:::0;12444:9;:30:::1;:::i;:::-;12546:20;::::0;12538:77:::1;::::0;12415:59;;-1:-1:-1;12488:21:0::1;::::0;-1:-1:-1;;;;;12546:20:0;;::::1;::::0;12605:5:::1;::::0;12415:59;;12488:21;12538:77;12488:21;12538:77;12415:59;12546:20;12605:5;12538:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12487:128;;;12634:16;12626:59;;;::::0;-1:-1:-1;;;12626:59:0;;11424:2:1;12626:59:0::1;::::0;::::1;11406:21:1::0;11463:2;11443:18;;;11436:30;11502:32;11482:18;;;11475:60;11552:18;;12626:59:0::1;11222:354:1::0;12626:59:0::1;12696:49;12709:15;12726:18;12696:12;:49::i;:::-;-1:-1:-1::0;;6064:6:0;:14;;-1:-1:-1;;6064:14:0;;;-1:-1:-1;;;;;;;;11521:1232:0:o;610:250::-;668:7;692:6;688:47;;-1:-1:-1;722:1:0;715:8;;688:47;747:9;759:5;763:1;759;:5;:::i;:::-;747:17;-1:-1:-1;792:1:0;783:5;787:1;747:17;783:5;:::i;:::-;:10;775:56;;;;-1:-1:-1;;;775:56:0;;11783:2:1;775:56:0;;;11765:21:1;11822:2;11802:18;;;11795:30;11861:34;11841:18;;;11834:62;-1:-1:-1;;;11912:18:1;;;11905:31;11953:19;;775:56:0;11581:397:1;866:132:0;924:7;951:39;955:1;958;951:39;;;;;;;;;;;;;;;;;:3;:39::i;270:136::-;328:7;355:43;359:1;362;355:43;;;;;;;;;;;;;;;;;:3;:43::i;12761:452::-;12845:15;;12842:364;;12880:6;;:251;;-1:-1:-1;;;12880:251:0;;12951:4;12880:251;;;12324:34:1;;;12374:18;;;12367:34;;;12880:6:0;12417:18:1;;;12410:34;;;12460:18;;;12453:34;12503:19;;;12496:44;13097:15:0;12556:19:1;;;12549:35;-1:-1:-1;;;;;12880:6:0;;;;:22;;12910:9;;12258:19:1;;12880:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;13155:35:0;;;13080:25:1;;;13136:2;13121:18;;13114:34;;;13155:35:0;;-1:-1:-1;13053:18:1;13155:35:0;;;;;;;12761:452;;:::o;1004:345::-;1090:7;1192:12;1185:5;1177:28;;;;-1:-1:-1;;;1177:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1216:9:0;1228:5;1232:1;1228;:5;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;853:70;798:131;:::o;934:315::-;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934: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:247::-;1966:6;2019:2;2007:9;1998:7;1994:23;1990:32;1987:52;;;2035:1;2032;2025:12;1987:52;2074:9;2061:23;2093:31;2118:5;2093:31;:::i;2556:180::-;2615:6;2668:2;2656:9;2647:7;2643:23;2639:32;2636:52;;;2684:1;2681;2674:12;2636:52;-1:-1:-1;2707:23:1;;2556:180;-1:-1:-1;2556:180:1:o;2741:160::-;2806:20;;2862:13;;2855:21;2845:32;;2835:60;;2891:1;2888;2881:12;2835:60;2741:160;;;:::o;2906:315::-;2971:6;2979;3032:2;3020:9;3011:7;3007:23;3003:32;3000:52;;;3048:1;3045;3038:12;3000:52;3087:9;3074:23;3106:31;3131:5;3106:31;:::i;:::-;3156:5;-1:-1:-1;3180:35:1;3211:2;3196:18;;3180:35;:::i;:::-;3170:45;;2906:315;;;;;:::o;3226:385::-;3312:6;3320;3328;3336;3389:3;3377:9;3368:7;3364:23;3360:33;3357:53;;;3406:1;3403;3396:12;3357:53;-1:-1:-1;;3429:23:1;;;3499:2;3484:18;;3471:32;;-1:-1:-1;3550:2:1;3535:18;;3522:32;;3601:2;3586:18;3573:32;;-1:-1:-1;3226:385:1;-1:-1:-1;3226:385:1:o;3616:388::-;3684:6;3692;3745:2;3733:9;3724:7;3720:23;3716:32;3713:52;;;3761:1;3758;3751:12;3713:52;3800:9;3787:23;3819:31;3844:5;3819:31;:::i;:::-;3869:5;-1:-1:-1;3926:2:1;3911:18;;3898:32;3939:33;3898:32;3939:33;:::i;:::-;3991:7;3981:17;;;3616:388;;;;;:::o;4009:248::-;4074:6;4082;4135:2;4123:9;4114:7;4110:23;4106:32;4103:52;;;4151:1;4148;4141:12;4103:52;4174:26;4190:9;4174:26;:::i;4748:329::-;4950:2;4932:21;;;4989:1;4969:18;;;4962:29;-1:-1:-1;;;5022:2:1;5007:18;;5000:36;5068:2;5053:18;;4748:329::o;5082:127::-;5143:10;5138:3;5134:20;5131:1;5124:31;5174:4;5171:1;5164:15;5198:4;5195:1;5188:15;5214:217;5254:1;5280;5270:132;;5324:10;5319:3;5315:20;5312:1;5305:31;5359:4;5356:1;5349:15;5387:4;5384:1;5377:15;5270:132;-1:-1:-1;5416:9:1;;5214:217::o;5436:335::-;5638:2;5620:21;;;5677:2;5657:18;;;5650:30;-1:-1:-1;;;5711:2:1;5696:18;;5689:41;5762:2;5747:18;;5436:335::o;6180:184::-;6250:6;6303:2;6291:9;6282:7;6278:23;6274:32;6271:52;;;6319:1;6316;6309:12;6271:52;-1:-1:-1;6342:16:1;;6180:184;-1:-1:-1;6180:184:1:o;6369:422::-;6458:1;6501:5;6458:1;6515:270;6536:7;6526:8;6523:21;6515:270;;;6595:4;6591:1;6587:6;6583:17;6577:4;6574:27;6571:53;;;6604:18;;:::i;:::-;6654:7;6644:8;6640:22;6637:55;;;6674:16;;;;6637:55;6753:22;;;;6713:15;;;;6515:270;;;6519:3;6369:422;;;;;:::o;6796:806::-;6845:5;6875:8;6865:80;;-1:-1:-1;6916:1:1;6930:5;;6865:80;6964:4;6954:76;;-1:-1:-1;7001:1:1;7015:5;;6954:76;7046:4;7064:1;7059:59;;;;7132:1;7127:130;;;;7039:218;;7059:59;7089:1;7080:10;;7103:5;;;7127:130;7164:3;7154:8;7151:17;7148:43;;;7171:18;;:::i;:::-;-1:-1:-1;;7227:1:1;7213:16;;7242:5;;7039:218;;7341:2;7331:8;7328:16;7322:3;7316:4;7313:13;7309:36;7303:2;7293:8;7290:16;7285:2;7279:4;7276:12;7272:35;7269:77;7266:159;;;-1:-1:-1;7378:19:1;;;7410:5;;7266:159;7457:34;7482:8;7476:4;7457:34;:::i;:::-;7527:6;7523:1;7519:6;7515:19;7506:7;7503:32;7500:58;;;7538:18;;:::i;:::-;7576:20;;6796:806;-1:-1:-1;;;6796:806:1:o;7607:140::-;7665:5;7694:47;7735:4;7725:8;7721:19;7715:4;7694:47;:::i;7752:168::-;7792:7;7858:1;7854;7850:6;7846:14;7843:1;7840:21;7835:1;7828:9;7821:17;7817:45;7814:71;;;7865:18;;:::i;:::-;-1:-1:-1;7905:9:1;;7752:168::o;8141:125::-;8181:4;8209:1;8206;8203:8;8200:34;;;8214:18;;:::i;:::-;-1:-1:-1;8251:9:1;;8141:125::o;8271:128::-;8311:3;8342:1;8338:6;8335:1;8332:13;8329:39;;;8348:18;;:::i;:::-;-1:-1:-1;8384:9:1;;8271:128::o;9639:127::-;9700:10;9695:3;9691:20;9688:1;9681:31;9731:4;9728:1;9721:15;9755:4;9752:1;9745:15;9771:251;9841:6;9894:2;9882:9;9873:7;9869:23;9865:32;9862:52;;;9910:1;9907;9900:12;9862:52;9942:9;9936:16;9961:31;9986:5;9961:31;:::i;10027:980::-;10289:4;10337:3;10326:9;10322:19;10368:6;10357:9;10350:25;10394:2;10432:6;10427:2;10416:9;10412:18;10405:34;10475:3;10470:2;10459:9;10455:18;10448:31;10499:6;10534;10528:13;10565:6;10557;10550:22;10603:3;10592:9;10588:19;10581:26;;10642:2;10634:6;10630:15;10616:29;;10663:1;10673:195;10687:6;10684:1;10681:13;10673:195;;;10752:13;;-1:-1:-1;;;;;10748:39:1;10736:52;;10843:15;;;;10808:12;;;;10784:1;10702:9;10673:195;;;-1:-1:-1;;;;;;;10924:32:1;;;;10919:2;10904:18;;10897:60;-1:-1:-1;;;10988:3:1;10973:19;10966:35;10885:3;10027:980;-1:-1:-1;;;10027:980:1:o;12595:306::-;12683:6;12691;12699;12752:2;12740:9;12731:7;12727:23;12723:32;12720:52;;;12768:1;12765;12758:12;12720:52;12797:9;12791:16;12781:26;;12847:2;12836:9;12832:18;12826:25;12816:35;;12891:2;12880:9;12876:18;12870:25;12860:35;;12595:306;;;;;:::o

Swarm Source

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