ETH Price: $3,410.02 (-1.53%)
Gas: 8 Gwei

Token

Floki Original Vision (FOV)
 

Overview

Max Total Supply

1,000,000,000 FOV

Holders

75

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,235,000.95 FOV

Value
$0.00
0x21c439e58f27bacea82f4db45f5763f0587e45ff
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:
FLOKIORIGINALVISION

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.16;

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

interface ERC20 {
    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) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        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 renounceOwnership() external onlyOwner {
        authorizations[owner] = false;
        owner = address(0);
    }

}

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

contract FLOKIORIGINALVISION is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Floki Original Vision";
    string public constant symbol = "FOV";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 1 * 10**9 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply / 50;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public treasuryFee = 3;
    uint256 public operationsFee = 1;
    uint256 public charityFee = 1;
    uint256 public totalFee = treasuryFee + operationsFee + charityFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 buyMultiplier = 1800;
    uint256 sellMultiplier = 1800;
    uint256 transferMultiplier = 1800;

    address treasuryFeeReceiver;
    address operationsFeeReceiver;
    address charityFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool tradingOpen = false;

    bool swapEnabled = true;
    uint256 swapThreshold = totalSupply / 200;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        treasuryFeeReceiver = 0x4528b3c5a3931e21856dE1bfbdE7B1feC6f9BD4f;
        charityFeeReceiver = 0xa4d46E3F91c6215C48E15485a05FC86f76Fc7De9;
        operationsFeeReceiver = 0x9E0E246d94C8657738f1abf35B84d7e3d349ADa2;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    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 setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 5,"Cannot set max wallet less than 0.5%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 5,"Cannot set max transaction less than 0.5%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

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

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"trading not open yet");
        }

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[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
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }

        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function takeitlive() external onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

    function swapBack() internal swapping {

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 amountETHTreasury = (amountETH * treasuryFee) / totalFee;
        uint256 amountETHOperations = (amountETH * operationsFee) / totalFee;
        uint256 amountETHCharity = (amountETH * charityFee) / totalFee;

        (bool tmpSuccess,) = payable(treasuryFeeReceiver).call{value: amountETHTreasury}("");
        (tmpSuccess,) = payable(operationsFeeReceiver).call{value: amountETHOperations}("");
        (tmpSuccess,) = payable(charityFeeReceiver).call{value: amountETHCharity}("");
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees_base100(uint256 _treasuryFee, uint256 _operationsFee, uint256 _charityFee) external onlyOwner {
        treasuryFee = _treasuryFee;
        operationsFee = _operationsFee;
        charityFee = _charityFee;
        totalFee = treasuryFee + operationsFee + charityFee;
    }

    function setFeeReceivers(address _treasuryFeeReceiver, address _charityFeeReceiver, address _operationsFeeReceiver) external onlyOwner {
        treasuryFeeReceiver = _treasuryFeeReceiver;
        charityFeeReceiver = _charityFeeReceiver;
        operationsFeeReceiver = _operationsFeeReceiver;
    }


    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isFeeExempt","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":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryFeeReceiver","type":"address"},{"internalType":"address","name":"_charityFeeReceiver","type":"address"},{"internalType":"address","name":"_operationsFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_charityFee","type":"uint256"}],"name":"setFees_base100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeitlive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526064620000146009600a6200058e565b6200002490633b9aca00620005a6565b620000309190620005c8565b6002556032620000436009600a6200058e565b6200005390633b9aca00620005a6565b6200005f9190620005c8565b60035560036009556001600a556001600b55600b54600a54600954620000869190620005eb565b620000929190620005eb565b600c55610708600d819055600e819055600f556013805461ffff60a01b1916600160a81b17905560c8620000c96009600a6200058e565b620000d990633b9aca00620005a6565b620000e59190620005c8565b601455348015620000f557600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560138054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa1580156200017c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a2919062000601565b6001600160a01b039081166080526013546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620001f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000219919062000601565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000291919062000601565b6001600160a01b0390811660a05230600081815260056020908152604080832060135490951683529381528382206000199055601080546001600160a01b0319908116734528b3c5a3931e21856de1bfbde7b1fec6f9bd4f1790915560128054821673a4d46e3f91c6215c48e15485a05fc86f76fc7de917905560118054909116739e0e246d94c8657738f1abf35b84d7e3d349ada217905533825260068152838220805460ff1990811660019081179092556007835285842080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548216831790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df805482168317905560089092528483208054831682179055928252928120805484168317905561dead90527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342998054909216179055620003ff6009600a6200058e565b6200040f90633b9aca00620005a6565b33600081815260046020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004526009600a6200058e565b6200046290633b9aca00620005a6565b60405190815260200160405180910390a36200062c565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004d0578160001904821115620004b457620004b462000479565b80851615620004c257918102915b93841c939080029062000494565b509250929050565b600082620004e95750600162000588565b81620004f85750600062000588565b81600181146200051157600281146200051c576200053c565b600191505062000588565b60ff84111562000530576200053062000479565b50506001821b62000588565b5060208310610133831016604e8410600b841016171562000561575081810a62000588565b6200056d83836200048f565b806000190482111562000584576200058462000479565b0290505b92915050565b60006200059f60ff841683620004d8565b9392505050565b6000816000190483118215151615620005c357620005c362000479565b500290565b600082620005e657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000588576200058862000479565b6000602082840312156200061457600080fd5b81516001600160a01b03811681146200059f57600080fd5b60805160a051611edf6200066e600039600081816105c301528181611123015281816114ac015281816117bf01526117f3015260006115760152611edf6000f3fe6080604052600436106102295760003560e01c80637d1db4a511610123578063bd9ab537116100ab578063df20fd491161006f578063df20fd49146106f1578063ecfca89914610711578063f0b37c0414610727578063f887ea4014610747578063fe9fbb801461076757600080fd5b8063bd9ab53714610625578063c867d60b14610645578063cc32d17614610675578063d7c010321461068b578063dd62ed3e146106ab57600080fd5b8063963c44bf116100f2578063963c44bf1461057c578063a503160b14610591578063a8aa1b31146105b1578063a9059cbb146105e5578063b6a5d7de1461060557600080fd5b80637d1db4a5146104d5578063893d20e8146104eb5780638b42507f1461051d57806395d89b411461054d57600080fd5b80632b112e49116101b15780636ce46bc3116101755780636ce46bc31461043d57806370a082311461045d578063715018a61461048a57806377b54bad1461049f57806378109e54146104bf57600080fd5b80632b112e49146103825780632f54bf6e14610397578063313ce567146103c65780633f4218e0146103ed578063571ac8b01461041d57600080fd5b8063180b0d7e116101f8578063180b0d7e1461030257806318160ddd146103175780631da1db5e1461032c5780631df4ccfc1461034c57806323b872dd1461036257600080fd5b806306fdde0314610235578063090896be1461028c57806309302dc6146102b0578063095ea7b3146102d257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061027660405180604001604052806015815260200174233637b5b49027b934b3b4b730b6102b34b9b4b7b760591b81525081565b6040516102839190611a87565b60405180910390f35b34801561029857600080fd5b506102a2600a5481565b604051908152602001610283565b3480156102bc57600080fd5b506102d06102cb366004611ad5565b6107a0565b005b3480156102de57600080fd5b506102f26102ed366004611b0a565b610868565b6040519015158152602001610283565b34801561030e57600080fd5b506102a2606481565b34801561032357600080fd5b506102a26108d5565b34801561033857600080fd5b506102d0610347366004611ad5565b6108f2565b34801561035857600080fd5b506102a2600c5481565b34801561036e57600080fd5b506102f261037d366004611b34565b61096b565b34801561038e57600080fd5b506102a2610a2d565b3480156103a357600080fd5b506102f26103b2366004611b70565b6000546001600160a01b0391821691161490565b3480156103d257600080fd5b506103db600981565b60405160ff9091168152602001610283565b3480156103f957600080fd5b506102f2610408366004611b70565b60066020526000908152604090205460ff1681565b34801561042957600080fd5b506102f2610438366004611b70565b610ab4565b34801561044957600080fd5b506102d0610458366004611b8b565b610ac2565b34801561046957600080fd5b506102a2610478366004611b70565b60046020526000908152604090205481565b34801561049657600080fd5b506102d0610b20565b3480156104ab57600080fd5b506102f26104ba366004611b0a565b610b7a565b3480156104cb57600080fd5b506102a260035481565b3480156104e157600080fd5b506102a260025481565b3480156104f757600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610283565b34801561052957600080fd5b506102f2610538366004611b70565b60076020526000908152604090205460ff1681565b34801561055957600080fd5b50610276604051806040016040528060038152602001622327ab60e91b81525081565b34801561058857600080fd5b506102d0610c89565b34801561059d57600080fd5b506102d06105ac366004611b8b565b610cca565b3480156105bd57600080fd5b506105057f000000000000000000000000000000000000000000000000000000000000000081565b3480156105f157600080fd5b506102f2610600366004611b0a565b610d20565b34801561061157600080fd5b506102d0610620366004611b70565b610d2d565b34801561063157600080fd5b506102d0610640366004611ad5565b610d7e565b34801561065157600080fd5b506102f2610660366004611b70565b60086020526000908152604090205460ff1681565b34801561068157600080fd5b506102a260095481565b34801561069757600080fd5b506102d06106a6366004611bb7565b610e43565b3480156106b757600080fd5b506102a26106c6366004611bfa565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106fd57600080fd5b506102d061070c366004611c3e565b610eac565b34801561071d57600080fd5b506102a2600b5481565b34801561073357600080fd5b506102d0610742366004611b70565b610f19565b34801561075357600080fd5b50601354610505906001600160a01b031681565b34801561077357600080fd5b506102f2610782366004611b70565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b031633146107d35760405162461bcd60e51b81526004016107ca90611c5c565b60405180910390fd5b60058110156108305760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b60648201526084016107ca565b6103e8816108406009600a611d76565b61084e90633b9aca00611d85565b6108589190611d85565b6108629190611da4565b60035550565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108c39086815260200190565b60405180910390a35060015b92915050565b6108e16009600a611d76565b6108ef90633b9aca00611d85565b81565b6000546001600160a01b0316331461091c5760405162461bcd60e51b81526004016107ca90611c5c565b476000606461092b8484611d85565b6109359190611da4565b604051909150339082156108fc029083906000818181858888f19350505050158015610965573d6000803e3d6000fd5b50505050565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610a18576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526005825283812033825290915291909120546109f3918490610fc2565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610a23848484610ffc565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54909190610a8d6009600a611d76565b610a9b90633b9aca00611d85565b610aa59190611dc6565b610aaf9190611dc6565b905090565b60006108cf82600019610868565b3360009081526001602052604090205460ff16610b0f5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016107ca565b600e91909155600d91909155600f55565b6000546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016107ca90611c5c565b600080546001600160a01b03168152600160205260408120805460ff1916905580546001600160a01b0319169055565b600080546001600160a01b03163314610ba55760405162461bcd60e51b81526004016107ca90611c5c565b81600003610c18576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c159190611dd9565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a269190611df2565b6000546001600160a01b03163314610cb35760405162461bcd60e51b81526004016107ca90611c5c565b6013805461ffff60a01b191661010160a01b179055565b6000546001600160a01b03163314610cf45760405162461bcd60e51b81526004016107ca90611c5c565b6009839055600a829055600b81905580610d0e8385611e0f565b610d189190611e0f565b600c55505050565b6000610a26338484610ffc565b6000546001600160a01b03163314610d575760405162461bcd60e51b81526004016107ca90611c5c565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314610da85760405162461bcd60e51b81526004016107ca90611c5c565b6005811015610e0b5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b60648201526084016107ca565b6103e881610e1b6009600a611d76565b610e2990633b9aca00611d85565b610e339190611d85565b610e3d9190611da4565b60025550565b6000546001600160a01b03163314610e6d5760405162461bcd60e51b81526004016107ca90611c5c565b601080546001600160a01b039485166001600160a01b031991821617909155601280549385169382169390931790925560118054919093169116179055565b6000546001600160a01b03163314610ed65760405162461bcd60e51b81526004016107ca90611c5c565b6013805460ff60a81b1916600160a81b8415150217905580610efa6009600a611d76565b610f0890633b9aca00611d85565b610f129190611da4565b6014555050565b6000546001600160a01b03163314610f435760405162461bcd60e51b81526004016107ca90611c5c565b6000546001600160a01b0390811690821603610fa15760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a656400000000000060448201526064016107ca565b6001600160a01b03166000908152600160205260409020805460ff19169055565b60008184841115610fe65760405162461bcd60e51b81526004016107ca9190611a87565b506000610ff38486611dc6565b95945050505050565b60155460009060ff161561101c576110158484846113b9565b9050610a26565b6001600160a01b03841660009081526001602052604090205460ff1615801561105e57506001600160a01b03831660009081526001602052604090205460ff16155b156110b357601354600160a01b900460ff166110b35760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107ca565b6001600160a01b03841660009081526001602052604090205460ff161580156110f557506001600160a01b03841660009081526008602052604090205460ff16155b801561111a57506001600160a01b03831660009081526008602052604090205460ff16155b801561115857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156111d2576003546001600160a01b038416600090815260046020526040902054611184908490611e0f565b11156111d25760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016107ca565b600254821115806111fb57506001600160a01b03841660009081526007602052604090205460ff165b8061121e57506001600160a01b03831660009081526007602052604090205460ff165b6112625760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b60448201526064016107ca565b61126a61149f565b1561127757611277611512565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600490915291909120546112c9918490610fc2565b6001600160a01b038516600090815260046020908152604080832093909355600690529081205460ff168061131657506001600160a01b03841660009081526006602052604090205460ff165b61132a57611325858486611797565b61132c565b825b6001600160a01b03851660009081526004602052604090205490915061135290826118f4565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113a69085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260049091529182205461140a918490610fc2565b6001600160a01b03808616600090815260046020526040808220939093559085168152205461143990836118f4565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061148d9086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906114dd575060155460ff16155b80156114f25750601354600160a81b900460ff165b8015610aaf57505060145430600090815260046020526040902054101590565b6015805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061155457611554611e22565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106115a8576115a8611e22565b6001600160a01b03928316602091820292909201015260135460145460405163791ac94760e01b8152919092169163791ac947916115f29190600090869030904290600401611e38565b600060405180830381600087803b15801561160c57600080fd5b505af1158015611620573d6000803e3d6000fd5b5050600c54600954479350600092506116399084611d85565b6116439190611da4565b90506000600c54600a54846116589190611d85565b6116629190611da4565b90506000600c54600b54856116779190611d85565b6116819190611da4565b6010546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146116d3576040519150601f19603f3d011682016040523d82523d6000602084013e6116d8565b606091505b50506011546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611728576040519150601f19603f3d011682016040523d82523d6000602084013e61172d565b606091505b50506012546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461177d576040519150601f19603f3d011682016040523d82523d6000602084013e611782565b606091505b50506015805460ff1916905550505050505050565b60008215806117a65750600c54155b156117b2575081610a26565b600f546001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908416036117f15750600e5461182f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361182f5750600d545b600061186461183f606480611d85565b61185e84611858600c548a61195390919063ffffffff16565b90611953565b906119d5565b905080156118e0573060009081526004602052604090205461188690826118f4565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118d79085815260200190565b60405180910390a35b6118ea8582611a17565b9695505050505050565b6000806119018385611e0f565b905083811015610a265760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107ca565b600082600003611965575060006108cf565b60006119718385611d85565b90508261197e8583611da4565b14610a265760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107ca565b6000610a2683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a59565b6000610a2683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fc2565b60008183611a7a5760405162461bcd60e51b81526004016107ca9190611a87565b506000610ff38486611da4565b600060208083528351808285015260005b81811015611ab457858101830151858201604001528201611a98565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611ae757600080fd5b5035919050565b80356001600160a01b0381168114611b0557600080fd5b919050565b60008060408385031215611b1d57600080fd5b611b2683611aee565b946020939093013593505050565b600080600060608486031215611b4957600080fd5b611b5284611aee565b9250611b6060208501611aee565b9150604084013590509250925092565b600060208284031215611b8257600080fd5b610a2682611aee565b600080600060608486031215611ba057600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611bcc57600080fd5b611bd584611aee565b9250611be360208501611aee565b9150611bf160408501611aee565b90509250925092565b60008060408385031215611c0d57600080fd5b611c1683611aee565b9150611c2460208401611aee565b90509250929050565b8015158114611c3b57600080fd5b50565b60008060408385031215611c5157600080fd5b8235611b2681611c2d565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611ccd578160001904821115611cb357611cb3611c7c565b80851615611cc057918102915b93841c9390800290611c97565b509250929050565b600082611ce4575060016108cf565b81611cf1575060006108cf565b8160018114611d075760028114611d1157611d2d565b60019150506108cf565b60ff841115611d2257611d22611c7c565b50506001821b6108cf565b5060208310610133831016604e8410600b8410161715611d50575081810a6108cf565b611d5a8383611c92565b8060001904821115611d6e57611d6e611c7c565b029392505050565b6000610a2660ff841683611cd5565b6000816000190483118215151615611d9f57611d9f611c7c565b500290565b600082611dc157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108cf576108cf611c7c565b600060208284031215611deb57600080fd5b5051919050565b600060208284031215611e0457600080fd5b8151610a2681611c2d565b808201808211156108cf576108cf611c7c565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e885784516001600160a01b031683529383019391830191600101611e63565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220555a677915a31c2ed7a4aca71558c048f47322ca8a478a6646b43106b1c050da64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80637d1db4a511610123578063bd9ab537116100ab578063df20fd491161006f578063df20fd49146106f1578063ecfca89914610711578063f0b37c0414610727578063f887ea4014610747578063fe9fbb801461076757600080fd5b8063bd9ab53714610625578063c867d60b14610645578063cc32d17614610675578063d7c010321461068b578063dd62ed3e146106ab57600080fd5b8063963c44bf116100f2578063963c44bf1461057c578063a503160b14610591578063a8aa1b31146105b1578063a9059cbb146105e5578063b6a5d7de1461060557600080fd5b80637d1db4a5146104d5578063893d20e8146104eb5780638b42507f1461051d57806395d89b411461054d57600080fd5b80632b112e49116101b15780636ce46bc3116101755780636ce46bc31461043d57806370a082311461045d578063715018a61461048a57806377b54bad1461049f57806378109e54146104bf57600080fd5b80632b112e49146103825780632f54bf6e14610397578063313ce567146103c65780633f4218e0146103ed578063571ac8b01461041d57600080fd5b8063180b0d7e116101f8578063180b0d7e1461030257806318160ddd146103175780631da1db5e1461032c5780631df4ccfc1461034c57806323b872dd1461036257600080fd5b806306fdde0314610235578063090896be1461028c57806309302dc6146102b0578063095ea7b3146102d257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061027660405180604001604052806015815260200174233637b5b49027b934b3b4b730b6102b34b9b4b7b760591b81525081565b6040516102839190611a87565b60405180910390f35b34801561029857600080fd5b506102a2600a5481565b604051908152602001610283565b3480156102bc57600080fd5b506102d06102cb366004611ad5565b6107a0565b005b3480156102de57600080fd5b506102f26102ed366004611b0a565b610868565b6040519015158152602001610283565b34801561030e57600080fd5b506102a2606481565b34801561032357600080fd5b506102a26108d5565b34801561033857600080fd5b506102d0610347366004611ad5565b6108f2565b34801561035857600080fd5b506102a2600c5481565b34801561036e57600080fd5b506102f261037d366004611b34565b61096b565b34801561038e57600080fd5b506102a2610a2d565b3480156103a357600080fd5b506102f26103b2366004611b70565b6000546001600160a01b0391821691161490565b3480156103d257600080fd5b506103db600981565b60405160ff9091168152602001610283565b3480156103f957600080fd5b506102f2610408366004611b70565b60066020526000908152604090205460ff1681565b34801561042957600080fd5b506102f2610438366004611b70565b610ab4565b34801561044957600080fd5b506102d0610458366004611b8b565b610ac2565b34801561046957600080fd5b506102a2610478366004611b70565b60046020526000908152604090205481565b34801561049657600080fd5b506102d0610b20565b3480156104ab57600080fd5b506102f26104ba366004611b0a565b610b7a565b3480156104cb57600080fd5b506102a260035481565b3480156104e157600080fd5b506102a260025481565b3480156104f757600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610283565b34801561052957600080fd5b506102f2610538366004611b70565b60076020526000908152604090205460ff1681565b34801561055957600080fd5b50610276604051806040016040528060038152602001622327ab60e91b81525081565b34801561058857600080fd5b506102d0610c89565b34801561059d57600080fd5b506102d06105ac366004611b8b565b610cca565b3480156105bd57600080fd5b506105057f0000000000000000000000006cb23aab02d47d7a403f2c165a974d9b56409c2381565b3480156105f157600080fd5b506102f2610600366004611b0a565b610d20565b34801561061157600080fd5b506102d0610620366004611b70565b610d2d565b34801561063157600080fd5b506102d0610640366004611ad5565b610d7e565b34801561065157600080fd5b506102f2610660366004611b70565b60086020526000908152604090205460ff1681565b34801561068157600080fd5b506102a260095481565b34801561069757600080fd5b506102d06106a6366004611bb7565b610e43565b3480156106b757600080fd5b506102a26106c6366004611bfa565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106fd57600080fd5b506102d061070c366004611c3e565b610eac565b34801561071d57600080fd5b506102a2600b5481565b34801561073357600080fd5b506102d0610742366004611b70565b610f19565b34801561075357600080fd5b50601354610505906001600160a01b031681565b34801561077357600080fd5b506102f2610782366004611b70565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b031633146107d35760405162461bcd60e51b81526004016107ca90611c5c565b60405180910390fd5b60058110156108305760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b60648201526084016107ca565b6103e8816108406009600a611d76565b61084e90633b9aca00611d85565b6108589190611d85565b6108629190611da4565b60035550565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108c39086815260200190565b60405180910390a35060015b92915050565b6108e16009600a611d76565b6108ef90633b9aca00611d85565b81565b6000546001600160a01b0316331461091c5760405162461bcd60e51b81526004016107ca90611c5c565b476000606461092b8484611d85565b6109359190611da4565b604051909150339082156108fc029083906000818181858888f19350505050158015610965573d6000803e3d6000fd5b50505050565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610a18576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526005825283812033825290915291909120546109f3918490610fc2565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610a23848484610ffc565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54909190610a8d6009600a611d76565b610a9b90633b9aca00611d85565b610aa59190611dc6565b610aaf9190611dc6565b905090565b60006108cf82600019610868565b3360009081526001602052604090205460ff16610b0f5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016107ca565b600e91909155600d91909155600f55565b6000546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016107ca90611c5c565b600080546001600160a01b03168152600160205260408120805460ff1916905580546001600160a01b0319169055565b600080546001600160a01b03163314610ba55760405162461bcd60e51b81526004016107ca90611c5c565b81600003610c18576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c159190611dd9565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a269190611df2565b6000546001600160a01b03163314610cb35760405162461bcd60e51b81526004016107ca90611c5c565b6013805461ffff60a01b191661010160a01b179055565b6000546001600160a01b03163314610cf45760405162461bcd60e51b81526004016107ca90611c5c565b6009839055600a829055600b81905580610d0e8385611e0f565b610d189190611e0f565b600c55505050565b6000610a26338484610ffc565b6000546001600160a01b03163314610d575760405162461bcd60e51b81526004016107ca90611c5c565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314610da85760405162461bcd60e51b81526004016107ca90611c5c565b6005811015610e0b5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b60648201526084016107ca565b6103e881610e1b6009600a611d76565b610e2990633b9aca00611d85565b610e339190611d85565b610e3d9190611da4565b60025550565b6000546001600160a01b03163314610e6d5760405162461bcd60e51b81526004016107ca90611c5c565b601080546001600160a01b039485166001600160a01b031991821617909155601280549385169382169390931790925560118054919093169116179055565b6000546001600160a01b03163314610ed65760405162461bcd60e51b81526004016107ca90611c5c565b6013805460ff60a81b1916600160a81b8415150217905580610efa6009600a611d76565b610f0890633b9aca00611d85565b610f129190611da4565b6014555050565b6000546001600160a01b03163314610f435760405162461bcd60e51b81526004016107ca90611c5c565b6000546001600160a01b0390811690821603610fa15760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a656400000000000060448201526064016107ca565b6001600160a01b03166000908152600160205260409020805460ff19169055565b60008184841115610fe65760405162461bcd60e51b81526004016107ca9190611a87565b506000610ff38486611dc6565b95945050505050565b60155460009060ff161561101c576110158484846113b9565b9050610a26565b6001600160a01b03841660009081526001602052604090205460ff1615801561105e57506001600160a01b03831660009081526001602052604090205460ff16155b156110b357601354600160a01b900460ff166110b35760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107ca565b6001600160a01b03841660009081526001602052604090205460ff161580156110f557506001600160a01b03841660009081526008602052604090205460ff16155b801561111a57506001600160a01b03831660009081526008602052604090205460ff16155b801561115857507f0000000000000000000000006cb23aab02d47d7a403f2c165a974d9b56409c236001600160a01b0316836001600160a01b031614155b156111d2576003546001600160a01b038416600090815260046020526040902054611184908490611e0f565b11156111d25760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016107ca565b600254821115806111fb57506001600160a01b03841660009081526007602052604090205460ff165b8061121e57506001600160a01b03831660009081526007602052604090205460ff165b6112625760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b60448201526064016107ca565b61126a61149f565b1561127757611277611512565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600490915291909120546112c9918490610fc2565b6001600160a01b038516600090815260046020908152604080832093909355600690529081205460ff168061131657506001600160a01b03841660009081526006602052604090205460ff165b61132a57611325858486611797565b61132c565b825b6001600160a01b03851660009081526004602052604090205490915061135290826118f4565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113a69085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260049091529182205461140a918490610fc2565b6001600160a01b03808616600090815260046020526040808220939093559085168152205461143990836118f4565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061148d9086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f0000000000000000000000006cb23aab02d47d7a403f2c165a974d9b56409c2316148015906114dd575060155460ff16155b80156114f25750601354600160a81b900460ff165b8015610aaf57505060145430600090815260046020526040902054101590565b6015805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061155457611554611e22565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106115a8576115a8611e22565b6001600160a01b03928316602091820292909201015260135460145460405163791ac94760e01b8152919092169163791ac947916115f29190600090869030904290600401611e38565b600060405180830381600087803b15801561160c57600080fd5b505af1158015611620573d6000803e3d6000fd5b5050600c54600954479350600092506116399084611d85565b6116439190611da4565b90506000600c54600a54846116589190611d85565b6116629190611da4565b90506000600c54600b54856116779190611d85565b6116819190611da4565b6010546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146116d3576040519150601f19603f3d011682016040523d82523d6000602084013e6116d8565b606091505b50506011546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611728576040519150601f19603f3d011682016040523d82523d6000602084013e61172d565b606091505b50506012546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461177d576040519150601f19603f3d011682016040523d82523d6000602084013e611782565b606091505b50506015805460ff1916905550505050505050565b60008215806117a65750600c54155b156117b2575081610a26565b600f546001600160a01b037f0000000000000000000000006cb23aab02d47d7a403f2c165a974d9b56409c238116908416036117f15750600e5461182f565b7f0000000000000000000000006cb23aab02d47d7a403f2c165a974d9b56409c236001600160a01b0316856001600160a01b03160361182f5750600d545b600061186461183f606480611d85565b61185e84611858600c548a61195390919063ffffffff16565b90611953565b906119d5565b905080156118e0573060009081526004602052604090205461188690826118f4565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118d79085815260200190565b60405180910390a35b6118ea8582611a17565b9695505050505050565b6000806119018385611e0f565b905083811015610a265760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107ca565b600082600003611965575060006108cf565b60006119718385611d85565b90508261197e8583611da4565b14610a265760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107ca565b6000610a2683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a59565b6000610a2683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fc2565b60008183611a7a5760405162461bcd60e51b81526004016107ca9190611a87565b506000610ff38486611da4565b600060208083528351808285015260005b81811015611ab457858101830151858201604001528201611a98565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611ae757600080fd5b5035919050565b80356001600160a01b0381168114611b0557600080fd5b919050565b60008060408385031215611b1d57600080fd5b611b2683611aee565b946020939093013593505050565b600080600060608486031215611b4957600080fd5b611b5284611aee565b9250611b6060208501611aee565b9150604084013590509250925092565b600060208284031215611b8257600080fd5b610a2682611aee565b600080600060608486031215611ba057600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611bcc57600080fd5b611bd584611aee565b9250611be360208501611aee565b9150611bf160408501611aee565b90509250925092565b60008060408385031215611c0d57600080fd5b611c1683611aee565b9150611c2460208401611aee565b90509250929050565b8015158114611c3b57600080fd5b50565b60008060408385031215611c5157600080fd5b8235611b2681611c2d565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611ccd578160001904821115611cb357611cb3611c7c565b80851615611cc057918102915b93841c9390800290611c97565b509250929050565b600082611ce4575060016108cf565b81611cf1575060006108cf565b8160018114611d075760028114611d1157611d2d565b60019150506108cf565b60ff841115611d2257611d22611c7c565b50506001821b6108cf565b5060208310610133831016604e8410600b8410161715611d50575081810a6108cf565b611d5a8383611c92565b8060001904821115611d6e57611d6e611c7c565b029392505050565b6000610a2660ff841683611cd5565b6000816000190483118215151615611d9f57611d9f611c7c565b500290565b600082611dc157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108cf576108cf611c7c565b600060208284031215611deb57600080fd5b5051919050565b600060208284031215611e0457600080fd5b8151610a2681611c2d565b808201808211156108cf576108cf611c7c565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e885784516001600160a01b031683529383019391830191600101611e63565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220555a677915a31c2ed7a4aca71558c048f47322ca8a478a6646b43106b1c050da64736f6c63430008100033

