ETH Price: $3,452.99 (-1.13%)
Gas: 8 Gwei

Token

Dexcury Protocol (DEX)
 

Overview

Max Total Supply

1,000,000,000 DEX

Holders

113

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
853,192.422783495 DEX

Value
$0.00
0x8f4980d8c999f76496460a5437c983ad2f2fe06f
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:
DEX

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-09-09
*/

// SPDX-License-Identifier: MIT

/*
Dexury, an Automated Market Maker (AMM), tackles the Impermanent Loss (IL) problem and, in certain instances, converts it into Impermanent Gain (IG).

Website: https://dexury.pro
*/

pragma solidity 0.8.19;

library SafeMath {
    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;
        }
    }
}

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

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);}
    event OwnershipTransferred(address owner);
}

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

interface IUniswapFactory{
    function createPair(address tokenA, address tokenB) external returns (address uniswapPair);
}

contract DEX is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode"Dexcury Protocol";
    string private constant _symbol = unicode"DEX";

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExeptFromFee;

    IUniswapRouter uniswapRouter;
    address public uniswapPair;
    bool private enableTrade = false;
    bool private swapEnabled = true;
    uint256 private swappingTime;
    bool private swapping;
    uint256 swapAmountAt;
    uint8 private constant _decimals = 9;
    uint256 private _tSupply = 1000000000 * (10 ** _decimals);

    uint256 private swappingThreshold = ( _tSupply * 1000 ) / 100000;
    uint256 private minTokenSwapping = ( _tSupply * 10 ) / 100000;
    modifier lockSwapping {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 100;
    uint256 private burnFee = 0;
    uint256 private totalFee = 1400;
    uint256 private sellFee = 1400;
    uint256 private transferFee = 1400;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal devAddress = 0x3Aaa038ab048173b2a7FCAf6A4EF0c2937386368; 
    address internal taxAddress = 0x3Aaa038ab048173b2a7FCAf6A4EF0c2937386368;
    address internal liquidityAddress = 0x3Aaa038ab048173b2a7FCAf6A4EF0c2937386368;
    uint256 public _maxTxAmount = ( _tSupply * 300 ) / 10000;
    uint256 public _maxSellAmount = ( _tSupply * 300 ) / 10000;
    uint256 public _maxWalletToken = ( _tSupply * 300 ) / 10000;

    constructor() Ownable(msg.sender) {
        IUniswapRouter _router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IUniswapFactory(_router.factory()).createPair(address(this), _router.WETH());
        uniswapRouter = _router; uniswapPair = _pair;
        isExeptFromFee[taxAddress] = true;
        isExeptFromFee[devAddress] = true;
        isExeptFromFee[liquidityAddress] = true;
        isExeptFromFee[msg.sender] = true;
        _balances[msg.sender] = _tSupply;
        emit Transfer(address(0), msg.sender, _tSupply);
    }

    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 approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    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 startTrading() external onlyOwner {enableTrade = true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function totalSupply() public view override returns (uint256) {return _tSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function getOwner() external view override returns (address) { return owner; }

    function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmountAt = _swapAmount; swappingThreshold = _tSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenSwapping = _tSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify(swappingThreshold);
    }

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

    function swapAndLiquify(uint256 tokens) private lockSwapping {
        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(taxAddress).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(devAddress).transfer(contractBalance);}
    }

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

    function setTransactionRequirements(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.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        taxAddress = _marketing; liquidityAddress = _liquidity; devAddress = _development;
        isExeptFromFee[_marketing] = true; isExeptFromFee[_liquidity] = true; isExeptFromFee[_development] = true;
    }

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

    function shouldSwapping(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenSwapping;
        bool aboveThreshold = balanceOf(address(this)) >= swappingThreshold;
        return !swapping && swapEnabled && enableTrade && aboveMin && !isExeptFromFee[sender] && recipient == uniswapPair && swappingTime >= swapAmountAt && aboveThreshold;
    }

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

    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 takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (isExeptFromFee[recipient]) {return _maxTxAmount;}
        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;
    }

    function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _tSupply.mul(_buy).div(10000); uint256 newTransfer = _tSupply.mul(_sell).div(10000); uint256 newWallet = _tSupply.mul(_wallet).div(10000);
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = 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 shouldTakingFee(address sender, address recipient) internal view returns (bool) {
        return !isExeptFromFee[sender] && !isExeptFromFee[recipient];
    }    
    
    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 _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");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isExeptFromFee[sender] && !isExeptFromFee[recipient]){require(enableTrade, "enableTrade");}
        if(!isExeptFromFee[sender] && !isExeptFromFee[recipient] && recipient != address(uniswapPair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != uniswapPair){require(amount <= _maxSellAmount || isExeptFromFee[sender] || isExeptFromFee[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount || isExeptFromFee[sender] || isExeptFromFee[recipient], "TX Limit Exceeded"); 
        if(recipient == uniswapPair && !isExeptFromFee[sender]){swappingTime += uint256(1);}
        if(shouldSwapping(sender, recipient, amount)){swapAndLiquify(swappingThreshold); swappingTime = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = !isExeptFromFee[sender] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
}

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":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"isExeptFromFee","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":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueTokens","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":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","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":[{"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":"setTransactionRequirements","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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005805461ffff60a01b1916600160a81b179055620000266009600a620004ca565b6200003690633b9aca00620004e2565b600955620186a06009546103e86200004f9190620004e2565b6200005b9190620004fc565b600a55620186a0600954600a620000739190620004e2565b6200007f9190620004fc565b600b556000600c819055600d8190556064600e55600f5561057860108190556011819055601255612710601381905560148054733aaa038ab048173b2a7fcaf6a4ef0c29373863686001600160a01b0319918216811790925560158054821683179055601680549091169091179055600954620000ff9061012c620004e2565b6200010b9190620004fc565b60175561271060095461012c620001239190620004e2565b6200012f9190620004fc565b60185561271060095461012c620001479190620004e2565b620001539190620004fc565b6019553480156200016357600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f191906200051f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026591906200051f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d991906200051f565b600480546001600160a01b038086166001600160a01b03199283161790925560058054838516921691909117905560155481166000908152600360209081526040808320805460ff199081166001908117909255601454861685528285208054821683179055601654909516845281842080548616821790553380855282852080549096168217909555600954925280832082905551939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620003a591815260200190565b60405180910390a350506200054a565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200040c578160001904821115620003f057620003f0620003b5565b80851615620003fe57918102915b93841c9390800290620003d0565b509250929050565b6000826200042557506001620004c4565b816200043457506000620004c4565b81600181146200044d5760028114620004585762000478565b6001915050620004c4565b60ff8411156200046c576200046c620003b5565b50506001821b620004c4565b5060208310610133831016604e8410600b84101617156200049d575081810a620004c4565b620004a98383620003cb565b8060001904821115620004c057620004c0620003b5565b0290505b92915050565b6000620004db60ff84168362000414565b9392505050565b8082028115828204841417620004c457620004c4620003b5565b6000826200051a57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200053257600080fd5b81516001600160a01b0381168114620004db57600080fd5b611bd3806200055a6000396000f3fe60806040526004361061014f5760003560e01c80637cca52fe116100b65780639d8740cb1161006f5780639d8740cb146103f6578063a9059cbb14610416578063c816841b14610436578063cb7f97d714610456578063dd62ed3e14610476578063f2fde38b146104bc57600080fd5b80637cca52fe1461032c5780637d1db4a514610342578063893d20e8146103585780639213c3581461038a57806395d89b41146103aa5780639cc35351146103d657600080fd5b8063313ce56711610108578063313ce5671461025f57806351bc3c851461027b578063573761981461029057806370a08231146102b057806378109e54146102e65780637c74dbad146102fc57600080fd5b806306fdde031461015b578063095ea7b3146101a657806318160ddd146101d657806323b872dd146101f9578063293230b8146102195780632f54bf6e1461023057600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152601081526f11195e18dd5c9e48141c9bdd1bd8dbdb60821b60208201525b60405161019d91906117e7565b60405180910390f35b3480156101b257600080fd5b506101c66101c136600461184d565b6104dc565b604051901515815260200161019d565b3480156101e257600080fd5b506101eb6104f3565b60405190815260200161019d565b34801561020557600080fd5b506101c6610214366004611879565b610564565b34801561022557600080fd5b5061022e6105ce565b005b34801561023c57600080fd5b506101c661024b3660046118ba565b6000546001600160a01b0391821691161490565b34801561026b57600080fd5b506040516009815260200161019d565b34801561028757600080fd5b5061022e610616565b34801561029c57600080fd5b5061022e6102ab36600461184d565b61064d565b3480156102bc57600080fd5b506101eb6102cb3660046118ba565b6001600160a01b031660009081526001602052604090205490565b3480156102f257600080fd5b506101eb60195481565b34801561030857600080fd5b506101c66103173660046118ba565b60036020526000908152604090205460ff1681565b34801561033857600080fd5b506101eb60185481565b34801561034e57600080fd5b506101eb60175481565b34801561036457600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161019d565b34801561039657600080fd5b5061022e6103a53660046118d7565b61077a565b3480156103b657600080fd5b506040805180820190915260038152620888ab60eb1b6020820152610190565b3480156103e257600080fd5b5061022e6103f1366004611922565b610820565b34801561040257600080fd5b5061022e610411366004611922565b610955565b34801561042257600080fd5b506101c661043136600461184d565b6109bb565b34801561044257600080fd5b50600554610372906001600160a01b031681565b34801561046257600080fd5b5061022e61047136600461194e565b6109c8565b34801561048257600080fd5b506101eb61049136600461199a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156104c857600080fd5b5061022e6104d73660046118ba565b610abf565b60006104e9338484610b3d565b5060015b92915050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54600954919261055f9290916105599190610c61565b90610c61565b905090565b6000610571848484610c6d565b6105c384336105be85604051806060016040528060288152602001611b76602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906111bc565b610b3d565b5060015b9392505050565b6000546001600160a01b031633146106015760405162461bcd60e51b81526004016105f8906119d3565b60405180910390fd5b6005805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146106405760405162461bcd60e51b81526004016105f8906119d3565b61064b600a546111e8565b565b6000546001600160a01b031633146106775760405162461bcd60e51b81526004016105f8906119d3565b6040516370a0823160e01b81523060048201526000906106fb906064906106f59085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156106cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ef91906119f3565b90611365565b90611371565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107749190611a0c565b50505050565b6000546001600160a01b031633146107a45760405162461bcd60e51b81526004016105f8906119d3565b601580546001600160a01b039485166001600160a01b031991821681179092556016805494861694821685179055601480549390951692168217909355600092835260036020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b6000546001600160a01b0316331461084a5760405162461bcd60e51b81526004016105f8906119d3565b60006108676127106106f58660095461136590919063ffffffff16565b905060006108866127106106f58660095461136590919063ffffffff16565b905060006108a56127106106f58660095461136590919063ffffffff16565b601784905560188390556019819055905060006108cb6103e86106f560056106ef6104f3565b90508084101580156108dd5750808310155b80156108e95750808210155b61094c5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105f8565b50505050505050565b6000546001600160a01b0316331461097f5760405162461bcd60e51b81526004016105f8906119d3565b600883905560095461099a90620186a0906106f59085611365565b600a556009546109b390620186a0906106f59084611365565b600b55505050565b60006104e9338484610c6d565b6000546001600160a01b031633146109f25760405162461bcd60e51b81526004016105f8906119d3565b600c879055600d869055600f859055600e849055601083905560118290556012819055601354610a23906001611371565b60105411158015610a435750601354610a3d906001611371565b60115411155b8015610a5e5750601354610a58906001611371565b60125411155b61094c5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016105f8565b6000546001600160a01b03163314610ae95760405162461bcd60e51b81526004016105f8906119d3565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610b9f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f8565b6001600160a01b038216610c005760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f8565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105c78284611a44565b6001600160a01b038316610cd15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f8565b6001600160a01b038216610d335760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f8565b6001600160a01b038316600090815260016020526040902054811115610db55760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105f8565b6001600160a01b03831660009081526003602052604090205460ff16158015610df757506001600160a01b03821660009081526003602052604090205460ff16155b15610e4357600554600160a01b900460ff16610e435760405162461bcd60e51b815260206004820152600b60248201526a656e61626c65547261646560a81b60448201526064016105f8565b6001600160a01b03831660009081526003602052604090205460ff16158015610e8557506001600160a01b03821660009081526003602052604090205460ff16155b8015610e9f57506005546001600160a01b03838116911614155b8015610eb657506001600160a01b03821661dead14155b15610f2f576019546001600160a01b038316600090815260016020526040902054610ee1908361137d565b1115610f2f5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105f8565b6005546001600160a01b03848116911614610fd05760185481111580610f6d57506001600160a01b03831660009081526003602052604090205460ff165b80610f9057506001600160a01b03821660009081526003602052604090205460ff165b610fd05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105f8565b60175481111580610ff957506001600160a01b03831660009081526003602052604090205460ff165b8061101c57506001600160a01b03821660009081526003602052604090205460ff165b61105c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105f8565b6005546001600160a01b03838116911614801561109257506001600160a01b03831660009081526003602052604090205460ff16155b156110b0576001600660008282546110aa9190611a57565b90915550505b6110bb838383611389565b156110d1576110cb600a546111e8565b60006006555b6001600160a01b0383166000908152600160205260409020546110f49082610c61565b6001600160a01b038416600090815260016020908152604080832093909355600390529081205460ff16156111295781611134565b611134848484611443565b6001600160a01b03841660009081526001602052604090205490915061115a908261137d565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111ae9085815260200190565b60405180910390a350505050565b600081848411156111e05760405162461bcd60e51b81526004016105f891906117e7565b505050900390565b6007805460ff19166001908117909155600e54600d54600c54600093611222936002936106ef93919261121c92839161137d565b9061137d565b9050600061123f826106f5600c548661136590919063ffffffff16565b9050600061124d8483610c61565b90504761125982611573565b60006112654783610c61565b90506000611288611281600c5488610c6190919063ffffffff16565b8390611371565b905060006112a1600c548361136590919063ffffffff16565b905080156112b3576112b386826116e6565b600d546000906112c8906106ef856002611365565b9050801561130c576015546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561130a573d6000803e3d6000fd5b505b47801561134f576014546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561134d573d6000803e3d6000fd5b505b50506007805460ff191690555050505050505050565b60006105c78284611a6a565b60006105c78284611a81565b60006105c78284611a57565b600b54600a543060009081526001602052604081205460075491938510159211159060ff161580156113c45750600554600160a81b900460ff165b80156113d95750600554600160a01b900460ff165b80156113e25750815b801561140757506001600160a01b03861660009081526003602052604090205460ff16155b801561142057506005546001600160a01b038681169116145b8015611430575060085460065410155b80156114395750805b9695505050505050565b6001600160a01b03821660009081526003602052604081205460ff161561146d57506017546105c7565b6000611479858561179c565b111561156c57600061149c61148e868661179c565b6013546106ef908690611371565b306000908152600160205260409020549091506114b9908261137d565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061150a9085815260200190565b60405180910390a36000600f5411801561152e5750600f5461152c868661179c565b115b1561155a5761155a3061dead611555600f546106ef6013548961137190919063ffffffff16565b610c6d565b6115648382610c61565b9150506105c7565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115a8576115a8611aa3565b60200260200101906001600160a01b031690816001600160a01b031681525050600460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f9190611ab9565b8160018151811061165257611652611aa3565b6001600160a01b0392831660209182029290920101526004546116789130911684610b3d565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac947916116b091869160009187913091429101611ad6565b600060405180830381600087803b1580156116ca57600080fd5b505af11580156116de573d6000803e3d6000fd5b505050505050565b6004546116fe9030906001600160a01b031684610b3d565b6004805460165460405163f305d71960e01b815230938101939093526024830185905260006044840181905260648401526001600160a01b0390811660848401524260a4840152169063f305d71990839060c40160606040518083038185885af1158015611770573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117959190611b47565b5050505050565b6005546000906001600160a01b03908116908316036117be57506011546104ed565b6005546001600160a01b03908116908416036117dd57506010546104ed565b5060125492915050565b600060208083528351808285015260005b81811015611814578581018301518582016040015282016117f8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461184a57600080fd5b50565b6000806040838503121561186057600080fd5b823561186b81611835565b946020939093013593505050565b60008060006060848603121561188e57600080fd5b833561189981611835565b925060208401356118a981611835565b929592945050506040919091013590565b6000602082840312156118cc57600080fd5b81356105c781611835565b6000806000606084860312156118ec57600080fd5b83356118f781611835565b9250602084013561190781611835565b9150604084013561191781611835565b809150509250925092565b60008060006060848603121561193757600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561196957600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080604083850312156119ad57600080fd5b82356119b881611835565b915060208301356119c881611835565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060208284031215611a0557600080fd5b5051919050565b600060208284031215611a1e57600080fd5b815180151581146105c757600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156104ed576104ed611a2e565b808201808211156104ed576104ed611a2e565b80820281158282048414176104ed576104ed611a2e565b600082611a9e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611acb57600080fd5b81516105c781611835565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b265784516001600160a01b031683529383019391830191600101611b01565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611b5c57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201c5cf6ef75a810e286188214aa71d3bf25113e6a9fd117c06d58fca3382e5e3b64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c80637cca52fe116100b65780639d8740cb1161006f5780639d8740cb146103f6578063a9059cbb14610416578063c816841b14610436578063cb7f97d714610456578063dd62ed3e14610476578063f2fde38b146104bc57600080fd5b80637cca52fe1461032c5780637d1db4a514610342578063893d20e8146103585780639213c3581461038a57806395d89b41146103aa5780639cc35351146103d657600080fd5b8063313ce56711610108578063313ce5671461025f57806351bc3c851461027b578063573761981461029057806370a08231146102b057806378109e54146102e65780637c74dbad146102fc57600080fd5b806306fdde031461015b578063095ea7b3146101a657806318160ddd146101d657806323b872dd146101f9578063293230b8146102195780632f54bf6e1461023057600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152601081526f11195e18dd5c9e48141c9bdd1bd8dbdb60821b60208201525b60405161019d91906117e7565b60405180910390f35b3480156101b257600080fd5b506101c66101c136600461184d565b6104dc565b604051901515815260200161019d565b3480156101e257600080fd5b506101eb6104f3565b60405190815260200161019d565b34801561020557600080fd5b506101c6610214366004611879565b610564565b34801561022557600080fd5b5061022e6105ce565b005b34801561023c57600080fd5b506101c661024b3660046118ba565b6000546001600160a01b0391821691161490565b34801561026b57600080fd5b506040516009815260200161019d565b34801561028757600080fd5b5061022e610616565b34801561029c57600080fd5b5061022e6102ab36600461184d565b61064d565b3480156102bc57600080fd5b506101eb6102cb3660046118ba565b6001600160a01b031660009081526001602052604090205490565b3480156102f257600080fd5b506101eb60195481565b34801561030857600080fd5b506101c66103173660046118ba565b60036020526000908152604090205460ff1681565b34801561033857600080fd5b506101eb60185481565b34801561034e57600080fd5b506101eb60175481565b34801561036457600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161019d565b34801561039657600080fd5b5061022e6103a53660046118d7565b61077a565b3480156103b657600080fd5b506040805180820190915260038152620888ab60eb1b6020820152610190565b3480156103e257600080fd5b5061022e6103f1366004611922565b610820565b34801561040257600080fd5b5061022e610411366004611922565b610955565b34801561042257600080fd5b506101c661043136600461184d565b6109bb565b34801561044257600080fd5b50600554610372906001600160a01b031681565b34801561046257600080fd5b5061022e61047136600461194e565b6109c8565b34801561048257600080fd5b506101eb61049136600461199a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156104c857600080fd5b5061022e6104d73660046118ba565b610abf565b60006104e9338484610b3d565b5060015b92915050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54600954919261055f9290916105599190610c61565b90610c61565b905090565b6000610571848484610c6d565b6105c384336105be85604051806060016040528060288152602001611b76602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906111bc565b610b3d565b5060015b9392505050565b6000546001600160a01b031633146106015760405162461bcd60e51b81526004016105f8906119d3565b60405180910390fd5b6005805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146106405760405162461bcd60e51b81526004016105f8906119d3565b61064b600a546111e8565b565b6000546001600160a01b031633146106775760405162461bcd60e51b81526004016105f8906119d3565b6040516370a0823160e01b81523060048201526000906106fb906064906106f59085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156106cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ef91906119f3565b90611365565b90611371565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107749190611a0c565b50505050565b6000546001600160a01b031633146107a45760405162461bcd60e51b81526004016105f8906119d3565b601580546001600160a01b039485166001600160a01b031991821681179092556016805494861694821685179055601480549390951692168217909355600092835260036020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b6000546001600160a01b0316331461084a5760405162461bcd60e51b81526004016105f8906119d3565b60006108676127106106f58660095461136590919063ffffffff16565b905060006108866127106106f58660095461136590919063ffffffff16565b905060006108a56127106106f58660095461136590919063ffffffff16565b601784905560188390556019819055905060006108cb6103e86106f560056106ef6104f3565b90508084101580156108dd5750808310155b80156108e95750808210155b61094c5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105f8565b50505050505050565b6000546001600160a01b0316331461097f5760405162461bcd60e51b81526004016105f8906119d3565b600883905560095461099a90620186a0906106f59085611365565b600a556009546109b390620186a0906106f59084611365565b600b55505050565b60006104e9338484610c6d565b6000546001600160a01b031633146109f25760405162461bcd60e51b81526004016105f8906119d3565b600c879055600d869055600f859055600e849055601083905560118290556012819055601354610a23906001611371565b60105411158015610a435750601354610a3d906001611371565b60115411155b8015610a5e5750601354610a58906001611371565b60125411155b61094c5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016105f8565b6000546001600160a01b03163314610ae95760405162461bcd60e51b81526004016105f8906119d3565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610b9f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f8565b6001600160a01b038216610c005760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f8565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105c78284611a44565b6001600160a01b038316610cd15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f8565b6001600160a01b038216610d335760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f8565b6001600160a01b038316600090815260016020526040902054811115610db55760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105f8565b6001600160a01b03831660009081526003602052604090205460ff16158015610df757506001600160a01b03821660009081526003602052604090205460ff16155b15610e4357600554600160a01b900460ff16610e435760405162461bcd60e51b815260206004820152600b60248201526a656e61626c65547261646560a81b60448201526064016105f8565b6001600160a01b03831660009081526003602052604090205460ff16158015610e8557506001600160a01b03821660009081526003602052604090205460ff16155b8015610e9f57506005546001600160a01b03838116911614155b8015610eb657506001600160a01b03821661dead14155b15610f2f576019546001600160a01b038316600090815260016020526040902054610ee1908361137d565b1115610f2f5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105f8565b6005546001600160a01b03848116911614610fd05760185481111580610f6d57506001600160a01b03831660009081526003602052604090205460ff165b80610f9057506001600160a01b03821660009081526003602052604090205460ff165b610fd05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105f8565b60175481111580610ff957506001600160a01b03831660009081526003602052604090205460ff165b8061101c57506001600160a01b03821660009081526003602052604090205460ff165b61105c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105f8565b6005546001600160a01b03838116911614801561109257506001600160a01b03831660009081526003602052604090205460ff16155b156110b0576001600660008282546110aa9190611a57565b90915550505b6110bb838383611389565b156110d1576110cb600a546111e8565b60006006555b6001600160a01b0383166000908152600160205260409020546110f49082610c61565b6001600160a01b038416600090815260016020908152604080832093909355600390529081205460ff16156111295781611134565b611134848484611443565b6001600160a01b03841660009081526001602052604090205490915061115a908261137d565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111ae9085815260200190565b60405180910390a350505050565b600081848411156111e05760405162461bcd60e51b81526004016105f891906117e7565b505050900390565b6007805460ff19166001908117909155600e54600d54600c54600093611222936002936106ef93919261121c92839161137d565b9061137d565b9050600061123f826106f5600c548661136590919063ffffffff16565b9050600061124d8483610c61565b90504761125982611573565b60006112654783610c61565b90506000611288611281600c5488610c6190919063ffffffff16565b8390611371565b905060006112a1600c548361136590919063ffffffff16565b905080156112b3576112b386826116e6565b600d546000906112c8906106ef856002611365565b9050801561130c576015546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561130a573d6000803e3d6000fd5b505b47801561134f576014546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561134d573d6000803e3d6000fd5b505b50506007805460ff191690555050505050505050565b60006105c78284611a6a565b60006105c78284611a81565b60006105c78284611a57565b600b54600a543060009081526001602052604081205460075491938510159211159060ff161580156113c45750600554600160a81b900460ff165b80156113d95750600554600160a01b900460ff165b80156113e25750815b801561140757506001600160a01b03861660009081526003602052604090205460ff16155b801561142057506005546001600160a01b038681169116145b8015611430575060085460065410155b80156114395750805b9695505050505050565b6001600160a01b03821660009081526003602052604081205460ff161561146d57506017546105c7565b6000611479858561179c565b111561156c57600061149c61148e868661179c565b6013546106ef908690611371565b306000908152600160205260409020549091506114b9908261137d565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061150a9085815260200190565b60405180910390a36000600f5411801561152e5750600f5461152c868661179c565b115b1561155a5761155a3061dead611555600f546106ef6013548961137190919063ffffffff16565b610c6d565b6115648382610c61565b9150506105c7565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115a8576115a8611aa3565b60200260200101906001600160a01b031690816001600160a01b031681525050600460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f9190611ab9565b8160018151811061165257611652611aa3565b6001600160a01b0392831660209182029290920101526004546116789130911684610b3d565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac947916116b091869160009187913091429101611ad6565b600060405180830381600087803b1580156116ca57600080fd5b505af11580156116de573d6000803e3d6000fd5b505050505050565b6004546116fe9030906001600160a01b031684610b3d565b6004805460165460405163f305d71960e01b815230938101939093526024830185905260006044840181905260648401526001600160a01b0390811660848401524260a4840152169063f305d71990839060c40160606040518083038185885af1158015611770573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117959190611b47565b5050505050565b6005546000906001600160a01b03908116908316036117be57506011546104ed565b6005546001600160a01b03908116908416036117dd57506010546104ed565b5060125492915050565b600060208083528351808285015260005b81811015611814578581018301518582016040015282016117f8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461184a57600080fd5b50565b6000806040838503121561186057600080fd5b823561186b81611835565b946020939093013593505050565b60008060006060848603121561188e57600080fd5b833561189981611835565b925060208401356118a981611835565b929592945050506040919091013590565b6000602082840312156118cc57600080fd5b81356105c781611835565b6000806000606084860312156118ec57600080fd5b83356118f781611835565b9250602084013561190781611835565b9150604084013561191781611835565b809150509250925092565b60008060006060848603121561193757600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561196957600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080604083850312156119ad57600080fd5b82356119b881611835565b915060208301356119c881611835565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060208284031215611a0557600080fd5b5051919050565b600060208284031215611a1e57600080fd5b815180151581146105c757600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156104ed576104ed611a2e565b808201808211156104ed576104ed611a2e565b80820281158282048414176104ed576104ed611a2e565b600082611a9e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611acb57600080fd5b81516105c781611835565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b265784516001600160a01b031683529383019391830191600101611b01565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611b5c57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201c5cf6ef75a810e286188214aa71d3bf25113e6a9fd117c06d58fca3382e5e3b64736f6c63430008130033

Deployed Bytecode Sourcemap

3664:11024:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6037:67;;;;;;;;;;-1:-1:-1;6097:5:0;;;;;;;;;;;;-1:-1:-1;;;6097:5:0;;;;6037:67;;;;;;;:::i;:::-;;;;;;;;6260:133;;;;;;;;;;-1:-1:-1;6260:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6260:133:0;1023:187:1;6856:128:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6856:128:0;1215:177:1;12896:309:0;;;;;;;;;;-1:-1:-1;12896:309:0;;;;;:::i;:::-;;:::i;6653:64::-;;;;;;;;;;;;;:::i;:::-;;2361:87;;;;;;;;;;-1:-1:-1;2361:87:0;;;;;:::i;:::-;2416:4;2441:5;-1:-1:-1;;;;;2430:16:0;;;2441:5;;2430:16;;2361:87;6187:67;;;;;;;;;;-1:-1:-1;6187:67:0;;4302:1;2252:36:1;;2240:2;2225:18;6187:67:0;2110:184:1;7403:93:0;;;;;;;;;;;;;:::i;7504:233::-;;;;;;;;;;-1:-1:-1;7504:233:0;;;;;:::i;:::-;;:::i;6399:103::-;;;;;;;;;;-1:-1:-1;6399:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6482:18:0;6465:7;6482:18;;;:9;:18;;;;;;;6399:103;5349:59;;;;;;;;;;;;;;;;3976:47;;;;;;;;;;-1:-1:-1;3976:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5284:58;;;;;;;;;;;;;;;;5221:56;;;;;;;;;;;;;;;;6990:78;;;;;;;;;;-1:-1:-1;7042:7:0;7060:5;-1:-1:-1;;;;;7060:5:0;6990:78;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;6990:78:0;2299:203:1;9572:327:0;;;;;;;;;;-1:-1:-1;9572:327:0;;;;;:::i;:::-;;:::i;6110:71::-;;;;;;;;;;-1:-1:-1;6172:7:0;;;;;;;;;;;;-1:-1:-1;;;6172:7:0;;;;6110:71;;12160:544;;;;;;;;;;-1:-1:-1;12160:544:0;;;;;:::i;:::-;;:::i;7076:319::-;;;;;;;;;;-1:-1:-1;7076:319:0;;;;;:::i;:::-;;:::i;6508:139::-;;;;;;;;;;-1:-1:-1;6508:139:0;;;;;:::i;:::-;;:::i;4067:26::-;;;;;;;;;;-1:-1:-1;4067:26:0;;;;-1:-1:-1;;;;;4067:26:0;;;9040:524;;;;;;;;;;-1:-1:-1;9040:524:0;;;;;:::i;:::-;;:::i;6723:127::-;;;;;;;;;;-1:-1:-1;6723:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6821:18:0;;;6804:7;6821:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6723:127;2454:111;;;;;;;;;;-1:-1:-1;2454:111:0;;;;;:::i;:::-;;:::i;6260:133::-;6335:4;6342:37;6351:10;6363:7;6372:6;6342:8;:37::i;:::-;-1:-1:-1;6387:4:0;6260:133;;;;;:::o;6856:128::-;6482:9;:18;;;;4928:42;6909:7;6482:18;;;;;6926:8;;6909:7;;6926:56;;6482:18;;6926:29;;:8;:12;:29::i;:::-;:33;;:56::i;:::-;6919:63;;6856:128;:::o;12896:309::-;12994:4;13011:36;13021:6;13029:9;13040:6;13011:9;:36::i;:::-;13058:117;13067:6;13075:10;13087:87;13123:6;13087:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13087:19:0;;;;;;:11;:19;;;;;;;;13107:10;13087:31;;;;;;;;;:87;:35;:87::i;:::-;13058:8;:117::i;:::-;-1:-1:-1;13193:4:0;12896:309;;;;;;:::o;6653:64::-;2416:4;2441:5;-1:-1:-1;;;;;2441:5:0;2328:10;2430:16;2312:38;;;;-1:-1:-1;;;2312:38:0;;;;;;;:::i;:::-;;;;;;;;;6697:11:::1;:18:::0;;-1:-1:-1;;;;6697:18:0::1;-1:-1:-1::0;;;6697:18:0::1;::::0;;6653:64::o;7403:93::-;2416:4;2441:5;-1:-1:-1;;;;;2441:5:0;2328:10;2430:16;2312:38;;;;-1:-1:-1;;;2312:38:0;;;;;;;:::i;:::-;7455:33:::1;7470:17;;7455:14;:33::i;:::-;7403:93::o:0;7504:233::-;2416:4;2441:5;-1:-1:-1;;;;;2441:5:0;2328:10;2430:16;2312:38;;;;-1:-1:-1;;;2312:38:0;;;;;;;:::i;:::-;7609:41:::1;::::0;-1:-1:-1;;;7609:41:0;;7644:4:::1;7609:41;::::0;::::1;2445:51:1::0;7591:15:0::1;::::0;7609:63:::1;::::0;7668:3:::1;::::0;7609:54:::1;::::0;7655:7;;-1:-1:-1;;;;;7609:26:0;::::1;::::0;::::1;::::0;2418:18:1;;7609:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;7709:10;::::0;7683:46:::1;::::0;-1:-1:-1;;;7683:46:0;;-1:-1:-1;;;;;7709:10:0;;::::1;7683:46;::::0;::::1;5309:51:1::0;5376:18;;;5369:34;;;7591:81:0;;-1:-1:-1;7683:25:0;::::1;::::0;::::1;::::0;5282:18:1;;7683:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7580:157;7504:233:::0;;:::o;9572:327::-;2416:4;2441:5;-1:-1:-1;;;;;2441:5:0;2328:10;2430:16;2312:38;;;;-1:-1:-1;;;2312:38:0;;;;;;;:::i;:::-;9694:10:::1;:23:::0;;-1:-1:-1;;;;;9694:23:0;;::::1;-1:-1:-1::0;;;;;;9694:23:0;;::::1;::::0;::::1;::::0;;;9719:16:::1;:29:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;9750:10:::1;:25:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;9694:10:::1;9786:26:::0;;;:14:::1;:26;::::0;;;;;:33;;-1:-1:-1;;9786:33:0;;::::1;9694:23:::0;9786:33;;::::1;::::0;;;9821:26;;;;;;:33;;;::::1;::::0;::::1;::::0;;9856:28;;;;;;:35;;;;::::1;::::0;;::::1;::::0;;9572:327::o;12160:544::-;2416:4;2441:5;-1:-1:-1;;;;;2441:5:0;2328:10;2430:16;2312:38;;;;-1:-1:-1;;;2312:38:0;;;;;;;:::i;:::-;12266:13:::1;12282:29;12305:5;12282:18;12295:4;12282:8;;:12;;:18;;;;:::i;:29::-;12266:45;;12313:19;12335:30;12359:5;12335:19;12348:5;12335:8;;:12;;:19;;;;:::i;:30::-;12313:52;;12367:17;12387:32;12413:5;12387:21;12400:7;12387:8;;:12;;:21;;;;:::i;:32::-;12430:12;:20:::0;;;12452:14:::1;:28:::0;;;12482:15:::1;:27:::0;;;12367:52;-1:-1:-1;;12536:30:0::1;12561:4;12536:20;12554:1;12536:13;:11;:13::i;:30::-;12520:46;;12594:5;12585;:14;;:38;;;;;12618:5;12603:11;:20;;12585:38;:60;;;;;12640:5;12627:9;:18;;12585:60;12577:119;;;::::0;-1:-1:-1;;;12577:119:0;;5898:2:1;12577:119:0::1;::::0;::::1;5880:21:1::0;5937:2;5917:18;;;5910:30;5976:34;5956:18;;;5949:62;-1:-1:-1;;;6027:18:1;;;6020:44;6081:19;;12577:119:0::1;5696:410:1::0;12577:119:0::1;12255:449;;;;12160:544:::0;;;:::o;7076:319::-;2416:4;2441:5;-1:-1:-1;;;;;2441:5:0;2328:10;2430:16;2312:38;;;;-1:-1:-1;;;2312:38:0;;;;;;;:::i;:::-;7209:12:::1;:26:::0;;;7257:8:::1;::::0;:49:::1;::::0;7298:6:::1;::::0;7257:28:::1;::::0;7270:14;7257:12:::1;:28::i;:49::-;7237:17;:69:::0;7337:8:::1;::::0;:50:::1;::::0;7379:6:::1;::::0;7337:29:::1;::::0;7350:15;7337:12:::1;:29::i;:50::-;7318:16;:69:::0;-1:-1:-1;;;7076:319:0:o;6508:139::-;6586:4;6593:40;6603:10;6615:9;6626:6;6593:9;:40::i;9040:524::-;2416:4;2441:5;-1:-1:-1;;;;;2441:5:0;2328:10;2430:16;2312:38;;;;-1:-1:-1;;;2312:38:0;;;;;;;:::i;:::-;9230:12:::1;:25:::0;;;9257:12:::1;:25:::0;;;9284:7:::1;:15:::0;;;9301:14:::1;:29:::0;;;9332:8:::1;:17:::0;;;9351:7:::1;:15:::0;;;9368:11:::1;:20:::0;;;9419:11:::1;::::0;:18:::1;::::0;-1:-1:-1;9419:15:0::1;:18::i;:::-;9407:8;;:30;;:63;;;;-1:-1:-1::0;9452:11:0::1;::::0;:18:::1;::::0;9468:1:::1;9452:15;:18::i;:::-;9441:7;;:29;;9407:63;:100;;;;-1:-1:-1::0;9489:11:0::1;::::0;:18:::1;::::0;9505:1:::1;9489:15;:18::i;:::-;9474:11;;:33;;9407:100;9399:157;;;::::0;-1:-1:-1;;;9399:157:0;;6313:2:1;9399:157:0::1;::::0;::::1;6295:21:1::0;6352:2;6332:18;;;6325:30;6391:34;6371:18;;;6364:62;-1:-1:-1;;;6442:18:1;;;6435:42;6494:19;;9399:157:0::1;6111:408:1::0;2454:111:0;2416:4;2441:5;-1:-1:-1;;;;;2441:5:0;2328:10;2430:16;2312:38;;;;-1:-1:-1;;;2312:38:0;;;;;;;:::i;:::-;2520:5:::1;:11:::0;;-1:-1:-1;;;;;;2520:11:0::1;-1:-1:-1::0;;;;;2520:11:0;::::1;::::0;;::::1;::::0;;;2538:25:::1;::::0;2445:51:1;;;2538:25:0::1;::::0;2433:2:1;2418:18;2538:25:0::1;;;;;;;2454:111:::0;:::o;11158:335::-;-1:-1:-1;;;;;11251:19:0;;11243:68;;;;-1:-1:-1;;;11243:68:0;;6942:2:1;11243:68:0;;;6924:21:1;6981:2;6961:18;;;6954:30;7020:34;7000:18;;;6993:62;-1:-1:-1;;;7071:18:1;;;7064:34;7115:19;;11243:68:0;6740:400:1;11243:68:0;-1:-1:-1;;;;;11330:21:0;;11322:68;;;;-1:-1:-1;;;11322:68:0;;7347:2:1;11322:68:0;;;7329:21:1;7386:2;7366:18;;;7359:30;7425:34;7405:18;;;7398:62;-1:-1:-1;;;7476:18:1;;;7469:32;7518:19;;11322:68:0;7145:398:1;11322:68:0;-1:-1:-1;;;;;11401:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11453:32;;1361:25:1;;;11453:32:0;;1334:18:1;11453:32:0;;;;;;;11158:335;;;:::o;384:98::-;442:7;469:5;473:1;469;:5;:::i;13213:1472::-;-1:-1:-1;;;;;13310:20:0;;13302:70;;;;-1:-1:-1;;;13302:70:0;;8015:2:1;13302:70:0;;;7997:21:1;8054:2;8034:18;;;8027:30;8093:34;8073:18;;;8066:62;-1:-1:-1;;;8144:18:1;;;8137:35;8189:19;;13302:70:0;7813:401:1;13302:70:0;-1:-1:-1;;;;;13391:23:0;;13383:71;;;;-1:-1:-1;;;13383:71:0;;8421:2:1;13383:71:0;;;8403:21:1;8460:2;8440:18;;;8433:30;8499:34;8479:18;;;8472:62;-1:-1:-1;;;8550:18:1;;;8543:33;8593:19;;13383:71:0;8219:399:1;13383:71:0;-1:-1:-1;;;;;6482:18:0;;6465:7;6482:18;;;:9;:18;;;;;;13473:6;:27;;13465:88;;;;-1:-1:-1;;;13465:88:0;;8825:2:1;13465:88:0;;;8807:21:1;8864:2;8844:18;;;8837:30;8903:34;8883:18;;;8876:62;-1:-1:-1;;;8954:18:1;;;8947:47;9011:19;;13465:88:0;8623:413:1;13465:88:0;-1:-1:-1;;;;;13568:22:0;;;;;;:14;:22;;;;;;;;13567:23;:53;;;;-1:-1:-1;;;;;;13595:25:0;;;;;;:14;:25;;;;;;;;13594:26;13567:53;13564:95;;;13630:11;;-1:-1:-1;;;13630:11:0;;;;13622:35;;;;-1:-1:-1;;;13622:35:0;;9243:2:1;13622:35:0;;;9225:21:1;9282:2;9262:18;;;9255:30;-1:-1:-1;;;9301:18:1;;;9294:41;9352:18;;13622:35:0;9041:335:1;13622:35:0;-1:-1:-1;;;;;13673:22:0;;;;;;:14;:22;;;;;;;;13672:23;:53;;;;-1:-1:-1;;;;;;13700:25:0;;;;;;:14;:25;;;;;;;;13699:26;13672:53;:90;;;;-1:-1:-1;13750:11:0;;-1:-1:-1;;;;;13729:33:0;;;13750:11;;13729:33;;13672:90;:120;;;;-1:-1:-1;;;;;;13766:26:0;;4928:42;13766:26;;13672:120;13669:233;;;13850:15;;-1:-1:-1;;;;;13813:20:0;;;;;;:9;:20;;;;;;:32;;13838:6;13813:24;:32::i;:::-;13812:53;;13804:96;;;;-1:-1:-1;;;13804:96:0;;9583:2:1;13804:96:0;;;9565:21:1;9622:2;9602:18;;;9595:30;9661:32;9641:18;;;9634:60;9711:18;;13804:96:0;9381:354:1;13804:96:0;13925:11;;-1:-1:-1;;;;;13915:21:0;;;13925:11;;13915:21;13912:137;;13956:14;;13946:6;:24;;:50;;;-1:-1:-1;;;;;;13974:22:0;;;;;;:14;:22;;;;;;;;13946:50;:79;;;-1:-1:-1;;;;;;14000:25:0;;;;;;:14;:25;;;;;;;;13946:79;13938:109;;;;-1:-1:-1;;;13938:109:0;;9942:2:1;13938:109:0;;;9924:21:1;9981:2;9961:18;;;9954:30;-1:-1:-1;;;10000:18:1;;;9993:47;10057:18;;13938:109:0;9740:341:1;13938:109:0;14077:12;;14067:6;:22;;:48;;;-1:-1:-1;;;;;;14093:22:0;;;;;;:14;:22;;;;;;;;14067:48;:77;;;-1:-1:-1;;;;;;14119:25:0;;;;;;:14;:25;;;;;;;;14067:77;14059:107;;;;-1:-1:-1;;;14059:107:0;;9942:2:1;14059:107:0;;;9924:21:1;9981:2;9961:18;;;9954:30;-1:-1:-1;;;10000:18:1;;;9993:47;10057:18;;14059:107:0;9740:341:1;14059:107:0;14194:11;;-1:-1:-1;;;;;14181:24:0;;;14194:11;;14181:24;:51;;;;-1:-1:-1;;;;;;14210:22:0;;;;;;:14;:22;;;;;;;;14209:23;14181:51;14178:84;;;14258:1;14234:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;14178:84:0;14275:41;14290:6;14298:9;14309:6;14275:14;:41::i;:::-;14272:108;;;14318:33;14333:17;;14318:14;:33::i;:::-;14376:1;14353:12;:25;14272:108;-1:-1:-1;;;;;14410:17:0;;;;;;:9;:17;;;;;;:29;;14432:6;14410:21;:29::i;:::-;-1:-1:-1;;;;;14390:17:0;;;;;;:9;:17;;;;;;;;:49;;;;14476:14;:22;;;;;;;;14475:23;:69;;14538:6;14475:69;;;14501:34;14509:6;14517:9;14528:6;14501:7;:34::i;:::-;-1:-1:-1;;;;;14578:20:0;;;;;;:9;:20;;;;;;14450:94;;-1:-1:-1;14578:40:0;;14450:94;14578:24;:40::i;:::-;-1:-1:-1;;;;;14555:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14634:43;;;;;;;;;;14662:14;1361:25:1;;1349:2;1334:18;;1215:177;14634:43:0;;;;;;;;13291:1394;13213:1472;;;:::o;808:240::-;928:7;989:12;981:6;;;;973:29;;;;-1:-1:-1;;;973:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1024:5:0;;;808:240::o;7745:1046::-;4538:8;:15;;-1:-1:-1;;4538:15:0;4549:4;4538:15;;;;;;7883:14:::1;::::0;7865:12:::1;::::0;7841::::1;::::0;4538:8;;7840:66:::1;::::0;7904:1:::1;::::0;7841:57:::1;::::0;7883:14;;7841:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;7840:66::-;7817:89;;7917:32;7952:42;7981:12;7952:24;7963:12;;7952:6;:10;;:24;;;;:::i;:42::-;7917:77:::0;-1:-1:-1;8005:14:0::1;8022:36;:6:::0;7917:77;8022:10:::1;:36::i;:::-;8005:53:::0;-1:-1:-1;8094:21:0::1;8126:24;8005:53:::0;8126:16:::1;:24::i;:::-;8161:20;8184:41;:21;8210:14:::0;8184:25:::1;:41::i;:::-;8161:64;;8236:19;8257:48;8274:30;8291:12;;8274;:16;;:30;;;;:::i;:::-;8257:12:::0;;:16:::1;:48::i;:::-;8236:69;;8316:29;8348;8364:12;;8348:11;:15;;:29;;;;:::i;:::-;8316:61:::0;-1:-1:-1;8391:34:0;;8388:103:::1;;8427:61;8440:24;8466:21;8427:12;:61::i;:::-;8547:12;::::0;8501:20:::1;::::0;8524:36:::1;::::0;:18:::1;:11:::0;8540:1:::1;8524:15;:18::i;:36::-;8501:59:::0;-1:-1:-1;8574:16:0;;8571:65:::1;;8600:10;::::0;8592:42:::1;::::0;-1:-1:-1;;;;;8600:10:0;;::::1;::::0;8592:42;::::1;;;::::0;8621:12;;8600:10:::1;8592:42:::0;8600:10;8592:42;8621:12;8600:10;8592:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8571:65;8672:21;8707:28:::0;;8704:80:::1;;8745:10;::::0;8737:45:::1;::::0;-1:-1:-1;;;;;8745:10:0;;::::1;::::0;8737:45;::::1;;;::::0;8766:15;;8745:10:::1;8737:45:::0;8745:10;8737:45;8766:15;8745:10;8737:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8704:80;-1:-1:-1::0;;4558:8:0;:16;;-1:-1:-1;;4558:16:0;;;-1:-1:-1;;;;;;;;7745:1046:0:o;490:98::-;548:7;575:5;579:1;575;:5;:::i;596:98::-;654:7;681:5;685:1;681;:5;:::i;278:98::-;336:7;363:5;367:1;363;:5;:::i;10270:417::-;10411:16;;10488:17;;10478:4;10368;6482:18;;;:9;:18;;;;;;10524:8;;10368:4;;10401:26;;;;-1:-1:-1;10460:45:0;;10524:8;;10523:9;:24;;;;-1:-1:-1;10536:11:0;;-1:-1:-1;;;10536:11:0;;;;10523:24;:39;;;;-1:-1:-1;10551:11:0;;-1:-1:-1;;;10551:11:0;;;;10523:39;:51;;;;;10566:8;10523:51;:78;;;;-1:-1:-1;;;;;;10579:22:0;;;;;;:14;:22;;;;;;;;10578:23;10523:78;:106;;;;-1:-1:-1;10618:11:0;;-1:-1:-1;;;;;10605:24:0;;;10618:11;;10605:24;10523:106;:138;;;;;10649:12;;10633;;:28;;10523:138;:156;;;;;10665:14;10523:156;10516:163;10270:417;-1:-1:-1;;;;;;10270:417:0:o;11499:653::-;-1:-1:-1;;;;;11609:25:0;;11585:7;11609:25;;;:14;:25;;;;;;;;11605:53;;;-1:-1:-1;11644:12:0;;11637:19;;11605:53;11704:1;11671:30;11683:6;11691:9;11671:11;:30::i;:::-;:34;11668:462;;;11717:17;11737:59;11765:30;11777:6;11785:9;11765:11;:30::i;:::-;11748:11;;11737:23;;:6;;:10;:23::i;:59::-;11852:4;11834:24;;;;:9;:24;;;;;;11717:79;;-1:-1:-1;11834:39:0;;11717:79;11834:28;:39::i;:::-;11825:4;11807:24;;;;:9;:24;;;;;;;:66;;;;11889:42;;-1:-1:-1;;;;;11889:42:0;;;;;;;11921:9;1361:25:1;;1349:2;1334:18;;1215:177;11889:42:0;;;;;;;;11963:1;11945:7;;:20;:64;;;;;12002:7;;11969:30;11981:6;11989:9;11969:11;:30::i;:::-;:40;11945:64;11942:148;;;12011:77;12029:4;4928:42;12051:36;12079:7;;12051:23;12062:11;;12051:6;:10;;:23;;;;:::i;:36::-;12011:9;:77::i;:::-;12107:21;:6;12118:9;12107:10;:21::i;:::-;12100:28;;;;;11668:462;-1:-1:-1;12138:6:0;11499:653;-1:-1:-1;;11499:653:0:o;10695:455::-;10785:16;;;10799:1;10785:16;;;;;;;;10761:21;;10785:16;;;;;;;;;;-1:-1:-1;10785:16:0;10761:40;;10830:4;10812;10817:1;10812:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;10812:23:0;;;-1:-1:-1;;;;;10812:23:0;;;;;10856:13;;;;;;;;;-1:-1:-1;;;;;10856:13:0;-1:-1:-1;;;;;10856:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10846:4;10851:1;10846:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10846:30:0;;;:7;;;;;;;;;:30;10919:13;;10887:60;;10904:4;;10919:13;10935:11;10887:8;:60::i;:::-;10958:13;;;:184;;-1:-1:-1;;;10958:184:0;;-1:-1:-1;;;;;10958:13:0;;;;:64;;:184;;11037:11;;10958:13;;11079:4;;11106;;11126:15;;10958:184;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10750:400;10695:455;:::o;9907:355::-;10020:13;;9988:60;;10005:4;;-1:-1:-1;;;;;10020:13:0;10036:11;9988:8;:60::i;:::-;10059:13;;;10207:16;;10059:195;;-1:-1:-1;;;10059:195:0;;10129:4;10059:195;;;12457:34:1;;;;12507:18;;;12500:34;;;10059:13:0;12550:18:1;;;12543:34;;;12593:18;;;12586:34;-1:-1:-1;;;;;10207:16:0;;;12636:19:1;;;12629:44;10238:15:0;12689:19:1;;;12682:35;10059:13:0;;:29;;10096:9;;12391:19:1;;10059:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9907:355;;:::o;8799:233::-;8914:11;;8878:7;;-1:-1:-1;;;;;8914:11:0;;;8901:24;;;;8898:45;;-1:-1:-1;8934:7:0;;8927:14;;8898:45;8966:11;;-1:-1:-1;;;;;8966:11:0;;;8956:21;;;;8953:43;;-1:-1:-1;8986:8:0;;8979:15;;8953:43;-1:-1:-1;9013:11:0;;8799:233;;;;:::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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:529::-;2584:6;2592;2600;2653:2;2641:9;2632:7;2628:23;2624:32;2621:52;;;2669:1;2666;2659:12;2621:52;2708:9;2695:23;2727:31;2752:5;2727:31;:::i;:::-;2777:5;-1:-1:-1;2834:2:1;2819:18;;2806:32;2847:33;2806:32;2847:33;:::i;:::-;2899:7;-1:-1:-1;2958:2:1;2943:18;;2930:32;2971:33;2930:32;2971:33;:::i;:::-;3023:7;3013:17;;;2507:529;;;;;:::o;3041:316::-;3118:6;3126;3134;3187:2;3175:9;3166:7;3162:23;3158:32;3155:52;;;3203:1;3200;3193:12;3155:52;-1:-1:-1;;3226:23:1;;;3296:2;3281:18;;3268:32;;-1:-1:-1;3347:2:1;3332:18;;;3319:32;;3041:316;-1:-1:-1;3041:316:1:o;3362:592::-;3475:6;3483;3491;3499;3507;3515;3523;3576:3;3564:9;3555:7;3551:23;3547:33;3544:53;;;3593:1;3590;3583:12;3544:53;-1:-1:-1;;3616:23:1;;;3686:2;3671:18;;3658:32;;-1:-1:-1;3737:2:1;3722:18;;3709:32;;3788:2;3773:18;;3760:32;;-1:-1:-1;3839:3:1;3824:19;;3811:33;;-1:-1:-1;3891:3:1;3876:19;;3863:33;;-1:-1:-1;3943:3:1;3928:19;3915:33;;-1:-1:-1;3362:592:1;-1:-1:-1;3362:592:1:o;3959:388::-;4027:6;4035;4088:2;4076:9;4067:7;4063:23;4059:32;4056:52;;;4104:1;4101;4094:12;4056:52;4143:9;4130:23;4162:31;4187:5;4162:31;:::i;:::-;4212:5;-1:-1:-1;4269:2:1;4254:18;;4241:32;4282:33;4241:32;4282:33;:::i;:::-;4334:7;4324:17;;;3959:388;;;;;:::o;4612:329::-;4814:2;4796:21;;;4853:1;4833:18;;;4826:29;-1:-1:-1;;;4886:2:1;4871:18;;4864:36;4932:2;4917:18;;4612:329::o;4946:184::-;5016:6;5069:2;5057:9;5048:7;5044:23;5040:32;5037:52;;;5085:1;5082;5075:12;5037:52;-1:-1:-1;5108:16:1;;4946:184;-1:-1:-1;4946:184:1:o;5414:277::-;5481:6;5534:2;5522:9;5513:7;5509:23;5505:32;5502:52;;;5550:1;5547;5540:12;5502:52;5582:9;5576:16;5635:5;5628:13;5621:21;5614:5;5611:32;5601:60;;5657:1;5654;5647:12;7548:127;7609:10;7604:3;7600:20;7597:1;7590:31;7640:4;7637:1;7630:15;7664:4;7661:1;7654:15;7680:128;7747:9;;;7768:11;;;7765:37;;;7782:18;;:::i;10086:125::-;10151:9;;;10172:10;;;10169:36;;;10185:18;;:::i;10216:168::-;10289:9;;;10320;;10337:15;;;10331:22;;10317:37;10307:71;;10358:18;;:::i;10389:217::-;10429:1;10455;10445:132;;10499:10;10494:3;10490:20;10487:1;10480:31;10534:4;10531:1;10524:15;10562:4;10559:1;10552:15;10445:132;-1:-1:-1;10591:9:1;;10389:217::o;10743:127::-;10804:10;10799:3;10795:20;10792:1;10785:31;10835:4;10832:1;10825:15;10859:4;10856:1;10849:15;10875:251;10945:6;10998:2;10986:9;10977:7;10973:23;10969:32;10966:52;;;11014:1;11011;11004:12;10966:52;11046:9;11040:16;11065:31;11090:5;11065:31;:::i;11131:980::-;11393:4;11441:3;11430:9;11426:19;11472:6;11461:9;11454:25;11498:2;11536:6;11531:2;11520:9;11516:18;11509:34;11579:3;11574:2;11563:9;11559:18;11552:31;11603:6;11638;11632:13;11669:6;11661;11654:22;11707:3;11696:9;11692:19;11685:26;;11746:2;11738:6;11734:15;11720:29;;11767:1;11777:195;11791:6;11788:1;11785:13;11777:195;;;11856:13;;-1:-1:-1;;;;;11852:39:1;11840:52;;11947:15;;;;11912:12;;;;11888:1;11806:9;11777:195;;;-1:-1:-1;;;;;;;12028:32:1;;;;12023:2;12008:18;;12001:60;-1:-1:-1;;;12092:3:1;12077:19;12070:35;11989:3;11131:980;-1:-1:-1;;;11131:980:1:o;12728:306::-;12816:6;12824;12832;12885:2;12873:9;12864:7;12860:23;12856:32;12853:52;;;12901:1;12898;12891:12;12853:52;12930:9;12924:16;12914:26;;12980:2;12969:9;12965:18;12959:25;12949:35;;13024:2;13013:9;13009:18;13003:25;12993:35;;12728:306;;;;;:::o

Swarm Source

ipfs://1c5cf6ef75a810e286188214aa71d3bf25113e6a9fd117c06d58fca3382e5e3b
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.