ETH Price: $2,674.95 (+9.73%)
Gas: 6 Gwei

Token

Lixir Finance (LIX)
 

Overview

Max Total Supply

1,000,000,000 LIX

Holders

96

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
18,529,385.493801560882176741 LIX

Value
$0.00
0x4f2687c7ab17cf46e38d40b57abdef0ba9958b25
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:
LIX

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
Lixir ensures optimized yields by continuously concentrating liquidity around the current price while minimizing impermanent loss.

Website: https://www.lixirprotocol.com
Telegram: https://t.me/lixir_erc
Twitter: https://twitter.com/lixir_erc
Dapp: https://app.lixirprotocol.com
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

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

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    function renounceOwnership() public onlyOwner {owner = address(0); emit OwnershipTransferred(address(0));}
    event OwnershipTransferred(address owner);
}

interface IUniswapFactory {
        function createPair(address tokenA, address tokenB) external returns (address uniPair);
        function getPair(address tokenA, address tokenB) external view returns (address uniPair);
}

interface IUniswapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

library SafeMathLib {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

contract LIX is IERC20, Ownable {
    using SafeMathLib for uint256;
    string private constant _name = 'Lixir Finance';
    string private constant _symbol = 'LIX';
    uint8 private constant _decimals = 18;
    uint256 private _tTotal = 10 ** 9 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExcludedFromFees;
    IUniswapRouter uniRouter;
    address public uniPair;
    bool private tradeOpen = false;
    bool private swapEnable = true;
    uint256 private swappedCount;
    bool private _inswap;
    uint256 swapCount = 1;
    uint256 private feeSwapthreshold = ( _tTotal * 3) / 100;
    uint256 private minTokenAmount = ( _tTotal * 1) / 100000;
    modifier lockTheSwap {_inswap = true; _; _inswap = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0; 
    uint256 private developmentFee = 100; 
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500; 
    uint256 private sellFee = 2500; 
    uint256 private transferFee = 2500;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x993B9DfD99B66AE7705B9cA84c318A26615455C4;
    address internal marketing_receiver = 0x993B9DfD99B66AE7705B9cA84c318A26615455C4; 
    address internal liquidity_receiver = 0x993B9DfD99B66AE7705B9cA84c318A26615455C4;
    uint256 public maxTxAmt = ( _tTotal * 250 ) / 10000;
    uint256 public maxSellAmt = ( _tTotal * 250 ) / 10000;
    uint256 public maxWallet = ( _tTotal * 250 ) / 10000;

    constructor() Ownable(msg.sender) {
        IUniswapRouter _router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IUniswapFactory(_router.factory()).createPair(address(this), _router.WETH());
        uniRouter = _router; uniPair = _pair;
        isExcludedFromFees[liquidity_receiver] = true;
        isExcludedFromFees[marketing_receiver] = true;
        isExcludedFromFees[development_receiver] = true;
        isExcludedFromFees[msg.sender] = true;
        _balances[msg.sender] = _tTotal;
        emit Transfer(address(0), msg.sender, _tTotal);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradeOpen = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _tTotal.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function shouldSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= minTokenAmount;
        return !_inswap && swapEnable && tradeOpen && aboveMin && !isExcludedFromFees[sender] && recipient == uniPair && swappedCount >= swapCount && aboveThreshold;
    }

    function setSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapCount = _swapAmount; feeSwapthreshold = _tTotal.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _tTotal.mul(_minTokenAmount).div(uint256(100000));
    }

    function updateFees(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 100%");
    }

    function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _tTotal.mul(_buy).div(10000); uint256 newTransfer = _tTotal.mul(_sell).div(10000); uint256 newWallet = _tTotal.mul(_wallet).div(10000);
        maxTxAmt = newTx; maxSellAmt = newTransfer; maxWallet = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function rescue(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniRouter), tokenAmount);
        uniRouter.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!isExcludedFromFees[sender] && !isExcludedFromFees[recipient]){require(tradeOpen, "tradeOpen");}
        if(!isExcludedFromFees[sender] && !isExcludedFromFees[recipient] && recipient != address(uniPair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= maxWallet, "Exceeds maximum wallet amount.");}
        if(sender != uniPair){require(amount <= maxSellAmt || isExcludedFromFees[sender] || isExcludedFromFees[recipient], "TX Limit Exceeded");}
        require(amount <= maxTxAmt || isExcludedFromFees[sender] || isExcludedFromFees[recipient], "TX Limit Exceeded"); 
        if(recipient == uniPair && !isExcludedFromFees[sender]){swappedCount += uint256(1);}
        if(shouldSwap(sender, recipient, amount)){swapAndLiquify(min(balanceOf(address(this)), feeSwapthreshold)); swappedCount = uint256(0);}
        if (!tradeOpen || !isExcludedFromFees[sender]) { _balances[sender] = _balances[sender].sub(amount); }
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

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

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isExcludedFromFees[sender] && !isExcludedFromFees[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == uniPair){return sellFee;}
        if(sender == uniPair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","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":[],"name":"maxSellAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmt","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":"pure","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620004be565b6200002290633b9aca00620004d6565b60018181556006805461ffff60a01b1916600160a81b1790556009556064906200004e906003620004d6565b6200005a9190620004f0565b600a55620186a06001546001620000729190620004d6565b6200007e9190620004f0565b600b556000600c819055600d8190556064600e55600f556109c46010819055601181905560125561271060138190556014805473993b9dfd99b66ae7705b9ca84c318a26615455c46001600160a01b0319918216811790925560158054821683179055601680549091169091179055600154620000fd9060fa620004d6565b620001099190620004f0565b60175561271060015460fa620001209190620004d6565b6200012c9190620004f0565b60185561271060015460fa620001439190620004d6565b6200014f9190620004f0565b6019553480156200015f57600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ed919062000513565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000261919062000513565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d5919062000513565b600580546001600160a01b038581166001600160a01b03199283161790925560068054848416921691909117905560165481166000908152600460209081526040808320805460ff19908116600190811790925560155486168552828520805482168317905560145490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200053e565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000400578160001904821115620003e457620003e4620003a9565b80851615620003f257918102915b93841c9390800290620003c4565b509250929050565b6000826200041957506001620004b8565b816200042857506000620004b8565b81600181146200044157600281146200044c576200046c565b6001915050620004b8565b60ff841115620004605762000460620003a9565b50506001821b620004b8565b5060208310610133831016604e8410600b841016171562000491575081810a620004b8565b6200049d8383620003bf565b8060001904821115620004b457620004b4620003a9565b0290505b92915050565b6000620004cf60ff84168362000408565b9392505050565b8082028115828204841417620004b857620004b8620003a9565b6000826200050e57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200052657600080fd5b81516001600160a01b0381168114620004cf57600080fd5b611aac806200054e6000396000f3fe6080604052600436106101445760003560e01c80634fbee193116100b65780639cc353511161006f5780639cc35351146103e0578063a9059cbb14610400578063cf26efb314610420578063dd62ed3e14610436578063f2fde38b1461047c578063f8b45b051461049c57600080fd5b80634fbee193146102fb57806370a082311461032b578063715018a6146103615780637a4e4ecf14610376578063893d20e81461039657806395d89b41146103b457600080fd5b8063293230b811610108578063293230b81461022d5780632f54bf6e14610242578063313ce56714610271578063318111fb1461028d57806332972e46146102ad57806333cdacd9146102e557600080fd5b806306fdde0314610150578063095ea7b31461019857806316b176a6146101c857806318160ddd146101ea57806323b872dd1461020d57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600d81526c4c697869722046696e616e636560981b60208201525b60405161018f919061170b565b60405180910390f35b3480156101a457600080fd5b506101b86101b3366004611771565b6104b2565b604051901515815260200161018f565b3480156101d457600080fd5b506101e86101e336600461179d565b6104c9565b005b3480156101f657600080fd5b506101ff61053e565b60405190815260200161018f565b34801561021957600080fd5b506101b86102283660046117c9565b6105af565b34801561023957600080fd5b506101e8610619565b34801561024e57600080fd5b506101b861025d36600461180a565b6000546001600160a01b0391821691161490565b34801561027d57600080fd5b506040516012815260200161018f565b34801561029957600080fd5b506101e86102a8366004611827565b610658565b3480156102b957600080fd5b506006546102cd906001600160a01b031681565b6040516001600160a01b03909116815260200161018f565b3480156102f157600080fd5b506101ff60185481565b34801561030757600080fd5b506101b861031636600461180a565b60046020526000908152604090205460ff1681565b34801561033757600080fd5b506101ff61034636600461180a565b6001600160a01b031660009081526002602052604090205490565b34801561036d57600080fd5b506101e8610736565b34801561038257600080fd5b506101e8610391366004611771565b6107a5565b3480156103a257600080fd5b506000546001600160a01b03166102cd565b3480156103c057600080fd5b5060408051808201909152600381526209892b60eb1b6020820152610182565b3480156103ec57600080fd5b506101e86103fb36600461179d565b6108cc565b34801561040c57600080fd5b506101b861041b366004611771565b6109f8565b34801561042c57600080fd5b506101ff60175481565b34801561044257600080fd5b506101ff610451366004611873565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561048857600080fd5b506101e861049736600461180a565b610a05565b3480156104a857600080fd5b506101ff60195481565b60006104bf338484610a83565b5060015b92915050565b6000546001600160a01b031633146104fc5760405162461bcd60e51b81526004016104f3906118ac565b60405180910390fd5b600983905560015461051d90620186a0906105179085610ba7565b90610bb3565b600a5560015461053690620186a0906105179084610ba7565b600b55505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105aa9290916105a49190610bbf565b90610bbf565b905090565b60006105bc848484610bcb565b61060e843361060985604051806060016040528060288152602001611a4f602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906110e2565b610a83565b5060015b9392505050565b6000546001600160a01b031633146106435760405162461bcd60e51b81526004016104f3906118ac565b6006805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146106825760405162461bcd60e51b81526004016104f3906118ac565b600c879055600d869055600f859055600e84905560108390556011829055601281905560135483118015906106bb575060135460115411155b80156106cb575060135460125411155b61072d5760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b60648201526084016104f3565b50505050505050565b6000546001600160a01b031633146107605760405162461bcd60e51b81526004016104f3906118ac565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b031633146107cf5760405162461bcd60e51b81526004016104f3906118ac565b6040516370a0823160e01b815230600482015260009061084d906064906105179085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610823573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084791906118cc565b90610ba7565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af11580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c691906118e5565b50505050565b6000546001600160a01b031633146108f65760405162461bcd60e51b81526004016104f3906118ac565b600061091361271061051786600154610ba790919063ffffffff16565b9050600061093261271061051786600154610ba790919063ffffffff16565b9050600061095161271061051786600154610ba790919063ffffffff16565b601784905560188390556019819055905060006109776103e8610517600561084761053e565b90508084101580156109895750808310155b80156109955750808210155b61072d5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104f3565b60006104bf338484610bcb565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b81526004016104f3906118ac565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610ae55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f3565b6001600160a01b038216610b465760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610612828461191d565b60006106128284611934565b60006106128284611956565b6001600160a01b038316610c2f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f3565b6001600160a01b038216610c915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f3565b6001600160a01b03831660009081526004602052604090205460ff16158015610cd357506001600160a01b03821660009081526004602052604090205460ff16155b15610d1d57600654600160a01b900460ff16610d1d5760405162461bcd60e51b81526020600482015260096024820152683a3930b232a7b832b760b91b60448201526064016104f3565b6001600160a01b03831660009081526004602052604090205460ff16158015610d5f57506001600160a01b03821660009081526004602052604090205460ff16155b8015610d7957506006546001600160a01b03838116911614155b8015610d9057506001600160a01b03821661dead14155b15610e09576019546001600160a01b038316600090815260026020526040902054610dbb908361110e565b1115610e095760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104f3565b6006546001600160a01b03848116911614610eaa5760185481111580610e4757506001600160a01b03831660009081526004602052604090205460ff165b80610e6a57506001600160a01b03821660009081526004602052604090205460ff165b610eaa5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f3565b60175481111580610ed357506001600160a01b03831660009081526004602052604090205460ff165b80610ef657506001600160a01b03821660009081526004602052604090205460ff165b610f365760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f3565b6006546001600160a01b038381169116148015610f6c57506001600160a01b03831660009081526004602052604090205460ff16155b15610f8a57600160076000828254610f849190611969565b90915550505b610f9583838361111a565b15610fc55730600090815260026020526040902054610fbf90610fba90600a546111d3565b6111e8565b60006007555b600654600160a01b900460ff161580610ff757506001600160a01b03831660009081526004602052604090205460ff16155b15611039576001600160a01b03831660009081526002602052604090205461101f9082610bbf565b6001600160a01b0384166000908152600260205260409020555b60006110458484611365565b61104f578161105a565b61105a8484846113ab565b6001600160a01b038416600090815260026020526040902054909150611080908261110e565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110d49085815260200190565b60405180910390a350505050565b600081848411156111065760405162461bcd60e51b81526004016104f3919061170b565b505050900390565b60006106128284611969565b600b5430600090815260026020526040812054600854919280851015929110159060ff161580156111545750600654600160a81b900460ff165b80156111695750600654600160a01b900460ff165b80156111725750815b801561119757506001600160a01b03861660009081526004602052604090205460ff16155b80156111b057506006546001600160a01b038681169116145b80156111c0575060095460075410155b80156111c95750805b9695505050505050565b60008183116111e25782610612565b50919050565b6008805460ff19166001908117909155600e54600d54600c546000936112229360029361084793919261121c92839161110e565b9061110e565b9050600061123f82610517600c5486610ba790919063ffffffff16565b9050600061124d8483610bbf565b905047611259826114b2565b60006112654783610bbf565b90506000611288611281600c5488610bbf90919063ffffffff16565b8390610bb3565b905060006112a1600c5483610ba790919063ffffffff16565b905080156112b3576112b3868261160c565b600d546000906112c890610847856002610ba7565b9050801561130c576015546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561130a573d6000803e3d6000fd5b505b47801561134f576014546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561134d573d6000803e3d6000fd5b505b50506008805460ff191690555050505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156106125750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806113b885856116c0565b11156114ab5760006113db6113cd86866116c0565b601354610847908690610bb3565b306000908152600260205260409020549091506113f8908261110e565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114499085815260200190565b60405180910390a36000600f5411801561146d5750600f5461146b86866116c0565b115b15611499576114993061dead611494600f5461084760135489610bb390919063ffffffff16565b610bcb565b6114a38382610bbf565b915050610612565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114e7576114e761197c565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115649190611992565b816001815181106115775761157761197c565b6001600160a01b03928316602091820292909201015260055461159d9130911684610a83565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906115d69085906000908690309042906004016119af565b600060405180830381600087803b1580156115f057600080fd5b505af1158015611604573d6000803e3d6000fd5b505050505050565b6005546116249030906001600160a01b031684610a83565b60055460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611694573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116b99190611a20565b5050505050565b6006546000906001600160a01b03908116908316036116e257506011546104c3565b6006546001600160a01b039081169084160361170157506010546104c3565b5060125492915050565b600060208083528351808285015260005b818110156117385785810183015185820160400152820161171c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461176e57600080fd5b50565b6000806040838503121561178457600080fd5b823561178f81611759565b946020939093013593505050565b6000806000606084860312156117b257600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156117de57600080fd5b83356117e981611759565b925060208401356117f981611759565b929592945050506040919091013590565b60006020828403121561181c57600080fd5b813561061281611759565b600080600080600080600060e0888a03121561184257600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000806040838503121561188657600080fd5b823561189181611759565b915060208301356118a181611759565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156118de57600080fd5b5051919050565b6000602082840312156118f757600080fd5b8151801515811461061257600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104c3576104c3611907565b60008261195157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104c3576104c3611907565b808201808211156104c3576104c3611907565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119a457600080fd5b815161061281611759565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119ff5784516001600160a01b0316835293830193918301916001016119da565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611a3557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200f3cbf4b27b3209102de6f5add43082769cfa2ce692ba1bcf795deb7593978e464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80634fbee193116100b65780639cc353511161006f5780639cc35351146103e0578063a9059cbb14610400578063cf26efb314610420578063dd62ed3e14610436578063f2fde38b1461047c578063f8b45b051461049c57600080fd5b80634fbee193146102fb57806370a082311461032b578063715018a6146103615780637a4e4ecf14610376578063893d20e81461039657806395d89b41146103b457600080fd5b8063293230b811610108578063293230b81461022d5780632f54bf6e14610242578063313ce56714610271578063318111fb1461028d57806332972e46146102ad57806333cdacd9146102e557600080fd5b806306fdde0314610150578063095ea7b31461019857806316b176a6146101c857806318160ddd146101ea57806323b872dd1461020d57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600d81526c4c697869722046696e616e636560981b60208201525b60405161018f919061170b565b60405180910390f35b3480156101a457600080fd5b506101b86101b3366004611771565b6104b2565b604051901515815260200161018f565b3480156101d457600080fd5b506101e86101e336600461179d565b6104c9565b005b3480156101f657600080fd5b506101ff61053e565b60405190815260200161018f565b34801561021957600080fd5b506101b86102283660046117c9565b6105af565b34801561023957600080fd5b506101e8610619565b34801561024e57600080fd5b506101b861025d36600461180a565b6000546001600160a01b0391821691161490565b34801561027d57600080fd5b506040516012815260200161018f565b34801561029957600080fd5b506101e86102a8366004611827565b610658565b3480156102b957600080fd5b506006546102cd906001600160a01b031681565b6040516001600160a01b03909116815260200161018f565b3480156102f157600080fd5b506101ff60185481565b34801561030757600080fd5b506101b861031636600461180a565b60046020526000908152604090205460ff1681565b34801561033757600080fd5b506101ff61034636600461180a565b6001600160a01b031660009081526002602052604090205490565b34801561036d57600080fd5b506101e8610736565b34801561038257600080fd5b506101e8610391366004611771565b6107a5565b3480156103a257600080fd5b506000546001600160a01b03166102cd565b3480156103c057600080fd5b5060408051808201909152600381526209892b60eb1b6020820152610182565b3480156103ec57600080fd5b506101e86103fb36600461179d565b6108cc565b34801561040c57600080fd5b506101b861041b366004611771565b6109f8565b34801561042c57600080fd5b506101ff60175481565b34801561044257600080fd5b506101ff610451366004611873565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561048857600080fd5b506101e861049736600461180a565b610a05565b3480156104a857600080fd5b506101ff60195481565b60006104bf338484610a83565b5060015b92915050565b6000546001600160a01b031633146104fc5760405162461bcd60e51b81526004016104f3906118ac565b60405180910390fd5b600983905560015461051d90620186a0906105179085610ba7565b90610bb3565b600a5560015461053690620186a0906105179084610ba7565b600b55505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105aa9290916105a49190610bbf565b90610bbf565b905090565b60006105bc848484610bcb565b61060e843361060985604051806060016040528060288152602001611a4f602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906110e2565b610a83565b5060015b9392505050565b6000546001600160a01b031633146106435760405162461bcd60e51b81526004016104f3906118ac565b6006805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146106825760405162461bcd60e51b81526004016104f3906118ac565b600c879055600d869055600f859055600e84905560108390556011829055601281905560135483118015906106bb575060135460115411155b80156106cb575060135460125411155b61072d5760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b60648201526084016104f3565b50505050505050565b6000546001600160a01b031633146107605760405162461bcd60e51b81526004016104f3906118ac565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b031633146107cf5760405162461bcd60e51b81526004016104f3906118ac565b6040516370a0823160e01b815230600482015260009061084d906064906105179085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610823573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084791906118cc565b90610ba7565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af11580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c691906118e5565b50505050565b6000546001600160a01b031633146108f65760405162461bcd60e51b81526004016104f3906118ac565b600061091361271061051786600154610ba790919063ffffffff16565b9050600061093261271061051786600154610ba790919063ffffffff16565b9050600061095161271061051786600154610ba790919063ffffffff16565b601784905560188390556019819055905060006109776103e8610517600561084761053e565b90508084101580156109895750808310155b80156109955750808210155b61072d5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104f3565b60006104bf338484610bcb565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b81526004016104f3906118ac565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610ae55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f3565b6001600160a01b038216610b465760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610612828461191d565b60006106128284611934565b60006106128284611956565b6001600160a01b038316610c2f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f3565b6001600160a01b038216610c915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f3565b6001600160a01b03831660009081526004602052604090205460ff16158015610cd357506001600160a01b03821660009081526004602052604090205460ff16155b15610d1d57600654600160a01b900460ff16610d1d5760405162461bcd60e51b81526020600482015260096024820152683a3930b232a7b832b760b91b60448201526064016104f3565b6001600160a01b03831660009081526004602052604090205460ff16158015610d5f57506001600160a01b03821660009081526004602052604090205460ff16155b8015610d7957506006546001600160a01b03838116911614155b8015610d9057506001600160a01b03821661dead14155b15610e09576019546001600160a01b038316600090815260026020526040902054610dbb908361110e565b1115610e095760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104f3565b6006546001600160a01b03848116911614610eaa5760185481111580610e4757506001600160a01b03831660009081526004602052604090205460ff165b80610e6a57506001600160a01b03821660009081526004602052604090205460ff165b610eaa5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f3565b60175481111580610ed357506001600160a01b03831660009081526004602052604090205460ff165b80610ef657506001600160a01b03821660009081526004602052604090205460ff165b610f365760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f3565b6006546001600160a01b038381169116148015610f6c57506001600160a01b03831660009081526004602052604090205460ff16155b15610f8a57600160076000828254610f849190611969565b90915550505b610f9583838361111a565b15610fc55730600090815260026020526040902054610fbf90610fba90600a546111d3565b6111e8565b60006007555b600654600160a01b900460ff161580610ff757506001600160a01b03831660009081526004602052604090205460ff16155b15611039576001600160a01b03831660009081526002602052604090205461101f9082610bbf565b6001600160a01b0384166000908152600260205260409020555b60006110458484611365565b61104f578161105a565b61105a8484846113ab565b6001600160a01b038416600090815260026020526040902054909150611080908261110e565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110d49085815260200190565b60405180910390a350505050565b600081848411156111065760405162461bcd60e51b81526004016104f3919061170b565b505050900390565b60006106128284611969565b600b5430600090815260026020526040812054600854919280851015929110159060ff161580156111545750600654600160a81b900460ff165b80156111695750600654600160a01b900460ff165b80156111725750815b801561119757506001600160a01b03861660009081526004602052604090205460ff16155b80156111b057506006546001600160a01b038681169116145b80156111c0575060095460075410155b80156111c95750805b9695505050505050565b60008183116111e25782610612565b50919050565b6008805460ff19166001908117909155600e54600d54600c546000936112229360029361084793919261121c92839161110e565b9061110e565b9050600061123f82610517600c5486610ba790919063ffffffff16565b9050600061124d8483610bbf565b905047611259826114b2565b60006112654783610bbf565b90506000611288611281600c5488610bbf90919063ffffffff16565b8390610bb3565b905060006112a1600c5483610ba790919063ffffffff16565b905080156112b3576112b3868261160c565b600d546000906112c890610847856002610ba7565b9050801561130c576015546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561130a573d6000803e3d6000fd5b505b47801561134f576014546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561134d573d6000803e3d6000fd5b505b50506008805460ff191690555050505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156106125750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806113b885856116c0565b11156114ab5760006113db6113cd86866116c0565b601354610847908690610bb3565b306000908152600260205260409020549091506113f8908261110e565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114499085815260200190565b60405180910390a36000600f5411801561146d5750600f5461146b86866116c0565b115b15611499576114993061dead611494600f5461084760135489610bb390919063ffffffff16565b610bcb565b6114a38382610bbf565b915050610612565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114e7576114e761197c565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115649190611992565b816001815181106115775761157761197c565b6001600160a01b03928316602091820292909201015260055461159d9130911684610a83565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906115d69085906000908690309042906004016119af565b600060405180830381600087803b1580156115f057600080fd5b505af1158015611604573d6000803e3d6000fd5b505050505050565b6005546116249030906001600160a01b031684610a83565b60055460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611694573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116b99190611a20565b5050505050565b6006546000906001600160a01b03908116908316036116e257506011546104c3565b6006546001600160a01b039081169084160361170157506010546104c3565b5060125492915050565b600060208083528351808285015260005b818110156117385785810183015185820160400152820161171c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461176e57600080fd5b50565b6000806040838503121561178457600080fd5b823561178f81611759565b946020939093013593505050565b6000806000606084860312156117b257600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156117de57600080fd5b83356117e981611759565b925060208401356117f981611759565b929592945050506040919091013590565b60006020828403121561181c57600080fd5b813561061281611759565b600080600080600080600060e0888a03121561184257600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000806040838503121561188657600080fd5b823561189181611759565b915060208301356118a181611759565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156118de57600080fd5b5051919050565b6000602082840312156118f757600080fd5b8151801515811461061257600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104c3576104c3611907565b60008261195157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104c3576104c3611907565b808201808211156104c3576104c3611907565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119a457600080fd5b815161061281611759565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119ff5784516001600160a01b0316835293830193918301916001016119da565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611a3557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200f3cbf4b27b3209102de6f5add43082769cfa2ce692ba1bcf795deb7593978e464736f6c63430008130033

Deployed Bytecode Sourcemap

5098:10524:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7457:67;;;;;;;;;;-1:-1:-1;7517:5:0;;;;;;;;;;;;-1:-1:-1;;;7517:5:0;;;;7457:67;;;;;;;:::i;:::-;;;;;;;;8219:133;;;;;;;;;;-1:-1:-1;8219:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8219:133:0;1023:187:1;8902:303:0;;;;;;;;;;-1:-1:-1;8902:303:0;;;;;:::i;:::-;;:::i;:::-;;8358:127;;;;;;;;;;;;;:::i;:::-;;;1682:25:1;;;1670:2;1655:18;8358:127:0;1536:177:1;13503:309:0;;;;;;;;;;-1:-1:-1;13503:309:0;;;;;:::i;:::-;;:::i;7680:62::-;;;;;;;;;;;;;:::i;1455:87::-;;;;;;;;;;-1:-1:-1;1455:87:0;;;;;:::i;:::-;1510:4;1535:5;-1:-1:-1;;;;;1524:16:0;;;1535:5;;1524:16;;1455:87;7607:67;;;;;;;;;;-1:-1:-1;7607:67:0;;5308:2;2573:36:1;;2561:2;2546:18;7607:67:0;2431:184:1;9213:488:0;;;;;;;;;;-1:-1:-1;9213:488:0;;;;;:::i;:::-;;:::i;5587:22::-;;;;;;;;;;-1:-1:-1;5587:22:0;;;;-1:-1:-1;;;;;5587:22:0;;;;;;-1:-1:-1;;;;;3381:32:1;;;3363:51;;3351:2;3336:18;5587:22:0;3217:203:1;6690:53:0;;;;;;;;;;;;;;;;5498:51;;;;;;;;;;-1:-1:-1;5498:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7832:103;;;;;;;;;;-1:-1:-1;7832:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7915:18:0;7898:7;7915:18;;;:9;:18;;;;;;;7832:103;1665:106;;;;;;;;;;;;;:::i;10244:237::-;;;;;;;;;;-1:-1:-1;10244:237:0;;;;;:::i;:::-;;:::i;7748:78::-;;;;;;;;;;-1:-1:-1;7800:7:0;7818:5;-1:-1:-1;;;;;7818:5:0;7748:78;;7530:71;;;;;;;;;;-1:-1:-1;7592:7:0;;;;;;;;;;;;-1:-1:-1;;;7592:7:0;;;;7530:71;;9709:527;;;;;;;;;;-1:-1:-1;9709:527:0;;;;;:::i;:::-;;:::i;7941:139::-;;;;;;;;;;-1:-1:-1;7941:139:0;;;;;:::i;:::-;;:::i;6632:51::-;;;;;;;;;;;;;;;;8086:127;;;;;;;;;;-1:-1:-1;8086:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8184:18:0;;;8167:7;8184:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8086:127;1548:111;;;;;;;;;;-1:-1:-1;1548:111:0;;;;;:::i;:::-;;:::i;6750:52::-;;;;;;;;;;;;;;;;8219:133;8294:4;8301:37;8310:10;8322:7;8331:6;8301:8;:37::i;:::-;-1:-1:-1;8346:4:0;8219:133;;;;;:::o;8902:303::-;1510:4;1535:5;-1:-1:-1;;;;;1535:5:0;1422:10;1524:16;1406:38;;;;-1:-1:-1;;;1406:38:0;;;;;;;:::i;:::-;;;;;;;;;9027:9:::1;:23:::0;;;9071:7:::1;::::0;:48:::1;::::0;9111:6:::1;::::0;9071:27:::1;::::0;9083:14;9071:11:::1;:27::i;:::-;:31:::0;::::1;:48::i;:::-;9052:16;:67:::0;9148:7:::1;::::0;:49:::1;::::0;9189:6:::1;::::0;9148:28:::1;::::0;9160:15;9148:11:::1;:28::i;:49::-;9131:14;:66:::0;-1:-1:-1;;;8902:303:0:o;8358:127::-;7915:9;:18;;;;6319:42;8411:7;7915:18;;;;;8428:7;;8411;;8428:55;;7915:18;;8428:28;;:7;:11;:28::i;:::-;:32;;:55::i;:::-;8421:62;;8358:127;:::o;13503:309::-;13601:4;13618:36;13628:6;13636:9;13647:6;13618:9;:36::i;:::-;13665:117;13674:6;13682:10;13694:87;13730:6;13694:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13694:19:0;;;;;;:11;:19;;;;;;;;13714:10;13694:31;;;;;;;;;:87;:35;:87::i;:::-;13665:8;:117::i;:::-;-1:-1:-1;13800:4:0;13503:309;;;;;;:::o;7680:62::-;1510:4;1535:5;-1:-1:-1;;;;;1535:5:0;1422:10;1524:16;1406:38;;;;-1:-1:-1;;;1406:38:0;;;;;;;:::i;:::-;7724:9:::1;:16:::0;;-1:-1:-1;;;;7724:16:0::1;-1:-1:-1::0;;;7724:16:0::1;::::0;;7680:62::o;9213:488::-;1510:4;1535:5;-1:-1:-1;;;;;1535:5:0;1422:10;1524:16;1406:38;;;;-1:-1:-1;;;1406:38:0;;;;;;;:::i;:::-;9387:12:::1;:25:::0;;;9414:12:::1;:25:::0;;;9441:7:::1;:15:::0;;;9458:14:::1;:29:::0;;;9489:8:::1;:17:::0;;;9508:7:::1;:15:::0;;;9525:11:::1;:20:::0;;;9576:11:::1;::::0;9564:23;::::1;::::0;::::1;::::0;:49:::1;;;9602:11;;9591:7;;:22;;9564:49;:79;;;;;9632:11;;9617;;:26;;9564:79;9556:137;;;::::0;-1:-1:-1;;;9556:137:0;;4614:2:1;9556:137:0::1;::::0;::::1;4596:21:1::0;4653:2;4633:18;;;4626:30;4692:34;4672:18;;;4665:62;-1:-1:-1;;;4743:18:1;;;4736:43;4796:19;;9556:137:0::1;4412:409:1::0;9556:137:0::1;9213:488:::0;;;;;;;:::o;1665:106::-;1510:4;1535:5;-1:-1:-1;;;;;1535:5:0;1422:10;1524:16;1406:38;;;;-1:-1:-1;;;1406:38:0;;;;;;;:::i;:::-;1728:1:::1;1712:18:::0;;-1:-1:-1;;;;;;1712:18:0::1;::::0;;1737:32:::1;::::0;3363:51:1;;;1737:32:0::1;::::0;3351:2:1;3336:18;1737:32:0::1;;;;;;;1665:106::o:0;10244:237::-;1510:4;1535:5;-1:-1:-1;;;;;1535:5:0;1422:10;1524:16;1406:38;;;;-1:-1:-1;;;1406:38:0;;;;;;;:::i;:::-;10343:41:::1;::::0;-1:-1:-1;;;10343:41:0;;10378:4:::1;10343:41;::::0;::::1;3363:51:1::0;10325:15:0::1;::::0;10343:63:::1;::::0;10402:3:::1;::::0;10343:54:::1;::::0;10389:7;;-1:-1:-1;;;;;10343:26:0;::::1;::::0;::::1;::::0;3336:18:1;;10343:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:63::-;10443:20;::::0;10417:56:::1;::::0;-1:-1:-1;;;10417:56:0;;-1:-1:-1;;;;;10443:20:0;;::::1;10417:56;::::0;::::1;5189:51:1::0;5256:18;;;5249:34;;;10325:81:0;;-1:-1:-1;10417:25:0;::::1;::::0;::::1;::::0;5162:18:1;;10417:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10314:167;10244:237:::0;;:::o;9709:527::-;1510:4;1535:5;-1:-1:-1;;;;;1535:5:0;1422:10;1524:16;1406:38;;;;-1:-1:-1;;;1406:38:0;;;;;;;:::i;:::-;9815:13:::1;9831:28;9853:5;9831:17;9843:4;9831:7;;:11;;:17;;;;:::i;:28::-;9815:44;;9861:19;9883:29;9906:5;9883:18;9895:5;9883:7;;:11;;:18;;;;:::i;:29::-;9861:51;;9914:17;9934:31;9959:5;9934:20;9946:7;9934;;:11;;:20;;;;:::i;:31::-;9976:8;:16:::0;;;9994:10:::1;:24:::0;;;10020:9:::1;:21:::0;;;9914:51;-1:-1:-1;;10068:30:0::1;10093:4;10068:20;10086:1;10068:13;:11;:13::i;:30::-;10052:46;;10126:5;10117;:14;;:38;;;;;10150:5;10135:11;:20;;10117:38;:60;;;;;10172:5;10159:9;:18;;10117:60;10109:119;;;::::0;-1:-1:-1;;;10109:119:0;;5778:2:1;10109:119:0::1;::::0;::::1;5760:21:1::0;5817:2;5797:18;;;5790:30;5856:34;5836:18;;;5829:62;-1:-1:-1;;;5907:18:1;;;5900:44;5961:19;;10109:119:0::1;5576:410:1::0;7941:139:0;8019:4;8026:40;8036:10;8048:9;8059:6;8026:9;:40::i;1548:111::-;1510:4;1535:5;-1:-1:-1;;;;;1535:5:0;1422:10;1524:16;1406:38;;;;-1:-1:-1;;;1406:38:0;;;;;;;:::i;:::-;1614:5:::1;:11:::0;;-1:-1:-1;;;;;;1614:11:0::1;-1:-1:-1::0;;;;;1614:11:0;::::1;::::0;;::::1;::::0;;;1632:25:::1;::::0;3363:51:1;;;1632:25:0::1;::::0;3351:2:1;3336:18;1632:25:0::1;;;;;;;1548:111:::0;:::o;13820:335::-;-1:-1:-1;;;;;13913:19:0;;13905:68;;;;-1:-1:-1;;;13905:68:0;;6409:2:1;13905:68:0;;;6391:21:1;6448:2;6428:18;;;6421:30;6487:34;6467:18;;;6460:62;-1:-1:-1;;;6538:18:1;;;6531:34;6582:19;;13905:68:0;6207:400:1;13905:68:0;-1:-1:-1;;;;;13992:21:0;;13984:68;;;;-1:-1:-1;;;13984:68:0;;6814:2:1;13984:68:0;;;6796:21:1;6853:2;6833:18;;;6826:30;6892:34;6872:18;;;6865:62;-1:-1:-1;;;6943:18:1;;;6936:32;6985:19;;13984:68:0;6612:398:1;13984:68:0;-1:-1:-1;;;;;14063:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14115:32;;1682:25:1;;;14115:32:0;;1655:18:1;14115:32:0;;;;;;;13820:335;;;:::o;4039:98::-;4097:7;4124:5;4128:1;4124;:5;:::i;4145:98::-;4203:7;4230:5;4234:1;4230;:5;:::i;3933:98::-;3991:7;4018:5;4022:1;4018;:5;:::i;12030:1465::-;-1:-1:-1;;;;;12127:20:0;;12119:70;;;;-1:-1:-1;;;12119:70:0;;7877:2:1;12119:70:0;;;7859:21:1;7916:2;7896:18;;;7889:30;7955:34;7935:18;;;7928:62;-1:-1:-1;;;8006:18:1;;;7999:35;8051:19;;12119:70:0;7675:401:1;12119:70:0;-1:-1:-1;;;;;12208:23:0;;12200:71;;;;-1:-1:-1;;;12200:71:0;;8283:2:1;12200:71:0;;;8265:21:1;8322:2;8302:18;;;8295:30;8361:34;8341:18;;;8334:62;-1:-1:-1;;;8412:18:1;;;8405:33;8455:19;;12200:71:0;8081:399:1;12200:71:0;-1:-1:-1;;;;;12286:26:0;;;;;;:18;:26;;;;;;;;12285:27;:61;;;;-1:-1:-1;;;;;;12317:29:0;;;;;;:18;:29;;;;;;;;12316:30;12285:61;12282:99;;;12356:9;;-1:-1:-1;;;12356:9:0;;;;12348:31;;;;-1:-1:-1;;;12348:31:0;;8687:2:1;12348:31:0;;;8669:21:1;8726:1;8706:18;;;8699:29;-1:-1:-1;;;8744:18:1;;;8737:39;8793:18;;12348:31:0;8485:332:1;12348:31:0;-1:-1:-1;;;;;12395:26:0;;;;;;:18;:26;;;;;;;;12394:27;:61;;;;-1:-1:-1;;;;;;12426:29:0;;;;;;:18;:29;;;;;;;;12425:30;12394:61;:94;;;;-1:-1:-1;12480:7:0;;-1:-1:-1;;;;;12459:29:0;;;12480:7;;12459:29;;12394:94;:124;;;;-1:-1:-1;;;;;;12492:26:0;;6319:42;12492:26;;12394:124;12391:231;;;12576:9;;-1:-1:-1;;;;;12539:20:0;;;;;;:9;:20;;;;;;:32;;12564:6;12539:24;:32::i;:::-;12538:47;;12530:90;;;;-1:-1:-1;;;12530:90:0;;9024:2:1;12530:90:0;;;9006:21:1;9063:2;9043:18;;;9036:30;9102:32;9082:18;;;9075:60;9152:18;;12530:90:0;8822:354:1;12530:90:0;12645:7;;-1:-1:-1;;;;;12635:17:0;;;12645:7;;12635:17;12632:137;;12672:10;;12662:6;:20;;:50;;;-1:-1:-1;;;;;;12686:26:0;;;;;;:18;:26;;;;;;;;12662:50;:83;;;-1:-1:-1;;;;;;12716:29:0;;;;;;:18;:29;;;;;;;;12662:83;12654:113;;;;-1:-1:-1;;;12654:113:0;;9383:2:1;12654:113:0;;;9365:21:1;9422:2;9402:18;;;9395:30;-1:-1:-1;;;9441:18:1;;;9434:47;9498:18;;12654:113:0;9181:341:1;12654:113:0;12797:8;;12787:6;:18;;:48;;;-1:-1:-1;;;;;;12809:26:0;;;;;;:18;:26;;;;;;;;12787:48;:81;;;-1:-1:-1;;;;;;12839:29:0;;;;;;:18;:29;;;;;;;;12787:81;12779:111;;;;-1:-1:-1;;;12779:111:0;;9383:2:1;12779:111:0;;;9365:21:1;9422:2;9402:18;;;9395:30;-1:-1:-1;;;9441:18:1;;;9434:47;9498:18;;12779:111:0;9181:341:1;12779:111:0;12918:7;;-1:-1:-1;;;;;12905:20:0;;;12918:7;;12905:20;:51;;;;-1:-1:-1;;;;;;12930:26:0;;;;;;:18;:26;;;;;;;;12929:27;12905:51;12902:84;;;12982:1;12958:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;12902:84:0;12999:37;13010:6;13018:9;13029:6;12999:10;:37::i;:::-;12996:134;;;13075:4;7898:7;7915:18;;;:9;:18;;;;;;13038:63;;13053:47;;13083:16;;13053:3;:47::i;:::-;13038:14;:63::i;:::-;13126:1;13103:12;:25;12996:134;13145:9;;-1:-1:-1;;;13145:9:0;;;;13144:10;;:41;;-1:-1:-1;;;;;;13159:26:0;;;;;;:18;:26;;;;;;;;13158:27;13144:41;13140:101;;;-1:-1:-1;;;;;13209:17:0;;;;;;:9;:17;;;;;;:29;;13231:6;13209:21;:29::i;:::-;-1:-1:-1;;;;;13189:17:0;;;;;;:9;:17;;;;;:49;13140:101;13251:22;13276:32;13290:6;13298:9;13276:13;:32::i;:::-;:78;;13348:6;13276:78;;;13311:34;13319:6;13327:9;13338:6;13311:7;:34::i;:::-;-1:-1:-1;;;;;13388:20:0;;;;;;:9;:20;;;;;;13251:103;;-1:-1:-1;13388:40:0;;13251:103;13388:24;:40::i;:::-;-1:-1:-1;;;;;13365:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13444:43;;;;;;;;;;13472:14;1682:25:1;;1670:2;1655:18;;1536:177;13444:43:0;;;;;;;;12108:1387;12030:1465;;;:::o;4357:240::-;4477:7;4538:12;4530:6;;;;4522:29;;;;-1:-1:-1;;;4522:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;4573:5:0;;;4357:240::o;3827:98::-;3885:7;3912:5;3916:1;3912;:5;:::i;8493:401::-;8630:14;;8695:4;8587;7915:18;;;:9;:18;;;;;;8738:7;;8587:4;;8620:24;;;;;-1:-1:-1;;8677:42:0;;8738:7;;8737:8;:22;;;;-1:-1:-1;8749:10:0;;-1:-1:-1;;;8749:10:0;;;;8737:22;:35;;;;-1:-1:-1;8763:9:0;;-1:-1:-1;;;8763:9:0;;;;8737:35;:47;;;;;8776:8;8737:47;:78;;;;-1:-1:-1;;;;;;8789:26:0;;;;;;:18;:26;;;;;;;;8788:27;8737:78;:102;;;;-1:-1:-1;8832:7:0;;-1:-1:-1;;;;;8819:20:0;;;8832:7;;8819:20;8737:102;:131;;;;;8859:9;;8843:12;;:25;;8737:131;:149;;;;;8872:14;8737:149;8730:156;8493:401;-1:-1:-1;;;;;;8493:401:0:o;11917:105::-;11974:7;12004:1;12000;:5;11999:15;;12013:1;11999:15;;;-1:-1:-1;12009:1:0;11917:105;-1:-1:-1;11917:105:0:o;10489:1063::-;5927:7;:14;;-1:-1:-1;;5927:14:0;5937:4;5927:14;;;;;;10626::::1;::::0;10608:12:::1;::::0;10584::::1;::::0;5927:7;;10583:66:::1;::::0;10647:1:::1;::::0;10584:57:::1;::::0;10626:14;;10584:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;10583:66::-;10560:89;;10660:32;10695:42;10724:12;10695:24;10706:12;;10695:6;:10;;:24;;;;:::i;:42::-;10660:77:::0;-1:-1:-1;10748:14:0::1;10765:36;:6:::0;10660:77;10765:10:::1;:36::i;:::-;10748:53:::0;-1:-1:-1;10837:21:0::1;10869:24;10748:53:::0;10869:16:::1;:24::i;:::-;10904:20;10927:41;:21;10953:14:::0;10927:25:::1;:41::i;:::-;10904:64;;10979:19;11000:48;11017:30;11034:12;;11017;:16;;:30;;;;:::i;:::-;11000:12:::0;;:16:::1;:48::i;:::-;10979:69;;11059:29;11091;11107:12;;11091:11;:15;;:29;;;;:::i;:::-;11059:61:::0;-1:-1:-1;11134:34:0;;11131:103:::1;;11170:61;11183:24;11209:21;11170:12;:61::i;:::-;11290:12;::::0;11244:20:::1;::::0;11267:36:::1;::::0;:18:::1;:11:::0;11283:1:::1;11267:15;:18::i;:36::-;11244:59:::0;-1:-1:-1;11317:16:0;;11314:73:::1;;11343:18;::::0;11335:50:::1;::::0;-1:-1:-1;;;;;11343:18:0;;::::1;::::0;11335:50;::::1;;;::::0;11372:12;;11343:18:::1;11335:50:::0;11343:18;11335:50;11372:12;11343:18;11335:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11314:73;11423:21;11458:28:::0;;11455:90:::1;;11496:20;::::0;11488:55:::1;::::0;-1:-1:-1;;;;;11496:20:0;;::::1;::::0;11488:55;::::1;;;::::0;11527:15;;11496:20:::1;11488:55:::0;11496:20;11488:55;11527:15;11496:20;11488:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11455:90;-1:-1:-1::0;;5946:7:0;:15;;-1:-1:-1;;5946:15:0;;;-1:-1:-1;;;;;;;;10489:1063:0:o;14614:174::-;-1:-1:-1;;;;;14720:26:0;;14695:4;14720:26;;;:18;:26;;;;;;;;14719:27;:61;;;;-1:-1:-1;;;;;;;14751:29:0;;;;;:18;:29;;;;;;;;14750:30;;14614:174;-1:-1:-1;14614:174:0:o;15029:590::-;15115:7;15171:1;15138:30;15150:6;15158:9;15138:11;:30::i;:::-;:34;15135:462;;;15184:17;15204:59;15232:30;15244:6;15252:9;15232:11;:30::i;:::-;15215:11;;15204:23;;:6;;:10;:23::i;:59::-;15319:4;15301:24;;;;:9;:24;;;;;;15184:79;;-1:-1:-1;15301:39:0;;15184:79;15301:28;:39::i;:::-;15292:4;15274:24;;;;:9;:24;;;;;;;:66;;;;15356:42;;-1:-1:-1;;;;;15356:42:0;;;;;;;15388:9;1682:25:1;;1670:2;1655:18;;1536:177;15356:42:0;;;;;;;;15430:1;15412:7;;:20;:64;;;;;15469:7;;15436:30;15448:6;15456:9;15436:11;:30::i;:::-;:40;15412:64;15409:148;;;15478:77;15496:4;6319:42;15518:36;15546:7;;15518:23;15529:11;;15518:6;:10;;:23;;;;:::i;:36::-;15478:9;:77::i;:::-;15574:21;:6;15585:9;15574:10;:21::i;:::-;15567:28;;;;;15135:462;-1:-1:-1;15605:6:0;15029:590;-1:-1:-1;;15029:590:0:o;14163:443::-;14253:16;;;14267:1;14253:16;;;;;;;;14229:21;;14253:16;;;;;;;;;;-1:-1:-1;14253:16:0;14229:40;;14298:4;14280;14285:1;14280:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14280:23:0;;;:7;;;;;;;;;;:23;;;;14324:9;;:16;;;-1:-1:-1;;;14324:16:0;;;;:9;;;;;:14;;:16;;;;;14280:7;;14324:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14314:4;14319:1;14314:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14314:26:0;;;:7;;;;;;;;;:26;14383:9;;14351:56;;14368:4;;14383:9;14395:11;14351:8;:56::i;:::-;14418:9;;:180;;-1:-1:-1;;;14418:180:0;;-1:-1:-1;;;;;14418:9:0;;;;:60;;:180;;14493:11;;14418:9;;14535:4;;14562;;14582:15;;14418:180;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14218:388;14163:443;:::o;11560:349::-;11673:9;;11641:56;;11658:4;;-1:-1:-1;;;;;11673:9:0;11685:11;11641:8;:56::i;:::-;11708:9;;11852:18;;11708:193;;-1:-1:-1;;;11708:193:0;;11774:4;11708:193;;;11503:34:1;11553:18;;;11546:34;;;11708:9:0;11596:18:1;;;11589:34;;;11639:18;;;11632:34;-1:-1:-1;;;;;11852:18:0;;;11682:19:1;;;11675:44;11885:15:0;11735:19:1;;;11728:35;11708:9:0;;;:25;;11741:9;;11437:19:1;;11708:193:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11560:349;;:::o;14796:225::-;14911:7;;14875;;-1:-1:-1;;;;;14911:7:0;;;14898:20;;;;14895:41;;-1:-1:-1;14927:7:0;;14920:14;;14895:41;14959:7;;-1:-1:-1;;;;;14959:7:0;;;14949:17;;;;14946:39;;-1:-1:-1;14975:8:0;;14968:15;;14946:39;-1:-1:-1;15002:11:0;;14796:225;;;;:::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:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:316::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;-1:-1:-1;;1400:23:1;;;1470:2;1455:18;;1442:32;;-1:-1:-1;1521:2:1;1506:18;;;1493:32;;1215:316;-1:-1:-1;1215:316:1:o;1718:456::-;1795:6;1803;1811;1864:2;1852:9;1843:7;1839:23;1835:32;1832:52;;;1880:1;1877;1870:12;1832:52;1919:9;1906:23;1938:31;1963:5;1938:31;:::i;:::-;1988:5;-1:-1:-1;2045:2:1;2030:18;;2017:32;2058:33;2017:32;2058:33;:::i;:::-;1718:456;;2110:7;;-1:-1:-1;;;2164:2:1;2149:18;;;;2136:32;;1718:456::o;2179:247::-;2238:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:52;;;2307:1;2304;2297:12;2259:52;2346:9;2333:23;2365:31;2390:5;2365:31;:::i;2620:592::-;2733:6;2741;2749;2757;2765;2773;2781;2834:3;2822:9;2813:7;2809:23;2805:33;2802:53;;;2851:1;2848;2841:12;2802:53;-1:-1:-1;;2874:23:1;;;2944:2;2929:18;;2916:32;;-1:-1:-1;2995:2:1;2980:18;;2967:32;;3046:2;3031:18;;3018:32;;-1:-1:-1;3097:3:1;3082:19;;3069:33;;-1:-1:-1;3149:3:1;3134:19;;3121:33;;-1:-1:-1;3201:3:1;3186:19;3173:33;;-1:-1:-1;2620:592:1;-1:-1:-1;2620:592:1:o;3425:388::-;3493:6;3501;3554:2;3542:9;3533:7;3529:23;3525:32;3522:52;;;3570:1;3567;3560:12;3522:52;3609:9;3596:23;3628:31;3653:5;3628:31;:::i;:::-;3678:5;-1:-1:-1;3735:2:1;3720:18;;3707:32;3748:33;3707:32;3748:33;:::i;:::-;3800:7;3790:17;;;3425:388;;;;;:::o;4078:329::-;4280:2;4262:21;;;4319:1;4299:18;;;4292:29;-1:-1:-1;;;4352:2:1;4337:18;;4330:36;4398:2;4383:18;;4078:329::o;4826:184::-;4896:6;4949:2;4937:9;4928:7;4924:23;4920:32;4917:52;;;4965:1;4962;4955:12;4917:52;-1:-1:-1;4988:16:1;;4826:184;-1:-1:-1;4826:184:1:o;5294:277::-;5361:6;5414:2;5402:9;5393:7;5389:23;5385:32;5382:52;;;5430:1;5427;5420:12;5382:52;5462:9;5456:16;5515:5;5508:13;5501:21;5494:5;5491:32;5481:60;;5537:1;5534;5527:12;7015:127;7076:10;7071:3;7067:20;7064:1;7057:31;7107:4;7104:1;7097:15;7131:4;7128:1;7121:15;7147:168;7220:9;;;7251;;7268:15;;;7262:22;;7248:37;7238:71;;7289:18;;:::i;7320:217::-;7360:1;7386;7376:132;;7430:10;7425:3;7421:20;7418:1;7411:31;7465:4;7462:1;7455:15;7493:4;7490:1;7483:15;7376:132;-1:-1:-1;7522:9:1;;7320:217::o;7542:128::-;7609:9;;;7630:11;;;7627:37;;;7644:18;;:::i;9527:125::-;9592:9;;;9613:10;;;9610:36;;;9626:18;;:::i;9789:127::-;9850:10;9845:3;9841:20;9838:1;9831:31;9881:4;9878:1;9871:15;9905:4;9902:1;9895:15;9921:251;9991:6;10044:2;10032:9;10023:7;10019:23;10015:32;10012:52;;;10060:1;10057;10050:12;10012:52;10092:9;10086:16;10111:31;10136:5;10111:31;:::i;10177:980::-;10439:4;10487:3;10476:9;10472:19;10518:6;10507:9;10500:25;10544:2;10582:6;10577:2;10566:9;10562:18;10555:34;10625:3;10620:2;10609:9;10605:18;10598:31;10649:6;10684;10678:13;10715:6;10707;10700:22;10753:3;10742:9;10738:19;10731:26;;10792:2;10784:6;10780:15;10766:29;;10813:1;10823:195;10837:6;10834:1;10831:13;10823:195;;;10902:13;;-1:-1:-1;;;;;10898:39:1;10886:52;;10993:15;;;;10958:12;;;;10934:1;10852:9;10823:195;;;-1:-1:-1;;;;;;;11074:32:1;;;;11069:2;11054:18;;11047:60;-1:-1:-1;;;11138:3:1;11123:19;11116:35;11035:3;10177:980;-1:-1:-1;;;10177:980:1:o;11774:306::-;11862:6;11870;11878;11931:2;11919:9;11910:7;11906:23;11902:32;11899:52;;;11947:1;11944;11937:12;11899:52;11976:9;11970:16;11960:26;;12026:2;12015:9;12011:18;12005:25;11995:35;;12070:2;12059:9;12055:18;12049:25;12039:35;;11774:306;;;;;:::o

Swarm Source

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