Deployed Bytecode Sourcemap

3405:9419:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3668:53;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3668:53:0;;;;;;;;;;;;:::i;:::-;;;;;;;;4324:32;;;;;;;;;;;;;;;;;;;713:25:1;;;701:2;686:18;4324:32:0;567:177:1;7128:261:0;;;;;;;;;;-1:-1:-1;7128:261:0;;;;;:::i;:::-;;:::i;:::-;;6232:216;;;;;;;;;;-1:-1:-1;6232:216:0;;;;;:::i;:::-;;:::i;:::-;;;1536:14:1;;1529:22;1511:41;;1499:2;1484:18;6232:216:0;1371:187:1;4472:44:0;;;;;;;;;;;;4513:3;4472:44;;3815:62;;;;;;;;;;;;;:::i;10068:259::-;;;;;;;;;;-1:-1:-1;10068:259:0;;;;;:::i;:::-;;:::i;4399:66::-;;;;;;;;;;;;;;;;6750:370;;;;;;;;;;-1:-1:-1;6750:370:0;;;;;:::i;:::-;;:::i;12684:137::-;;;;;;;;;;;;;:::i;2570:103::-;;;;;;;;;;-1:-1:-1;2570:103:0;;;;;:::i;:::-;2625:4;2660:5;-1:-1:-1;;;;;2649:16:0;;;2660:5;;2649:16;;2570:103;3772:34;;;;;;;;;;;;3805:1;3772:34;;;;;2259:4:1;2247:17;;;2229:36;;2217:2;2202:18;3772:34:0;2087:184:1;4120:44:0;;;;;;;;;;-1:-1:-1;4120:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6456:122;;;;;;;;;;-1:-1:-1;6456:122:0;;;;;:::i;:::-;;:::i;11674:199::-;;;;;;;;;;-1:-1:-1;11674:199:0;;;;;:::i;:::-;;:::i;3998:45::-;;;;;;;;;;-1:-1:-1;3998:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;2796:125;;;;;;;;;;;;;:::i;10335:286::-;;;;;;;;;;-1:-1:-1;10335:286:0;;;;;:::i;:::-;;:::i;3940:49::-;;;;;;;;;;;;;;;;3886:47;;;;;;;;;;;;;;;;6007:78;;;;;;;;;;-1:-1:-1;6059:7:0;6077:5;-1:-1:-1;;;;;6077:5:0;6007:78;;;-1:-1:-1;;;;;2761:32:1;;;2743:51;;2731:2;2716:18;6007:78:0;2597:203:1;4171:48:0;;;;;;;;;;-1:-1:-1;4171:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3728:37;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3728:37:0;;;;;10629:107;;;;;;;;;;;;;:::i;11881:294::-;;;;;;;;;;-1:-1:-1;11881:294:0;;;;;:::i;:::-;;:::i;4778:29::-;;;;;;;;;;;;;;;6586:156;;;;;;;;;;-1:-1:-1;6586:156:0;;;;;:::i;:::-;;:::i;2299:94::-;;;;;;;;;;-1:-1:-1;2299:94:0;;;;;:::i;:::-;;:::i;7397:262::-;;;;;;;;;;-1:-1:-1;7397:262:0;;;;;:::i;:::-;;:::i;4226:52::-;;;;;;;;;;-1:-1:-1;4226:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4287:30;;;;;;;;;;;;;;;;12183:304;;;;;;;;;;-1:-1:-1;12183:304:0;;;;;:::i;:::-;;:::i;6091:133::-;;;;;;;;;;-1:-1:-1;6091:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6193:19:0;;;6175:7;6193:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6091:133;12497:179;;;;;;;;;;-1:-1:-1;12497:179:0;;;;;:::i;:::-;;:::i;4363:29::-;;;;;;;;;;;;;;;;2401:161;;;;;;;;;;-1:-1:-1;2401:161:0;;;;;:::i;:::-;;:::i;4747:24::-;;;;;;;;;;-1:-1:-1;4747:24:0;;;;-1:-1:-1;;;;;4747:24:0;;;2681:107;;;;;;;;;;-1:-1:-1;2681:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;2761:19:0;2737:4;2761:19;;;:14;:19;;;;;;;;;2681:107;7128:261;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;;;;;;;;;7264:1:::1;7237:23;:28;;7229:76;;;::::0;-1:-1:-1;;;7229:76:0;;4608:2:1;7229:76:0::1;::::0;::::1;4590:21:1::0;4647:2;4627:18;;;4620:30;4686:34;4666:18;;;4659:62;-1:-1:-1;;;4737:18:1;;;4730:34;4781:19;;7229:76:0::1;4406:400:1::0;7229:76:0::1;7377:4;7349:23:::0;3865:12:::1;3805:1;3865:2;:12;:::i;:::-;3853:24;::::0;:9:::1;:24;:::i;:::-;7335:37;;;;:::i;:::-;7334:47;;;;:::i;:::-;7316:15;:65:::0;-1:-1:-1;7128:261:0:o;6232:216::-;6336:10;6307:4;6324:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6324:32:0;;;;;;;;;;:41;;;6381:37;6307:4;;6324:32;;6381:37;;;;6359:6;713:25:1;;701:2;686:18;;567:177;6381:37:0;;;;;;;;-1:-1:-1;6436:4:0;6232:216;;;;;:::o;3815:62::-;3865:12;3805:1;3865:2;:12;:::i;:::-;3853:24;;:9;:24;:::i;:::-;3815:62;:::o;10068:259::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;10171:21:::1;10151:17;10262:3;10229:28;10241:16:::0;10171:21;10229:28:::1;:::i;:::-;10227:38;;;;:::i;:::-;10276:43;::::0;10203:62;;-1:-1:-1;10284:10:0::1;::::0;10276:43;::::1;;;::::0;10203:62;;10276:43:::1;::::0;;;10203:62;10284:10;10276:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10140:187;;10068:259:::0;:::o;6750:370::-;-1:-1:-1;;;;;6870:19:0;;6850:4;6870:19;;;:11;:19;;;;;;;;6890:10;6870:31;;;;;;;;-1:-1:-1;;6870:52:0;6867:186;;6972:69;;;;;;;;;;;-1:-1:-1;;;6972:69:0;;;;;;;;-1:-1:-1;;;;;6972:19:0;;-1:-1:-1;6972:19:0;;;:11;:19;;;;;6992:10;6972:31;;;;;;;;;;:69;;7008:6;;6972:35;:69::i;:::-;-1:-1:-1;;;;;6938:19:0;;;;;;:11;:19;;;;;;;;6958:10;6938:31;;;;;;;:103;6867:186;7072:40;7086:6;7094:9;7105:6;7072:13;:40::i;:::-;7065:47;;6750:370;;;;;;:::o;12684:137::-;12797:9;:15;;;;3544:42;12737:7;12779:15;;;;;12737:7;;12797:15;3865:12;3805:1;3865:2;:12;:::i;:::-;3853:24;;:9;:24;:::i;:::-;12765:29;;;;:::i;:::-;:47;;;;:::i;:::-;12757:56;;12684:137;:::o;6456:122::-;6511:4;6535:35;6543:7;-1:-1:-1;;6535:7:0;:35::i;11674:199::-;2253:10;2737:4;2761:19;;;:14;:19;;;;;;;;2232:48;;;;-1:-1:-1;;;2232:48:0;;7056:2:1;2232:48:0;;;7038:21:1;7095:2;7075:18;;;7068:30;-1:-1:-1;;;7114:18:1;;;7107:41;7165:18;;2232:48:0;6854:335:1;2232:48:0;11774:14:::1;:22:::0;;;;11807:13:::1;:20:::0;;;;11838:18:::1;:27:::0;11674:199::o;2796:125::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;2879:5:::1;2870::::0;;-1:-1:-1;;;;;2870:5:0::1;2855:21:::0;;:14:::1;:21;::::0;;;;:29;;-1:-1:-1;;2855:29:0::1;::::0;;2895:18;;-1:-1:-1;;;;;;2895:18:0::1;::::0;;2796:125::o;10335:286::-;10426:12;2660:5;;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;10454:6:::1;10464:1;10454:11:::0;10451:95:::1;;10490:44;::::0;-1:-1:-1;;;10490:44:0;;10528:4:::1;10490:44;::::0;::::1;2743:51:1::0;-1:-1:-1;;;;;10490:29:0;::::1;::::0;::::1;::::0;2716:18:1;;10490:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10481:53;;10451:95;10565:48;::::0;-1:-1:-1;;;10565:48:0;;10594:10:::1;10565:48;::::0;::::1;7557:51:1::0;7624:18;;;7617:34;;;-1:-1:-1;;;;;10565:28:0;::::1;::::0;::::1;::::0;7530:18:1;;10565:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10629:107::-:0;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;10681:11:::1;:18:::0;;-1:-1:-1;;;;10710:18:0;-1:-1:-1;;;10710:18:0;;;10629:107::o;11881:294::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;12003:11:::1;:26:::0;;;12040:13:::1;:30:::0;;;12081:10:::1;:24:::0;;;12094:11;12127:27:::1;12056:14:::0;12017:12;12127:27:::1;:::i;:::-;:40;;;;:::i;:::-;12116:8;:51:::0;-1:-1:-1;;;11881:294:0:o;6586:156::-;6666:4;6690:44;6704:10;6716:9;6727:6;6690:13;:44::i;2299:94::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2359:19:0::1;;::::0;;;2381:4:::1;2359:19;::::0;;;;;;;:26;;-1:-1:-1;;2359:26:0::1;::::0;;::::1;::::0;;2299:94::o;7397:262::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;7531:1:::1;7503:24;:29;;7495:82;;;::::0;-1:-1:-1;;;7495:82:0;;8244:2:1;7495:82:0::1;::::0;::::1;8226:21:1::0;8283:2;8263:18;;;8256:30;8322:34;8302:18;;;8295:62;-1:-1:-1;;;8373:18:1;;;8366:39;8422:19;;7495:82:0::1;8042:405:1::0;7495:82:0::1;7647:4;7618:24:::0;3865:12:::1;3805:1;3865:2;:12;:::i;:::-;3853:24;::::0;:9:::1;:24;:::i;:::-;7604:38;;;;:::i;:::-;7603:48;;;;:::i;:::-;7588:12;:63:::0;-1:-1:-1;7397:262:0:o;12183:304::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;12329:19:::1;:42:::0;;-1:-1:-1;;;;;12329:42:0;;::::1;-1:-1:-1::0;;;;;;12329:42:0;;::::1;;::::0;;;12382:18:::1;:40:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;12433:21:::1;:46:::0;;;;;::::1;::::0;::::1;;::::0;;12183:304::o;12497:179::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;12593:11:::1;:22:::0;;-1:-1:-1;;;;12593:22:0::1;-1:-1:-1::0;;;12593:22:0;::::1;;;;::::0;;12656:12;3865::::1;3805:1;3865:2;:12;:::i;:::-;3853:24;::::0;:9:::1;:24;:::i;:::-;12642:26;;;;:::i;:::-;12626:13;:42:::0;-1:-1:-1;;12497:179:0:o;2401:161::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;2480:5:::1;::::0;-1:-1:-1;;;;;2480:5:0;;::::1;2473:12:::0;;::::1;::::0;2465:51:::1;;;::::0;-1:-1:-1;;;2465:51:0;;8654:2:1;2465:51:0::1;::::0;::::1;8636:21:1::0;8693:2;8673:18;;;8666:30;8732:28;8712:18;;;8705:56;8778:18;;2465:51:0::1;8452:350:1::0;2465:51:0::1;-1:-1:-1::0;;;;;2527:19:0::1;2549:5;2527:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2527:27:0::1;::::0;;2401:161::o;422:192::-;508:7;544:12;536:6;;;;528:29;;;;-1:-1:-1;;;528:29:0;;;;;;;;:::i;:::-;-1:-1:-1;568:9:0;580:5;584:1;580;:5;:::i;:::-;568:17;422:192;-1:-1:-1;;;;;422:192:0:o;7667:1115::-;7779:6;;7759:4;;7779:6;;7776:63;;;7795:41;7810:6;7818:9;7829:6;7795:14;:41::i;:::-;7788:48;;;;7776:63;-1:-1:-1;;;;;7855:22:0;;;;;;:14;:22;;;;;;;;7854:23;:53;;;;-1:-1:-1;;;;;;7882:25:0;;;;;;:14;:25;;;;;;;;7881:26;7854:53;7851:127;;;7931:11;;-1:-1:-1;;;7931:11:0;;;;7923:43;;;;-1:-1:-1;;;7923:43:0;;9009:2:1;7923:43:0;;;8991:21:1;9048:2;9028:18;;;9021:30;-1:-1:-1;;;9067:18:1;;;9060:50;9127:18;;7923:43:0;8807:344:1;7923:43:0;-1:-1:-1;;;;;7995:22:0;;;;;;:14;:22;;;;;;;;7994:23;:55;;;;-1:-1:-1;;;;;;8022:27:0;;;;;;:19;:27;;;;;;;;8021:28;7994:55;:90;;;;-1:-1:-1;;;;;;8054:30:0;;;;;;:19;:30;;;;;;;;8053:31;7994:90;:111;;;;;8101:4;-1:-1:-1;;;;;8088:17:0;:9;-1:-1:-1;;;;;8088:17:0;;;7994:111;7990:230;;;8165:15;;-1:-1:-1;;;;;8131:20:0;;;;;;:9;:20;;;;;;:29;;8154:6;;8131:29;:::i;:::-;8130:50;;8122:86;;;;-1:-1:-1;;;8122:86:0;;9358:2:1;8122:86:0;;;9340:21:1;9397:2;9377:18;;;9370:30;9436:26;9416:18;;;9409:54;9480:18;;8122:86:0;9156:348:1;8122:86:0;8255:12;;8245:6;:22;;8244:51;;;-1:-1:-1;;;;;;8272:23:0;;;;;;:15;:23;;;;;;;;8244:51;:81;;;-1:-1:-1;;;;;;8299:26:0;;;;;;:15;:26;;;;;;;;8244:81;8236:115;;;;-1:-1:-1;;;8236:115:0;;9711:2:1;8236:115:0;;;9693:21:1;9750:2;9730:18;;;9723:30;-1:-1:-1;;;9769:18:1;;;9762:51;9830:18;;8236:115:0;9509:345:1;8236:115:0;8367:16;:14;:16::i;:::-;8364:35;;;8386:10;:8;:10::i;:::-;8431:53;;;;;;;;;;;-1:-1:-1;;;8431:53:0;;;;;;;;-1:-1:-1;;;;;8431:17:0;;-1:-1:-1;8431:17:0;;;:9;:17;;;;;;;;:53;;8453:6;;8431:21;:53::i;:::-;-1:-1:-1;;;;;8411:17:0;;;;;;:9;:17;;;;;;;;:73;;;;8523:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;8546:22:0;;;;;;:11;:22;;;;;;;;8523:45;8522:93;;8581:34;8589:6;8597;8605:9;8581:7;:34::i;:::-;8522:93;;;8572:6;8522:93;-1:-1:-1;;;;;8651:20:0;;;;;;:9;:20;;;;;;8497:118;;-1:-1:-1;8651:40:0;;8497:118;8651:24;:40::i;:::-;-1:-1:-1;;;;;8628:20:0;;;;;;;:9;:20;;;;;;;:63;;;;8709:43;;;;;;;;;;8737:14;713:25:1;;701:2;686:18;;567:177;8709:43:0;;;;;;;;-1:-1:-1;8770:4:0;;7667:1115;-1:-1:-1;;;;7667:1115:0:o;8794:330::-;8924:53;;;;;;;;;;;-1:-1:-1;;;8924:53:0;;;;;;;;-1:-1:-1;;;;;8924:17:0;;8887:4;8924:17;;;:9;:17;;;;;;;:53;;8946:6;;8924:21;:53::i;:::-;-1:-1:-1;;;;;8904:17:0;;;;;;;:9;:17;;;;;;:73;;;;9011:20;;;;;;;:32;;9036:6;9011:24;:32::i;:::-;-1:-1:-1;;;;;8988:20:0;;;;;;;:9;:20;;;;;;;:55;;;;9059:35;;;;;;;;;;9087:6;713:25:1;;701:2;686:18;;567:177;9059:35:0;;;;;;;;-1:-1:-1;9112:4:0;8794:330;;;;;:::o;9863:197::-;9912:4;9936:10;-1:-1:-1;;;;;9950:4:0;9936:18;;;;;:38;;-1:-1:-1;9968:6:0;;;;9967:7;9936:38;:62;;;;-1:-1:-1;9987:11:0;;-1:-1:-1;;;9987:11:0;;;;9936:62;:116;;;;-1:-1:-1;;10039:13:0;;10029:4;10011:24;;;;:9;:24;;;;;;:41;;;9863:197::o;10744:922::-;4967:6;:13;;-1:-1:-1;;4967:13:0;4976:4;4967:13;;;10819:16:::1;::::0;;10833:1:::1;10819:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10819:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10819:16:0::1;10795:40;;10864:4;10846;10851:1;10846:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;10846:23:0::1;;;-1:-1:-1::0;;;;;10846:23:0::1;;;::::0;::::1;10890:4;10880;10885:1;10880:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10880:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;10907:6:::1;::::0;10979:13:::1;::::0;10907:189:::1;::::0;-1:-1:-1;;;10907:189:0;;:6;;;::::1;::::0;:57:::1;::::0;:189:::1;::::0;10979:13;10907:6:::1;::::0;11023:4;;11050::::1;::::0;11070:15:::1;::::0;10907:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11219:8:0::1;::::0;11204:11:::1;::::0;11129:21:::1;::::0;-1:-1:-1;11109:17:0::1;::::0;-1:-1:-1;11192:23:0::1;::::0;11129:21;11192:23:::1;:::i;:::-;11191:36;;;;:::i;:::-;11163:64;;11238:27;11298:8;;11281:13;;11269:9;:25;;;;:::i;:::-;11268:38;;;;:::i;:::-;11238:68;;11317:24;11371:8;;11357:10;;11345:9;:22;;;;:::i;:::-;11344:35;;;;:::i;:::-;11421:19;::::0;11413:63:::1;::::0;11317:62;;-1:-1:-1;11393:15:0::1;::::0;-1:-1:-1;;;;;11421:19:0;;::::1;::::0;11454:17;;11393:15;11413:63;11393:15;11413:63;11454:17;11421:19;11413:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;11511:21:0::1;::::0;11503:67:::1;::::0;11392:84;;-1:-1:-1;;;;;;11511:21:0::1;::::0;11546:19;;11503:67:::1;::::0;;;11546:19;11511:21;11503:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;11605:18:0::1;::::0;11597:61:::1;::::0;11487:83;;-1:-1:-1;;;;;;11605:18:0::1;::::0;11637:16;;11597:61:::1;::::0;;;11637:16;11605:18;11597:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;4985:6:0;:14;;-1:-1:-1;;4985:14:0;;;-1:-1:-1;;;;;;;10744:922:0:o;9132:723::-;9218:7;9241:11;;;:28;;-1:-1:-1;9256:8:0;;:13;9241:28;9238:72;;;-1:-1:-1;9292:6:0;9285:13;;9238:72;9343:18;;-1:-1:-1;;;;;9390:4:0;9377:17;;;;;;9374:154;;-1:-1:-1;9424:14:0;;9374:154;;;9469:4;-1:-1:-1;;;;;9459:14:0;:6;-1:-1:-1;;;;;9459:14:0;;9456:72;;-1:-1:-1;9503:13:0;;9456:72;9540:17;9560:62;9601:20;4513:3;;9601:20;:::i;:::-;9560:36;9585:10;9560:20;9571:8;;9560:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:::-;:40;;:62::i;:::-;9540:82;-1:-1:-1;9638:13:0;;9635:172;;9712:4;9694:24;;;;:9;:24;;;;;;:39;;9723:9;9694:28;:39::i;:::-;9685:4;9667:24;;;;:9;:24;;;;;;;:66;;;;9753:42;;-1:-1:-1;;;;;9753:42:0;;;;;;;9785:9;713:25:1;;701:2;686:18;;567:177;9753:42:0;;;;;;;;9635:172;9826:21;:6;9837:9;9826:10;:21::i;:::-;9819:28;9132:723;-1:-1:-1;;;;;;9132:723:0:o;93:181::-;151:7;;183:5;187:1;183;:5;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;-1:-1:-1;;;199:46:0;;11520:2:1;199:46:0;;;11502:21:1;11559:2;11539:18;;;11532:30;11598:29;11578:18;;;11571:57;11645:18;;199:46:0;11318:351:1;620:250:0;678:7;702:1;707;702:6;698:47;;-1:-1:-1;732:1:0;725:8;;698:47;757:9;769:5;773:1;769;:5;:::i;:::-;757:17;-1:-1:-1;802:1:0;793:5;797:1;757:17;793:5;:::i;:::-;:10;785:56;;;;-1:-1:-1;;;785:56:0;;11876:2:1;785:56:0;;;11858:21:1;11915:2;11895:18;;;11888:30;11954:34;11934:18;;;11927:62;-1:-1:-1;;;12005:18:1;;;11998:31;12046:19;;785:56:0;11674:397:1;876:132:0;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;1014:189::-;1100:7;1135:12;1128:5;1120:28;;;;-1:-1:-1;;;1120:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1159:9:0;1171:5;1175:1;1171;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:1;;749:180;-1:-1:-1;749:180:1:o;934:173::-;1002:20;;-1:-1:-1;;;;;1051:31:1;;1041:42;;1031:70;;1097:1;1094;1087:12;1031:70;934:173;;;:::o;1112:254::-;1180:6;1188;1241:2;1229:9;1220:7;1216:23;1212:32;1209:52;;;1257:1;1254;1247:12;1209:52;1280:29;1299:9;1280:29;:::i;:::-;1270:39;1356:2;1341:18;;;;1328:32;;-1:-1:-1;;;1112:254:1:o;1563:328::-;1640:6;1648;1656;1709:2;1697:9;1688:7;1684:23;1680:32;1677:52;;;1725:1;1722;1715:12;1677:52;1748:29;1767:9;1748:29;:::i;:::-;1738:39;;1796:38;1830:2;1819:9;1815:18;1796:38;:::i;:::-;1786:48;;1881:2;1870:9;1866:18;1853:32;1843:42;;1563:328;;;;;:::o;1896:186::-;1955:6;2008:2;1996:9;1987:7;1983:23;1979:32;1976:52;;;2024:1;2021;2014:12;1976:52;2047:29;2066:9;2047:29;:::i;2276:316::-;2353:6;2361;2369;2422:2;2410:9;2401:7;2397:23;2393:32;2390:52;;;2438:1;2435;2428:12;2390:52;-1:-1:-1;;2461:23:1;;;2531:2;2516:18;;2503:32;;-1:-1:-1;2582:2:1;2567:18;;;2554:32;;2276:316;-1:-1:-1;2276:316:1:o;2805:334::-;2882:6;2890;2898;2951:2;2939:9;2930:7;2926:23;2922:32;2919:52;;;2967:1;2964;2957:12;2919:52;2990:29;3009:9;2990:29;:::i;:::-;2980:39;;3038:38;3072:2;3061:9;3057:18;3038:38;:::i;:::-;3028:48;;3095:38;3129:2;3118:9;3114:18;3095:38;:::i;:::-;3085:48;;2805:334;;;;;:::o;3144:260::-;3212:6;3220;3273:2;3261:9;3252:7;3248:23;3244:32;3241:52;;;3289:1;3286;3279:12;3241:52;3312:29;3331:9;3312:29;:::i;:::-;3302:39;;3360:38;3394:2;3383:9;3379:18;3360:38;:::i;:::-;3350:48;;3144:260;;;;;:::o;3409:118::-;3495:5;3488:13;3481:21;3474:5;3471:32;3461:60;;3517:1;3514;3507:12;3461:60;3409:118;:::o;3532:309::-;3597:6;3605;3658:2;3646:9;3637:7;3633:23;3629:32;3626:52;;;3674:1;3671;3664:12;3626:52;3713:9;3700:23;3732:28;3754:5;3732:28;:::i;4072:329::-;4274:2;4256:21;;;4313:1;4293:18;;;4286:29;-1:-1:-1;;;4346:2:1;4331:18;;4324:36;4392:2;4377:18;;4072:329::o;4811:127::-;4872:10;4867:3;4863:20;4860:1;4853:31;4903:4;4900:1;4893:15;4927:4;4924:1;4917:15;4943:422;5032:1;5075:5;5032:1;5089:270;5110:7;5100:8;5097:21;5089:270;;;5169:4;5165:1;5161:6;5157:17;5151:4;5148:27;5145:53;;;5178:18;;:::i;:::-;5228:7;5218:8;5214:22;5211:55;;;5248:16;;;;5211:55;5327:22;;;;5287:15;;;;5089:270;;;5093:3;4943:422;;;;;:::o;5370:806::-;5419:5;5449:8;5439:80;;-1:-1:-1;5490:1:1;5504:5;;5439:80;5538:4;5528:76;;-1:-1:-1;5575:1:1;5589:5;;5528:76;5620:4;5638:1;5633:59;;;;5706:1;5701:130;;;;5613:218;;5633:59;5663:1;5654:10;;5677:5;;;5701:130;5738:3;5728:8;5725:17;5722:43;;;5745:18;;:::i;:::-;-1:-1:-1;;5801:1:1;5787:16;;5816:5;;5613:218;;5915:2;5905:8;5902:16;5896:3;5890:4;5887:13;5883:36;5877:2;5867:8;5864:16;5859:2;5853:4;5850:12;5846:35;5843:77;5840:159;;;-1:-1:-1;5952:19:1;;;5984:5;;5840:159;6031:34;6056:8;6050:4;6031:34;:::i;:::-;6101:6;6097:1;6093:6;6089:19;6080:7;6077:32;6074:58;;;6112:18;;:::i;:::-;6150:20;;5370:806;-1:-1:-1;;;5370:806:1:o;6181:140::-;6239:5;6268:47;6309:4;6299:8;6295:19;6289:4;6268:47;:::i;6326:168::-;6366:7;6432:1;6428;6424:6;6420:14;6417:1;6414:21;6409:1;6402:9;6395:17;6391:45;6388:71;;;6439:18;;:::i;:::-;-1:-1:-1;6479:9:1;;6326:168::o;6499:217::-;6539:1;6565;6555:132;;6609:10;6604:3;6600:20;6597:1;6590:31;6644:4;6641:1;6634:15;6672:4;6669:1;6662:15;6555:132;-1:-1:-1;6701:9:1;;6499:217::o;6721:128::-;6788:9;;;6809:11;;;6806:37;;;6823:18;;:::i;7194:184::-;7264:6;7317:2;7305:9;7296:7;7292:23;7288:32;7285:52;;;7333:1;7330;7323:12;7285:52;-1:-1:-1;7356:16:1;;7194:184;-1:-1:-1;7194:184:1:o;7662:245::-;7729:6;7782:2;7770:9;7761:7;7757:23;7753:32;7750:52;;;7798:1;7795;7788:12;7750:52;7830:9;7824:16;7849:28;7871:5;7849:28;:::i;7912:125::-;7977:9;;;7998:10;;;7995:36;;;8011:18;;:::i;9991:127::-;10052:10;10047:3;10043:20;10040:1;10033:31;10083:4;10080:1;10073:15;10107:4;10104:1;10097:15;10123:980;10385:4;10433:3;10422:9;10418:19;10464:6;10453:9;10446:25;10490:2;10528:6;10523:2;10512:9;10508:18;10501:34;10571:3;10566:2;10555:9;10551:18;10544:31;10595:6;10630;10624:13;10661:6;10653;10646:22;10699:3;10688:9;10684:19;10677:26;;10738:2;10730:6;10726:15;10712:29;;10759:1;10769:195;10783:6;10780:1;10777:13;10769:195;;;10848:13;;-1:-1:-1;;;;;10844:39:1;10832:52;;10939:15;;;;10904:12;;;;10880:1;10798:9;10769:195;;;-1:-1:-1;;;;;;;11020:32:1;;;;11015:2;11000:18;;10993:60;-1:-1:-1;;;11084:3:1;11069:19;11062:35;10981:3;10123:980;-1:-1:-1;;;10123:980:1:o

Swarm Source

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