ETH Price: $2,527.24 (-0.07%)
Gas: 0.69 Gwei

Token

Harbinger (CHAOS)
 

Overview

Max Total Supply

8 CHAOS

Holders

269

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Chaos

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// https://twitter.com/CHAOS_ERC

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

interface InterfaceLP {
    function sync() external;
    function mint(address to) external returns (uint liquidity);
}

abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(
        string memory _tokenName,
        string memory _tokenSymbol,
        uint8 _tokenDecimals
    ) {
        _name = _tokenName;
        _symbol = _tokenSymbol;
        _decimals = _tokenDecimals;
    }

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

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

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

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

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

contract Ownable {
    address private _owner;

    event OwnershipRenounced(address indexed previousOwner);

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

    constructor() {
        _owner = msg.sender;
    }

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

    modifier onlyOwner() {
        require(msg.sender == _owner, "Not owner");
        _;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IWETH {
    function deposit() external payable;
}

contract Chaos is ERC20Detailed, Ownable {

    uint256 public rateNumerator = 1914882956;
    uint256 public rateDenominator = 100000000000;

    uint256 public riftFrequency = 3 hours;
    uint256 public nextRift;
    bool public autoRift = true;

    uint256 public maxTxnAmount;
    uint256 public maxWallet;

    uint256 public percentForSingularity = 50;
    bool public singularityEnabled = true;
    uint256 public singularityFrequency = 3 hours;
    uint256 public nextSingularity;

    uint256 private constant DECIMALS = 18;
    uint256 private constant INITIAL_TOKENS_SUPPLY = 8_888_888 * 10**DECIMALS;
    uint256 private constant TOTAL_PARTS = type(uint256).max - (type(uint256).max % INITIAL_TOKENS_SUPPLY);
    uint256 private constant MIN_SUPPLY = 8 * 10**DECIMALS;

    event Rift(uint256 indexed time, uint256 totalSupply);
    event RemovedLimits();
    event Singularity(uint256 indexed amount);

    IWETH public immutable weth;

    IDEXRouter public immutable router;
    address public immutable pair;
    
    bool public limitsInEffect = true;
    bool public lpAdded = false;
    
    uint256 private _totalSupply;
    uint256 private _partsPerToken;

    mapping(address => uint256) private _partBalances;
    mapping(address => mapping(address => uint256)) private _allowedTokens;

    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }

    constructor() ERC20Detailed(block.chainid==1 ? "Harbinger" : "HTEST", block.chainid==1 ? "CHAOS" : "HTEST", 18) {
        address dexAddress;
        if(block.chainid == 1){
            dexAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else if(block.chainid == 5){
            dexAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else if (block.chainid == 97){
            dexAddress = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
        } else {
            revert("Chain not configured");
        }

        router = IDEXRouter(dexAddress);

        _totalSupply = INITIAL_TOKENS_SUPPLY;
        _partBalances[address(this)] = TOTAL_PARTS;
        _partsPerToken = TOTAL_PARTS/(_totalSupply);

        maxTxnAmount = _totalSupply * 1 / 100;
        maxWallet = _totalSupply * 1 / 100;

        weth = IWETH(router.WETH());
        pair = IDEXFactory(router.factory()).createPair(address(this), router.WETH());

        emit Transfer(address(0x0), address(this), balanceOf(address(this)));
    }

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

    function allowance(address owner_, address spender) external view override returns (uint256){
        return _allowedTokens[owner_][spender];
    }

    function balanceOf(address who) public view override returns (uint256) {
        return _partBalances[who]/(_partsPerToken);
    }

    function shouldRift() public view returns (bool) {
        return nextRift <= block.timestamp;
    }

    function shouldSingularity() public view returns (bool) {
        return nextSingularity <= block.timestamp;
    }

    function lpSync() internal {
        InterfaceLP _pair = InterfaceLP(pair);
        _pair.sync();
    }

    function transfer(address to, uint256 value) external override validRecipient(to) returns (bool){
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function removeLimits() external onlyOwner {
        require(limitsInEffect, "Limits already removed");
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(limitsInEffect){
            if (sender == pair || recipient == pair){
                require(amount <= maxTxnAmount, "Max Tx Exceeded");
            }
            if (recipient != pair){
                require(balanceOf(recipient) + amount <= maxWallet, "Max Wallet Exceeded");
            }
        }

        if(recipient == pair){
            if(autoRift && shouldRift()){
                rift();
            }
            if (shouldSingularity()) {
                autoSingularity();
            }
        }

        uint256 partAmount = amount*(_partsPerToken);

        _partBalances[sender] = _partBalances[sender]-(partAmount);
        _partBalances[recipient] = _partBalances[recipient]+(partAmount);

        emit Transfer(sender, recipient, partAmount/(_partsPerToken));

        return true;
    }

    function transferFrom(address from, address to,  uint256 value) external override validRecipient(to) returns (bool) {
        if (_allowedTokens[from][msg.sender] != type(uint256).max) {
            require(_allowedTokens[from][msg.sender] >= value,"Insufficient Allowance");
            _allowedTokens[from][msg.sender] = _allowedTokens[from][msg.sender]-(value);
        }
        _transferFrom(from, to, value);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool){
        uint256 oldValue = _allowedTokens[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedTokens[msg.sender][spender] = 0;
        } else {
            _allowedTokens[msg.sender][spender] = oldValue-(
                subtractedValue
            );
        }
        emit Approval(
            msg.sender,
            spender,
            _allowedTokens[msg.sender][spender]
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool){
        _allowedTokens[msg.sender][spender] = _allowedTokens[msg.sender][
        spender
        ]+(addedValue);
        emit Approval(
            msg.sender,
            spender,
            _allowedTokens[msg.sender][spender]
        );
        return true;
    }

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

    function getSupplyDeltaOnNextRift() external view returns (uint256){
        return (_totalSupply*rateNumerator)/rateDenominator;
    }

    function rift() private returns (uint256) {
        uint256 time = block.timestamp;

        uint256 supplyDelta = (_totalSupply*rateNumerator)/rateDenominator;
        
        nextRift += riftFrequency;

        if (supplyDelta == 0) {
            emit Rift(time, _totalSupply);
            return _totalSupply;
        }

        _totalSupply = _totalSupply-supplyDelta;

        if (_totalSupply < MIN_SUPPLY) {
            _totalSupply = MIN_SUPPLY;
            autoRift = false;
        }

        _partsPerToken = TOTAL_PARTS/(_totalSupply);

        lpSync();

        emit Rift(time, _totalSupply);
        return _totalSupply;
    }

    function manualRift() external {
        require(shouldRift(), "Not in time");
        rift();
    }

    function autoSingularity() internal {
        nextSingularity = block.timestamp + singularityFrequency;

        uint256 liquidityPairBalance = balanceOf(pair);

        uint256 amountToBurn = liquidityPairBalance * percentForSingularity / 10000;

        if (amountToBurn > 0) {
            uint256 partAmountToBurn = amountToBurn*(_partsPerToken);
            _partBalances[pair] -= partAmountToBurn;
            _partBalances[address(0xdead)] += partAmountToBurn;
            emit Transfer(pair, address(0xdead), amountToBurn);
        }

        InterfaceLP _pair = InterfaceLP(pair);
        _pair.sync();
        emit Singularity(amountToBurn);
    }

    function manualSingularity() external {
        require(shouldSingularity(), "Must wait for cooldown to finish");

        nextSingularity = block.timestamp + singularityFrequency;

        uint256 liquidityPairBalance = balanceOf(pair);

        uint256 amountToBurn = liquidityPairBalance * percentForSingularity / 10000;

        if (amountToBurn > 0) {
            uint256 partAmountToBurn = amountToBurn*(_partsPerToken);
            _partBalances[pair] -= partAmountToBurn;
            _partBalances[address(0xdead)] += partAmountToBurn;
            emit Transfer(pair, address(0xdead), amountToBurn);
        }

        InterfaceLP _pair = InterfaceLP(pair);
        _pair.sync();
        emit Singularity(amountToBurn);
    }

    function initiate(address _to) external payable {
        require(!lpAdded, "LP already added");
        
        require(address(this).balance > 0 && balanceOf(address(this)) > 0);

        weth.deposit{value: address(this).balance}();

        _partBalances[pair] += _partBalances[address(this)];
        _partBalances[address(this)] = 0;
        emit Transfer(address(this), pair, _partBalances[pair]/(_partsPerToken));

        IERC20(address(weth)).transfer(address(pair), IERC20(address(weth)).balanceOf(address(this)));
        
        InterfaceLP(pair).mint(_to);
        lpAdded = true;

        nextRift = block.timestamp + riftFrequency;
        nextSingularity = block.timestamp + singularityFrequency;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"Rift","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Singularity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoRift","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getSupplyDeltaOnNextRift","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"initiate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualRift","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSingularity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextRift","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextSingularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForSingularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"riftFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shouldRift","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shouldSingularity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"singularityEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"singularityFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60e0604052637222cb8c60035564174876e800600455612a30600581905560078054600160ff1991821681179092556032600a55600b805490911682179055600c91909155600e805461ffff191690911790553480156200005e575f80fd5b50466001146200008c576040518060400160405280600581526020016412151154d560da1b815250620000af565b604051806040016040528060098152602001682430b93134b733b2b960b91b8152505b46600114620000dc576040518060400160405280600581526020016412151154d560da1b815250620000fb565b604051806040016040528060058152602001644348414f5360d81b8152505b60125f6200010a8482620005e6565b506001620001198382620005e6565b506002805460ff929092166001600160a81b0319909216919091176101003302179055505f905046600103620001655750737a250d5630b4cf539739df2c5dacb4c659f2488d620001fb565b466005036200018a5750737a250d5630b4cf539739df2c5dacb4c659f2488d620001fb565b46606103620001af575073d99d1c33f9fc3444f8101754abc46c52416550d1620001fb565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e66696775726564000000000000000000000000604482015260640160405180910390fd5b6001600160a01b03811660a052620002166012600a620007bb565b62000225906287a238620007cf565b600f55620002366012600a620007bb565b62000245906287a238620007cf565b62000252905f19620007fd565b6200025f905f1962000813565b305f90815260116020526040902055600f546200027f6012600a620007bb565b6200028e906287a238620007cf565b6200029b905f19620007fd565b620002a8905f1962000813565b620002b4919062000829565b601055600f54606490620002ca906001620007cf565b620002d6919062000829565b600855600f54606490620002ec906001620007cf565b620002f8919062000829565b60098190555060a0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200036391906200083f565b6001600160a01b03166080816001600160a01b03168152505060a0516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003e191906200083f565b6001600160a01b031663c9c653963060a0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200042f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200045591906200083f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620004a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004c691906200083f565b6001600160a01b031660c052305f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005008362000518565b60405190815260200160405180910390a35062000867565b6010546001600160a01b0382165f908152601160205260408120549091620005409162000829565b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200056f57607f821691505b6020821081036200058e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005e1575f81815260208120601f850160051c81016020861015620005bc5750805b601f850160051c820191505b81811015620005dd57828155600101620005c8565b5050505b505050565b81516001600160401b0381111562000602576200060262000546565b6200061a816200061384546200055a565b8462000594565b602080601f83116001811462000650575f8415620006385750858301515b5f19600386901b1c1916600185901b178555620005dd565b5f85815260208120601f198616915b8281101562000680578886015182559484019460019091019084016200065f565b50858210156200069e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200070257815f1904821115620006e657620006e6620006ae565b80851615620006f457918102915b93841c9390800290620006c7565b509250929050565b5f826200071a5750600162000540565b816200072857505f62000540565b81600181146200074157600281146200074c576200076c565b600191505062000540565b60ff841115620007605762000760620006ae565b50506001821b62000540565b5060208310610133831016604e8410600b841016171562000791575081810a62000540565b6200079d8383620006c2565b805f1904821115620007b357620007b3620006ae565b029392505050565b5f620007c883836200070a565b9392505050565b8082028115828204841417620005405762000540620006ae565b634e487b7160e01b5f52601260045260245ffd5b5f826200080e576200080e620007e9565b500690565b81810381811115620005405762000540620006ae565b5f826200083a576200083a620007e9565b500490565b5f6020828403121562000850575f80fd5b81516001600160a01b0381168114620007c8575f80fd5b60805160a05160c051611a2a620008fb5f395f8181610484015281816107cc0152818161082f015281816108cc0152818161091f01528181610ecb01528181610f2901528181610fdf015281816110d5015281816112040152818161123f015281816112be01528181611352015261166301525f61061801525f818161034101528181610e4e0152610fae0152611a2a5ff3fe608060405260043610610212575f3560e01c8063a457c2d71161011e578063d5cb5021116100a8578063f2fde38b1161006d578063f2fde38b146105d4578063f695587f146105f3578063f887ea4014610607578063f8b45b051461063a578063fa02c2841461064f575f80fd5b8063d5cb502114610534578063dd62ed3e1461054b578063e2e5d3001461058f578063e40650dd146105a4578063e62c1283146105bb575f80fd5b8063af8deddb116100ee578063af8deddb146104c5578063be2840a7146104e3578063be697dcf146104f7578063ca3d15981461050c578063cf46f24c1461051f575f80fd5b8063a457c2d71461043f578063a893a5741461045e578063a8aa1b3114610473578063a9059cbb146104a6575f80fd5b80633fc8cef31161019f578063751039fc1161016f578063751039fc146103c7578063865192f7146103db5780638da5cb5b146103f057806395d89b41146104125780639b5ceb6d14610426575f80fd5b80633fc8cef3146103305780634a62bb651461037b57806370a0823114610394578063715018a6146103b3575f80fd5b806318160ddd116101e557806318160ddd146102a857806323b872dd146102bc5780632da9e270146102db578063313ce567146102f05780633950935114610311575f80fd5b806306fdde0314610216578063095ea7b3146102405780630b36b8db1461026f578063116a1cce14610292575b5f80fd5b348015610221575f80fd5b5061022a610664565b60405161023791906116d5565b60405180910390f35b34801561024b575f80fd5b5061025f61025a36600461173b565b6106f3565b6040519015158152602001610237565b34801561027a575f80fd5b5061028460035481565b604051908152602001610237565b34801561029d575f80fd5b506102a661075f565b005b3480156102b3575f80fd5b50600f54610284565b3480156102c7575f80fd5b5061025f6102d6366004611763565b6109bd565b3480156102e6575f80fd5b5061028460055481565b3480156102fb575f80fd5b5060025460405160ff9091168152602001610237565b34801561031c575f80fd5b5061025f61032b36600461173b565b610acf565b34801561033b575f80fd5b506103637f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610237565b348015610386575f80fd5b50600e5461025f9060ff1681565b34801561039f575f80fd5b506102846103ae36600461179c565b610b53565b3480156103be575f80fd5b506102a6610b79565b3480156103d2575f80fd5b506102a6610bf6565b3480156103e6575f80fd5b5061028460045481565b3480156103fb575f80fd5b5060025461010090046001600160a01b0316610363565b34801561041d575f80fd5b5061022a610ca4565b348015610431575f80fd5b5060075461025f9060ff1681565b34801561044a575f80fd5b5061025f61045936600461173b565b610cb3565b348015610469575f80fd5b50610284600a5481565b34801561047e575f80fd5b506103637f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b1575f80fd5b5061025f6104c036600461173b565b610d96565b3480156104d0575f80fd5b50600e5461025f90610100900460ff1681565b3480156104ee575f80fd5b50610284610dc0565b348015610502575f80fd5b50610284600d5481565b6102a661051a36600461179c565b610de3565b34801561052a575f80fd5b5061028460085481565b34801561053f575f80fd5b5060065442101561025f565b348015610556575f80fd5b506102846105653660046117bc565b6001600160a01b039182165f90815260126020908152604080832093909416825291909152205490565b34801561059a575f80fd5b5061028460065481565b3480156105af575f80fd5b50600d5442101561025f565b3480156105c6575f80fd5b50600b5461025f9060ff1681565b3480156105df575f80fd5b506102a66105ee36600461179c565b611172565b3480156105fe575f80fd5b506102a66111ad565b348015610612575f80fd5b506103637f000000000000000000000000000000000000000000000000000000000000000081565b348015610645575f80fd5b5061028460095481565b34801561065a575f80fd5b50610284600c5481565b60605f8054610672906117ed565b80601f016020809104026020016040519081016040528092919081815260200182805461069e906117ed565b80156106e95780601f106106c0576101008083540402835291602001916106e9565b820191905f5260205f20905b8154815290600101906020018083116106cc57829003601f168201915b5050505050905090565b335f8181526012602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061074d9086815260200190565b60405180910390a35060015b92915050565b600d544210156107b65760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e69736860448201526064015b60405180910390fd5b600c546107c39042611839565b600d555f6107f07f0000000000000000000000000000000000000000000000000000000000000000610b53565b90505f612710600a5483610804919061184c565b61080e9190611877565b9050801561091c575f60105482610825919061184c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165f9081526011602052604081208054929350839290919061087190849061188a565b909155505061dead5f90815260116020527f97847ee99463795296047093514439c3127772df3715e628aa85601cf854171680548392906108b3908490611839565b909155505060405182815261dead906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b5f7f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610978575f80fd5b505af115801561098a573d5f803e3d5ffd5b50506040518492507f27d470324b65c06eaf506ba38b3306343db45b2b10bd97713555850da7915b7f91505f90a2505050565b5f826001600160a01b0381166109d1575f80fd5b6001600160a01b0385165f9081526012602090815260408083203384529091529020545f1914610ab8576001600160a01b0385165f908152601260209081526040808320338452909152902054831115610a665760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064016107ad565b6001600160a01b0385165f908152601260209081526040808320338452909152902054610a9490849061188a565b6001600160a01b0386165f9081526012602090815260408083203384529091529020555b610ac38585856111f5565b50600195945050505050565b335f9081526012602090815260408083206001600160a01b0386168452909152812054610afd908390611839565b335f8181526012602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161074d565b6010546001600160a01b0382165f90815260116020526040812054909161075991611877565b60025461010090046001600160a01b03163314610ba85760405162461bcd60e51b81526004016107ad9061189d565b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820905f90a260028054610100600160a81b0319169055565b60025461010090046001600160a01b03163314610c255760405162461bcd60e51b81526004016107ad9061189d565b600e5460ff16610c705760405162461bcd60e51b8152602060048201526016602482015275131a5b5a5d1cc8185b1c9958591e481c995b5bdd995960521b60448201526064016107ad565b600e805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b606060018054610672906117ed565b335f9081526012602090815260408083206001600160a01b0386168452909152812054808310610d0557335f9081526012602090815260408083206001600160a01b0388168452909152812055610d33565b610d0f838261188a565b335f9081526012602090815260408083206001600160a01b03891684529091529020555b335f8181526012602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b5f826001600160a01b038116610daa575f80fd5b610db53385856111f5565b506001949350505050565b5f600454600354600f54610dd4919061184c565b610dde9190611877565b905090565b600e54610100900460ff1615610e2e5760405162461bcd60e51b815260206004820152601060248201526f131408185b1c9958591e48185919195960821b60448201526064016107ad565b5f47118015610e4457505f610e4230610b53565b115b610e4c575f80fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b158015610ea5575f80fd5b505af1158015610eb7573d5f803e3d5ffd5b5050305f90815260116020526040808220547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316835290822080549195509350909150610f0d908490611839565b9091555050305f818152601160205260408082208290556010547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031680845291909220549092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91610f889190611877565b60405190815260200160405180910390a36040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb907f00000000000000000000000000000000000000000000000000000000000000009083906370a0823190602401602060405180830381865afa158015611025573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104991906118c0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611091573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b591906118d7565b506040516335313c2160e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636a627842906024016020604051808303815f875af115801561111b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113f91906118c0565b50600e805461ff00191661010017905560055461115c9042611839565b600655600c5461116c9042611839565b600d5550565b60025461010090046001600160a01b031633146111a15760405162461bcd60e51b81526004016107ad9061189d565b6111aa8161148c565b50565b6006544210156111ed5760405162461bcd60e51b815260206004820152600b60248201526a4e6f7420696e2074696d6560a81b60448201526064016107ad565b6111aa611504565b600e545f9060ff1615611350577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148061127357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b156112bc576008548211156112bc5760405162461bcd60e51b815260206004820152600f60248201526e13585e08151e08115e18d959591959608a1b60448201526064016107ad565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611350576009548261130285610b53565b61130c9190611839565b11156113505760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b60448201526064016107ad565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036113bd5760075460ff16801561139d57506006544210155b156113ac576113aa611504565b505b600d5442106113bd576113bd6107b6565b5f601054836113cc919061184c565b6001600160a01b0386165f908152601160205260409020549091506113f290829061188a565b6001600160a01b038087165f908152601160205260408082209390935590861681522054611421908290611839565b6001600160a01b038086165f81815260116020526040902092909255601054908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114709085611877565b60405190815260200160405180910390a3506001949350505050565b6001600160a01b03811661149e575f80fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f804290505f600454600354600f5461151d919061184c565b6115279190611877565b905060055460065f82825461153c9190611839565b90915550505f81900361158f57817fa7cc87185b5b9d879e171a77928ac608030ae3cac66d04c3b5658589ccf686c6600f5460405161157d91815260200190565b60405180910390a2600f549250505090565b80600f5461159d919061188a565b600f556115ac6012600a6119d6565b6115b790600861184c565b600f5410156115e5576115cc6012600a6119d6565b6115d790600861184c565b600f556007805460ff191690555b600f546115f46012600a6119d6565b611601906287a23861184c565b61160c905f196119e1565b611617905f1961188a565b6116219190611877565b60105561162c611660565b817fa7cc87185b5b9d879e171a77928ac608030ae3cac66d04c3b5658589ccf686c6600f5460405161157d91815260200190565b5f7f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156116bc575f80fd5b505af11580156116ce573d5f803e3d5ffd5b5050505050565b5f6020808352835180828501525f5b81811015611700578581018301518582016040015282016116e4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611736575f80fd5b919050565b5f806040838503121561174c575f80fd5b61175583611720565b946020939093013593505050565b5f805f60608486031215611775575f80fd5b61177e84611720565b925061178c60208501611720565b9150604084013590509250925092565b5f602082840312156117ac575f80fd5b6117b582611720565b9392505050565b5f80604083850312156117cd575f80fd5b6117d683611720565b91506117e460208401611720565b90509250929050565b600181811c9082168061180157607f821691505b60208210810361181f57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561075957610759611825565b808202811582820484141761075957610759611825565b634e487b7160e01b5f52601260045260245ffd5b5f8261188557611885611863565b500490565b8181038181111561075957610759611825565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b5f602082840312156118d0575f80fd5b5051919050565b5f602082840312156118e7575f80fd5b815180151581146117b5575f80fd5b600181815b8085111561193057815f190482111561191657611916611825565b8085161561192357918102915b93841c93908002906118fb565b509250929050565b5f8261194657506001610759565b8161195257505f610759565b816001811461196857600281146119725761198e565b6001915050610759565b60ff84111561198357611983611825565b50506001821b610759565b5060208310610133831016604e8410600b84101617156119b1575081810a610759565b6119bb83836118f6565b805f19048211156119ce576119ce611825565b029392505050565b5f6117b58383611938565b5f826119ef576119ef611863565b50069056fea26469706673582212202bf7e50400930d11ea7f868c170825fc553a5004258eb9e7870b6deee2b6ef4b64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610212575f3560e01c8063a457c2d71161011e578063d5cb5021116100a8578063f2fde38b1161006d578063f2fde38b146105d4578063f695587f146105f3578063f887ea4014610607578063f8b45b051461063a578063fa02c2841461064f575f80fd5b8063d5cb502114610534578063dd62ed3e1461054b578063e2e5d3001461058f578063e40650dd146105a4578063e62c1283146105bb575f80fd5b8063af8deddb116100ee578063af8deddb146104c5578063be2840a7146104e3578063be697dcf146104f7578063ca3d15981461050c578063cf46f24c1461051f575f80fd5b8063a457c2d71461043f578063a893a5741461045e578063a8aa1b3114610473578063a9059cbb146104a6575f80fd5b80633fc8cef31161019f578063751039fc1161016f578063751039fc146103c7578063865192f7146103db5780638da5cb5b146103f057806395d89b41146104125780639b5ceb6d14610426575f80fd5b80633fc8cef3146103305780634a62bb651461037b57806370a0823114610394578063715018a6146103b3575f80fd5b806318160ddd116101e557806318160ddd146102a857806323b872dd146102bc5780632da9e270146102db578063313ce567146102f05780633950935114610311575f80fd5b806306fdde0314610216578063095ea7b3146102405780630b36b8db1461026f578063116a1cce14610292575b5f80fd5b348015610221575f80fd5b5061022a610664565b60405161023791906116d5565b60405180910390f35b34801561024b575f80fd5b5061025f61025a36600461173b565b6106f3565b6040519015158152602001610237565b34801561027a575f80fd5b5061028460035481565b604051908152602001610237565b34801561029d575f80fd5b506102a661075f565b005b3480156102b3575f80fd5b50600f54610284565b3480156102c7575f80fd5b5061025f6102d6366004611763565b6109bd565b3480156102e6575f80fd5b5061028460055481565b3480156102fb575f80fd5b5060025460405160ff9091168152602001610237565b34801561031c575f80fd5b5061025f61032b36600461173b565b610acf565b34801561033b575f80fd5b506103637f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6040516001600160a01b039091168152602001610237565b348015610386575f80fd5b50600e5461025f9060ff1681565b34801561039f575f80fd5b506102846103ae36600461179c565b610b53565b3480156103be575f80fd5b506102a6610b79565b3480156103d2575f80fd5b506102a6610bf6565b3480156103e6575f80fd5b5061028460045481565b3480156103fb575f80fd5b5060025461010090046001600160a01b0316610363565b34801561041d575f80fd5b5061022a610ca4565b348015610431575f80fd5b5060075461025f9060ff1681565b34801561044a575f80fd5b5061025f61045936600461173b565b610cb3565b348015610469575f80fd5b50610284600a5481565b34801561047e575f80fd5b506103637f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c81565b3480156104b1575f80fd5b5061025f6104c036600461173b565b610d96565b3480156104d0575f80fd5b50600e5461025f90610100900460ff1681565b3480156104ee575f80fd5b50610284610dc0565b348015610502575f80fd5b50610284600d5481565b6102a661051a36600461179c565b610de3565b34801561052a575f80fd5b5061028460085481565b34801561053f575f80fd5b5060065442101561025f565b348015610556575f80fd5b506102846105653660046117bc565b6001600160a01b039182165f90815260126020908152604080832093909416825291909152205490565b34801561059a575f80fd5b5061028460065481565b3480156105af575f80fd5b50600d5442101561025f565b3480156105c6575f80fd5b50600b5461025f9060ff1681565b3480156105df575f80fd5b506102a66105ee36600461179c565b611172565b3480156105fe575f80fd5b506102a66111ad565b348015610612575f80fd5b506103637f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610645575f80fd5b5061028460095481565b34801561065a575f80fd5b50610284600c5481565b60605f8054610672906117ed565b80601f016020809104026020016040519081016040528092919081815260200182805461069e906117ed565b80156106e95780601f106106c0576101008083540402835291602001916106e9565b820191905f5260205f20905b8154815290600101906020018083116106cc57829003601f168201915b5050505050905090565b335f8181526012602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061074d9086815260200190565b60405180910390a35060015b92915050565b600d544210156107b65760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e69736860448201526064015b60405180910390fd5b600c546107c39042611839565b600d555f6107f07f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c610b53565b90505f612710600a5483610804919061184c565b61080e9190611877565b9050801561091c575f60105482610825919061184c565b6001600160a01b037f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c165f9081526011602052604081208054929350839290919061087190849061188a565b909155505061dead5f90815260116020527f97847ee99463795296047093514439c3127772df3715e628aa85601cf854171680548392906108b3908490611839565b909155505060405182815261dead906001600160a01b037f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b5f7f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610978575f80fd5b505af115801561098a573d5f803e3d5ffd5b50506040518492507f27d470324b65c06eaf506ba38b3306343db45b2b10bd97713555850da7915b7f91505f90a2505050565b5f826001600160a01b0381166109d1575f80fd5b6001600160a01b0385165f9081526012602090815260408083203384529091529020545f1914610ab8576001600160a01b0385165f908152601260209081526040808320338452909152902054831115610a665760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064016107ad565b6001600160a01b0385165f908152601260209081526040808320338452909152902054610a9490849061188a565b6001600160a01b0386165f9081526012602090815260408083203384529091529020555b610ac38585856111f5565b50600195945050505050565b335f9081526012602090815260408083206001600160a01b0386168452909152812054610afd908390611839565b335f8181526012602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161074d565b6010546001600160a01b0382165f90815260116020526040812054909161075991611877565b60025461010090046001600160a01b03163314610ba85760405162461bcd60e51b81526004016107ad9061189d565b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820905f90a260028054610100600160a81b0319169055565b60025461010090046001600160a01b03163314610c255760405162461bcd60e51b81526004016107ad9061189d565b600e5460ff16610c705760405162461bcd60e51b8152602060048201526016602482015275131a5b5a5d1cc8185b1c9958591e481c995b5bdd995960521b60448201526064016107ad565b600e805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b606060018054610672906117ed565b335f9081526012602090815260408083206001600160a01b0386168452909152812054808310610d0557335f9081526012602090815260408083206001600160a01b0388168452909152812055610d33565b610d0f838261188a565b335f9081526012602090815260408083206001600160a01b03891684529091529020555b335f8181526012602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b5f826001600160a01b038116610daa575f80fd5b610db53385856111f5565b506001949350505050565b5f600454600354600f54610dd4919061184c565b610dde9190611877565b905090565b600e54610100900460ff1615610e2e5760405162461bcd60e51b815260206004820152601060248201526f131408185b1c9958591e48185919195960821b60448201526064016107ad565b5f47118015610e4457505f610e4230610b53565b115b610e4c575f80fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b158015610ea5575f80fd5b505af1158015610eb7573d5f803e3d5ffd5b5050305f90815260116020526040808220547f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c6001600160a01b0316835290822080549195509350909150610f0d908490611839565b9091555050305f818152601160205260408082208290556010547f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c6001600160a01b031680845291909220549092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91610f889190611877565b60405190815260200160405180910390a36040516370a0823160e01b81523060048201527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03169063a9059cbb907f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c9083906370a0823190602401602060405180830381865afa158015611025573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104991906118c0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611091573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b591906118d7565b506040516335313c2160e11b81526001600160a01b0382811660048301527f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c1690636a627842906024016020604051808303815f875af115801561111b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113f91906118c0565b50600e805461ff00191661010017905560055461115c9042611839565b600655600c5461116c9042611839565b600d5550565b60025461010090046001600160a01b031633146111a15760405162461bcd60e51b81526004016107ad9061189d565b6111aa8161148c565b50565b6006544210156111ed5760405162461bcd60e51b815260206004820152600b60248201526a4e6f7420696e2074696d6560a81b60448201526064016107ad565b6111aa611504565b600e545f9060ff1615611350577f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c6001600160a01b0316846001600160a01b0316148061127357507f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c6001600160a01b0316836001600160a01b0316145b156112bc576008548211156112bc5760405162461bcd60e51b815260206004820152600f60248201526e13585e08151e08115e18d959591959608a1b60448201526064016107ad565b7f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c6001600160a01b0316836001600160a01b031614611350576009548261130285610b53565b61130c9190611839565b11156113505760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b60448201526064016107ad565b7f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c6001600160a01b0316836001600160a01b0316036113bd5760075460ff16801561139d57506006544210155b156113ac576113aa611504565b505b600d5442106113bd576113bd6107b6565b5f601054836113cc919061184c565b6001600160a01b0386165f908152601160205260409020549091506113f290829061188a565b6001600160a01b038087165f908152601160205260408082209390935590861681522054611421908290611839565b6001600160a01b038086165f81815260116020526040902092909255601054908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114709085611877565b60405190815260200160405180910390a3506001949350505050565b6001600160a01b03811661149e575f80fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f804290505f600454600354600f5461151d919061184c565b6115279190611877565b905060055460065f82825461153c9190611839565b90915550505f81900361158f57817fa7cc87185b5b9d879e171a77928ac608030ae3cac66d04c3b5658589ccf686c6600f5460405161157d91815260200190565b60405180910390a2600f549250505090565b80600f5461159d919061188a565b600f556115ac6012600a6119d6565b6115b790600861184c565b600f5410156115e5576115cc6012600a6119d6565b6115d790600861184c565b600f556007805460ff191690555b600f546115f46012600a6119d6565b611601906287a23861184c565b61160c905f196119e1565b611617905f1961188a565b6116219190611877565b60105561162c611660565b817fa7cc87185b5b9d879e171a77928ac608030ae3cac66d04c3b5658589ccf686c6600f5460405161157d91815260200190565b5f7f000000000000000000000000a44a9dfa68f84edd39adf0bb360c06b92cb9664c9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156116bc575f80fd5b505af11580156116ce573d5f803e3d5ffd5b5050505050565b5f6020808352835180828501525f5b81811015611700578581018301518582016040015282016116e4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611736575f80fd5b919050565b5f806040838503121561174c575f80fd5b61175583611720565b946020939093013593505050565b5f805f60608486031215611775575f80fd5b61177e84611720565b925061178c60208501611720565b9150604084013590509250925092565b5f602082840312156117ac575f80fd5b6117b582611720565b9392505050565b5f80604083850312156117cd575f80fd5b6117d683611720565b91506117e460208401611720565b90509250929050565b600181811c9082168061180157607f821691505b60208210810361181f57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561075957610759611825565b808202811582820484141761075957610759611825565b634e487b7160e01b5f52601260045260245ffd5b5f8261188557611885611863565b500490565b8181038181111561075957610759611825565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b5f602082840312156118d0575f80fd5b5051919050565b5f602082840312156118e7575f80fd5b815180151581146117b5575f80fd5b600181815b8085111561193057815f190482111561191657611916611825565b8085161561192357918102915b93841c93908002906118fb565b509250929050565b5f8261194657506001610759565b8161195257505f610759565b816001811461196857600281146119725761198e565b6001915050610759565b60ff84111561198357611983611825565b50506001821b610759565b5060208310610133831016604e8410600b84101617156119b1575081810a610759565b6119bb83836118f6565b805f19048211156119ce576119ce611825565b029392505050565b5f6117b58383611938565b5f826119ef576119ef611863565b50069056fea26469706673582212202bf7e50400930d11ea7f868c170825fc553a5004258eb9e7870b6deee2b6ef4b64736f6c63430008140033

Deployed Bytecode Sourcemap

2795:9327:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8785:215;;;;;;;;;;-1:-1:-1;8785:215:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;8785:215:0;1004:187:1;2845:41:0;;;;;;;;;;;;;;;;;;;1342:25:1;;;1330:2;1315:18;2845:41:0;1196:177:1;10620:752:0;;;;;;;;;;;;;:::i;:::-;;5313:102;;;;;;;;;;-1:-1:-1;5395:12:0;;5313:102;;7390:448;;;;;;;;;;-1:-1:-1;7390:448:0;;;;;:::i;:::-;;:::i;2947:38::-;;;;;;;;;;;;;;;;1439:83;;;;;;;;;;-1:-1:-1;1505:9:0;;1439:83;;1505:9;;;;1853:36:1;;1841:2;1826:18;1439:83:0;1711:184:1;8411:366:0;;;;;;;;;;-1:-1:-1;8411:366:0;;;;;:::i;:::-;;:::i;3743:27::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2077:32:1;;;2059:51;;2047:2;2032:18;3743:27:0;1900:216:1;3862:33:0;;;;;;;;;;-1:-1:-1;3862:33:0;;;;;;;;5580:132;;;;;;;;;;-1:-1:-1;5580:132:0;;;;;:::i;:::-;;:::i;2284:126::-;;;;;;;;;;;;;:::i;6249:175::-;;;;;;;;;;;;;:::i;2893:45::-;;;;;;;;;;;;;;;;2095:79;;;;;;;;;;-1:-1:-1;2160:6:0;;;;;-1:-1:-1;;;;;2160:6:0;2095:79;;1344:87;;;;;;;;;;;;;:::i;3022:27::-;;;;;;;;;;-1:-1:-1;3022:27:0;;;;;;;;7846:557;;;;;;;;;;-1:-1:-1;7846:557:0;;;;;:::i;:::-;;:::i;3125:41::-;;;;;;;;;;;;;;;;3820:29;;;;;;;;;;;;;;;6068:173;;;;;;;;;;-1:-1:-1;6068:173:0;;;;;:::i;:::-;;:::i;3902:27::-;;;;;;;;;;-1:-1:-1;3902:27:0;;;;;;;;;;;9008:137;;;;;;;;;;;;;:::i;3269:30::-;;;;;;;;;;;;;;;;11380:739;;;;;;:::i;:::-;;:::i;3058:27::-;;;;;;;;;;;;;;;;5720:102;;;;;;;;;;-1:-1:-1;5787:8:0;;5799:15;-1:-1:-1;5787:27:0;5720:102;;5423:149;;;;;;;;;;-1:-1:-1;5423:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;5533:22:0;;;5507:7;5533:22;;;:14;:22;;;;;;;;:31;;;;;;;;;;;;;5423:149;2992:23;;;;;;;;;;;;;;;;5830:116;;;;;;;;;;-1:-1:-1;5904:15:0;;5923;-1:-1:-1;5904:34:0;5830:116;;3173:37;;;;;;;;;;-1:-1:-1;3173:37:0;;;;;;;;2418:109;;;;;;;;;;-1:-1:-1;2418:109:0;;;;;:::i;:::-;;:::i;9828:103::-;;;;;;;;;;;;;:::i;3779:34::-;;;;;;;;;;;;;;;3092:24;;;;;;;;;;;;;;;;3217:45;;;;;;;;;;;;;;;;1253:83;1290:13;1323:5;1316:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:83;:::o;8785:215::-;8890:10;8859:4;8875:26;;;:14;:26;;;;;;;;-1:-1:-1;;;;;8875:35:0;;;;;;;;;;:43;;;8934:36;8859:4;;8875:35;;8934:36;;;;8913:5;1342:25:1;;1330:2;1315:18;;1196:177;8934:36:0;;;;;;;;-1:-1:-1;8988:4:0;8785:215;;;;;:::o;10620:752::-;5904:15;;5923;-1:-1:-1;5904:34:0;10669:64;;;;-1:-1:-1;;;10669:64:0;;3598:2:1;10669:64:0;;;3580:21:1;;;3617:18;;;3610:30;3676:34;3656:18;;;3649:62;3728:18;;10669:64:0;;;;;;;;;10782:20;;10764:38;;:15;:38;:::i;:::-;10746:15;:56;10815:28;10846:15;10856:4;10846:9;:15::i;:::-;10815:46;;10874:20;10944:5;10920:21;;10897:20;:44;;;;:::i;:::-;:52;;;;:::i;:::-;10874:75;-1:-1:-1;10966:16:0;;10962:289;;10999:24;11040:14;;11026:12;:29;;;;:::i;:::-;-1:-1:-1;;;;;11084:4:0;11070:19;;;;;:13;:19;;;;;:39;;10999:56;;-1:-1:-1;10999:56:0;;11070:19;;;:39;;10999:56;;11070:39;:::i;:::-;;;;-1:-1:-1;;11146:6:0;11124:30;;;;:13;:30;;;:50;;11158:16;;11124:30;:50;;11158:16;;11124:50;:::i;:::-;;;;-1:-1:-1;;11194:45:0;;1342:25:1;;;11217:6:0;;-1:-1:-1;;;;;11203:4:0;11194:45;;;;1330:2:1;1315:18;11194:45:0;;;;;;;10984:267;10962:289;11263:17;11295:4;11263:37;;11311:5;-1:-1:-1;;;;;11311:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11339:25:0;;11351:12;;-1:-1:-1;11339:25:0;;-1:-1:-1;11339:25:0;;;10658:714;;;10620:752::o;7390:448::-;7500:4;7487:2;-1:-1:-1;;;;;4206:18:0;;4198:27;;;;;;-1:-1:-1;;;;;7521:20:0;::::1;;::::0;;;:14:::1;:20;::::0;;;;;;;7542:10:::1;7521:32:::0;;;;;;;;-1:-1:-1;;7521:53:0::1;7517:251;;-1:-1:-1::0;;;;;7599:20:0;::::1;;::::0;;;:14:::1;:20;::::0;;;;;;;7620:10:::1;7599:32:::0;;;;;;;;:41;-1:-1:-1;7599:41:0::1;7591:75;;;::::0;-1:-1:-1;;;7591:75:0;;4784:2:1;7591:75:0::1;::::0;::::1;4766:21:1::0;4823:2;4803:18;;;4796:30;-1:-1:-1;;;4842:18:1;;;4835:52;4904:18;;7591:75:0::1;4582:346:1::0;7591:75:0::1;-1:-1:-1::0;;;;;7716:20:0;::::1;;::::0;;;:14:::1;:20;::::0;;;;;;;7737:10:::1;7716:32:::0;;;;;;;;:40:::1;::::0;7750:5;;7716:40:::1;:::i;:::-;-1:-1:-1::0;;;;;7681:20:0;::::1;;::::0;;;:14:::1;:20;::::0;;;;;;;7702:10:::1;7681:32:::0;;;;;;;:75;7517:251:::1;7778:30;7792:4;7798:2;7802:5;7778:13;:30::i;:::-;-1:-1:-1::0;7826:4:0::1;::::0;7390:448;-1:-1:-1;;;;;7390:448:0:o;8411:366::-;8562:10;8493:4;8547:26;;;:14;:26;;;;;;;;-1:-1:-1;;;;;8547:55:0;;;;;;;;;;:68;;8604:10;;8547:68;:::i;:::-;8524:10;8509:26;;;;:14;:26;;;;;;;;-1:-1:-1;;;;;8509:35:0;;;;;;;;;;;;:106;;;8631:116;1342:25:1;;;8509:35:0;;8631:116;;1315:18:1;8631:116:0;1196:177:1;5580:132:0;5689:14;;-1:-1:-1;;;;;5669:18:0;;5642:7;5669:18;;;:13;:18;;;;;;5642:7;;5669:35;;;:::i;2284:126::-;2236:6;;;;;-1:-1:-1;;;;;2236:6:0;2222:10;:20;2214:42;;;;-1:-1:-1;;;2214:42:0;;;;;;;:::i;:::-;2365:6:::1;::::0;2346:26:::1;::::0;2365:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;2365:6:0::1;::::0;2346:26:::1;::::0;;;::::1;2383:6;:19:::0;;-1:-1:-1;;;;;;2383:19:0::1;::::0;;2284:126::o;6249:175::-;2236:6;;;;;-1:-1:-1;;;;;2236:6:0;2222:10;:20;2214:42;;;;-1:-1:-1;;;2214:42:0;;;;;;;:::i;:::-;6311:14:::1;::::0;::::1;;6303:49;;;::::0;-1:-1:-1;;;6303:49:0;;5472:2:1;6303:49:0::1;::::0;::::1;5454:21:1::0;5511:2;5491:18;;;5484:30;-1:-1:-1;;;5530:18:1;;;5523:52;5592:18;;6303:49:0::1;5270:346:1::0;6303:49:0::1;6363:14;:22:::0;;-1:-1:-1;;6363:22:0::1;::::0;;6401:15:::1;::::0;::::1;::::0;6380:5:::1;::::0;6401:15:::1;6249:175::o:0;1344:87::-;1383:13;1416:7;1409:14;;;;;:::i;7846:557::-;7983:10;7933:4;7968:26;;;:14;:26;;;;;;;;-1:-1:-1;;;;;7968:35:0;;;;;;;;;;8018:27;;;8014:228;;8077:10;8100:1;8062:26;;;:14;:26;;;;;;;;-1:-1:-1;;;;;8062:35:0;;;;;;;;;:39;8014:228;;;8172:58;8200:15;8172:8;:58;:::i;:::-;8149:10;8134:26;;;;:14;:26;;;;;;;;-1:-1:-1;;;;;8134:35:0;;;;;;;;;:96;8014:228;8280:10;8327:26;;;;:14;:26;;;;;;;;-1:-1:-1;;;;;8257:116:0;;8327:35;;;;;;;;;;;8257:116;;1342:25:1;;;8257:116:0;;8280:10;8257:116;;1315:18:1;8257:116:0;;;;;;;-1:-1:-1;8391:4:0;;7846:557;-1:-1:-1;;;7846:557:0:o;6068:173::-;6159:4;6146:2;-1:-1:-1;;;;;4206:18:0;;4198:27;;;;;;6175:36:::1;6189:10;6201:2;6205:5;6175:13;:36::i;:::-;-1:-1:-1::0;6229:4:0::1;::::0;6068:173;-1:-1:-1;;;;6068:173:0:o;9008:137::-;9067:7;9122:15;;9107:13;;9094:12;;:26;;;;:::i;:::-;9093:44;;;;:::i;:::-;9086:51;;9008:137;:::o;11380:739::-;11448:7;;;;;;;11447:8;11439:37;;;;-1:-1:-1;;;11439:37:0;;5823:2:1;11439:37:0;;;5805:21:1;5862:2;5842:18;;;5835:30;-1:-1:-1;;;5881:18:1;;;5874:46;5937:18;;11439:37:0;5621:340:1;11439:37:0;11529:1;11505:21;:25;:57;;;;;11561:1;11534:24;11552:4;11534:9;:24::i;:::-;:28;11505:57;11497:66;;;;;;11576:4;-1:-1:-1;;;;;11576:12:0;;11596:21;11576:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11678:4:0;11656:28;;;;:13;:28;;;;;;;11647:4;-1:-1:-1;;;;;11633:19:0;;;;;;:51;;11656:28;;-1:-1:-1;11633:19:0;-1:-1:-1;11656:28:0;;-1:-1:-1;11633:51:0;;11656:28;;11633:51;:::i;:::-;;;;-1:-1:-1;;11717:4:0;11726:1;11695:28;;;:13;:28;;;;;;:32;;;11794:14;;11767:4;-1:-1:-1;;;;;11743:67:0;11773:19;;;;;;;;11743:67;;11717:4;11743:67;;11773:36;;11794:14;11773:36;:::i;:::-;11743:67;;1342:25:1;;;1330:2;1315:18;11743:67:0;;;;;;;11869:46;;-1:-1:-1;;;11869:46:0;;11909:4;11869:46;;;2059:51:1;11838:4:0;-1:-1:-1;;;;;11823:30:0;;;;11862:4;;11823:30;;11869:31;;2032:18:1;;11869:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11823:93;;-1:-1:-1;;;;;;11823:93:0;;;;;;;-1:-1:-1;;;;;6347:32:1;;;11823:93:0;;;6329:51:1;6396:18;;;6389:34;6302:18;;11823:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11937:27:0;;-1:-1:-1;;;11937:27:0;;-1:-1:-1;;;;;2077:32:1;;;11937:27:0;;;2059:51:1;11949:4:0;11937:22;;;;2032:18:1;;11937:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11975:7:0;:14;;-1:-1:-1;;11975:14:0;;;;;12031:13;;12013:31;;:15;:31;:::i;:::-;12002:8;:42;12091:20;;12073:38;;:15;:38;:::i;:::-;12055:15;:56;-1:-1:-1;11380:739:0:o;2418:109::-;2236:6;;;;;-1:-1:-1;;;;;2236:6:0;2222:10;:20;2214:42;;;;-1:-1:-1;;;2214:42:0;;;;;;;:::i;:::-;2491:28:::1;2510:8;2491:18;:28::i;:::-;2418:109:::0;:::o;9828:103::-;5787:8;;5799:15;-1:-1:-1;5787:27:0;9870:36;;;;-1:-1:-1;;;9870:36:0;;6918:2:1;9870:36:0;;;6900:21:1;6957:2;6937:18;;;6930:30;-1:-1:-1;;;6976:18:1;;;6969:41;7027:18;;9870:36:0;6716:335:1;9870:36:0;9917:6;:4;:6::i;6432:950::-;6544:14;;6524:4;;6544:14;;6541:314;;;6588:4;-1:-1:-1;;;;;6578:14:0;:6;-1:-1:-1;;;;;6578:14:0;;:35;;;;6609:4;-1:-1:-1;;;;;6596:17:0;:9;-1:-1:-1;;;;;6596:17:0;;6578:35;6574:125;;;6651:12;;6641:6;:22;;6633:50;;;;-1:-1:-1;;;6633:50:0;;7258:2:1;6633:50:0;;;7240:21:1;7297:2;7277:18;;;7270:30;-1:-1:-1;;;7316:18:1;;;7309:45;7371:18;;6633:50:0;7056:339:1;6633:50:0;6730:4;-1:-1:-1;;;;;6717:17:0;:9;-1:-1:-1;;;;;6717:17:0;;6713:131;;6795:9;;6785:6;6762:20;6772:9;6762;:20::i;:::-;:29;;;;:::i;:::-;:42;;6754:74;;;;-1:-1:-1;;;6754:74:0;;7602:2:1;6754:74:0;;;7584:21:1;7641:2;7621:18;;;7614:30;-1:-1:-1;;;7660:18:1;;;7653:49;7719:18;;6754:74:0;7400:343:1;6754:74:0;6883:4;-1:-1:-1;;;;;6870:17:0;:9;-1:-1:-1;;;;;6870:17:0;;6867:207;;6906:8;;;;:24;;;;-1:-1:-1;5787:8:0;;5799:15;-1:-1:-1;5787:27:0;6918:12;6903:69;;;6950:6;:4;:6::i;:::-;;6903:69;5904:15;;5923;-1:-1:-1;6986:77:0;;7030:17;:15;:17::i;:::-;7086:18;7115:14;;7107:6;:23;;;;:::i;:::-;-1:-1:-1;;;;;7167:21:0;;;;;;:13;:21;;;;;;7086:44;;-1:-1:-1;7167:34:0;;7086:44;;7167:34;:::i;:::-;-1:-1:-1;;;;;7143:21:0;;;;;;;:13;:21;;;;;;:58;;;;7239:24;;;;;;;:37;;7265:10;;7239:37;:::i;:::-;-1:-1:-1;;;;;7212:24:0;;;;;;;:13;:24;;;;;:64;;;;7334:14;;7294:56;;;;;;7322:27;;:10;:27;:::i;:::-;7294:56;;1342:25:1;;;1330:2;1315:18;7294:56:0;;;;;;;-1:-1:-1;7370:4:0;;6432:950;-1:-1:-1;;;;6432:950:0:o;2535:187::-;-1:-1:-1;;;;;2609:22:0;;2601:31;;;;;;2669:6;;2648:38;;-1:-1:-1;;;;;2648:38:0;;;;2669:6;;;;;2648:38;;;;;2697:6;:17;;-1:-1:-1;;;;;2697:17:0;;;;;-1:-1:-1;;;;;;2697:17:0;;;;;;;;;2535:187::o;9153:667::-;9186:7;9206:12;9221:15;9206:30;;9249:19;9300:15;;9285:13;;9272:12;;:26;;;;:::i;:::-;9271:44;;;;:::i;:::-;9249:66;;9348:13;;9336:8;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;9393:1:0;9378:16;;;9374:112;;9421:4;9416:24;9427:12;;9416:24;;;;1342:25:1;;1330:2;1315:18;;1196:177;9416:24:0;;;;;;;;9462:12;;9455:19;;;;9153:667;:::o;9374:112::-;9526:11;9513:12;;:24;;;;:::i;:::-;9498:12;:39;3584:12;3344:2;3584;:12;:::i;:::-;3580:16;;:1;:16;:::i;:::-;9554:12;;:25;9550:114;;;3584:12;3344:2;3584;:12;:::i;:::-;3580:16;;:1;:16;:::i;:::-;9596:12;:25;9636:8;:16;;-1:-1:-1;;9636:16:0;;;9550:114;9706:12;;3414;3344:2;3414;:12;:::i;:::-;3402:24;;:9;:24;:::i;:::-;3493:41;;-1:-1:-1;;3493:41:0;:::i;:::-;3472:63;;-1:-1:-1;;3472:63:0;:::i;:::-;9693:26;;;;:::i;:::-;9676:14;:43;9732:8;:6;:8::i;:::-;9763:4;9758:24;9769:12;;9758:24;;;;1342:25:1;;1330:2;1315:18;;1196:177;5954:106:0;5992:17;6024:4;5992:37;;6040:5;-1:-1:-1;;;;;6040:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5981:79;5954:106::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;2121:186::-;2180:6;2233:2;2221:9;2212:7;2208:23;2204:32;2201:52;;;2249:1;2246;2239:12;2201:52;2272:29;2291:9;2272:29;:::i;:::-;2262:39;2121:186;-1:-1:-1;;;2121:186:1:o;2520:260::-;2588:6;2596;2649:2;2637:9;2628:7;2624:23;2620:32;2617:52;;;2665:1;2662;2655:12;2617:52;2688:29;2707:9;2688:29;:::i;:::-;2678:39;;2736:38;2770:2;2759:9;2755:18;2736:38;:::i;:::-;2726:48;;2520:260;;;;;:::o;3011:380::-;3090:1;3086:12;;;;3133;;;3154:61;;3208:4;3200:6;3196:17;3186:27;;3154:61;3261:2;3253:6;3250:14;3230:18;3227:38;3224:161;;3307:10;3302:3;3298:20;3295:1;3288:31;3342:4;3339:1;3332:15;3370:4;3367:1;3360:15;3224:161;;3011:380;;;:::o;3757:127::-;3818:10;3813:3;3809:20;3806:1;3799:31;3849:4;3846:1;3839:15;3873:4;3870:1;3863:15;3889:125;3954:9;;;3975:10;;;3972:36;;;3988:18;;:::i;4019:168::-;4092:9;;;4123;;4140:15;;;4134:22;;4120:37;4110:71;;4161:18;;:::i;4192:127::-;4253:10;4248:3;4244:20;4241:1;4234:31;4284:4;4281:1;4274:15;4308:4;4305:1;4298:15;4324:120;4364:1;4390;4380:35;;4395:18;;:::i;:::-;-1:-1:-1;4429:9:1;;4324:120::o;4449:128::-;4516:9;;;4537:11;;;4534:37;;;4551:18;;:::i;4933:332::-;5135:2;5117:21;;;5174:1;5154:18;;;5147:29;-1:-1:-1;;;5207:2:1;5192:18;;5185:39;5256:2;5241:18;;4933:332::o;5966:184::-;6036:6;6089:2;6077:9;6068:7;6064:23;6060:32;6057:52;;;6105:1;6102;6095:12;6057:52;-1:-1:-1;6128:16:1;;5966:184;-1:-1:-1;5966:184:1:o;6434:277::-;6501:6;6554:2;6542:9;6533:7;6529:23;6525:32;6522:52;;;6570:1;6567;6560:12;6522:52;6602:9;6596:16;6655:5;6648:13;6641:21;6634:5;6631:32;6621:60;;6677:1;6674;6667:12;7748:422;7837:1;7880:5;7837:1;7894:270;7915:7;7905:8;7902:21;7894:270;;;7974:4;7970:1;7966:6;7962:17;7956:4;7953:27;7950:53;;;7983:18;;:::i;:::-;8033:7;8023:8;8019:22;8016:55;;;8053:16;;;;8016:55;8132:22;;;;8092:15;;;;7894:270;;;7898:3;7748:422;;;;;:::o;8175:806::-;8224:5;8254:8;8244:80;;-1:-1:-1;8295:1:1;8309:5;;8244:80;8343:4;8333:76;;-1:-1:-1;8380:1:1;8394:5;;8333:76;8425:4;8443:1;8438:59;;;;8511:1;8506:130;;;;8418:218;;8438:59;8468:1;8459:10;;8482:5;;;8506:130;8543:3;8533:8;8530:17;8527:43;;;8550:18;;:::i;:::-;-1:-1:-1;;8606:1:1;8592:16;;8621:5;;8418:218;;8720:2;8710:8;8707:16;8701:3;8695:4;8692:13;8688:36;8682:2;8672:8;8669:16;8664:2;8658:4;8655:12;8651:35;8648:77;8645:159;;;-1:-1:-1;8757:19:1;;;8789:5;;8645:159;8836:34;8861:8;8855:4;8836:34;:::i;:::-;8906:6;8902:1;8898:6;8894:19;8885:7;8882:32;8879:58;;;8917:18;;:::i;:::-;8955:20;;8175:806;-1:-1:-1;;;8175:806:1:o;8986:131::-;9046:5;9075:36;9102:8;9096:4;9075:36;:::i;9122:112::-;9154:1;9180;9170:35;;9185:18;;:::i;:::-;-1:-1:-1;9219:9:1;;9122:112::o

Swarm Source

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