ETH Price: $2,502.90 (-0.53%)

Token

REKT the JEETS! (NOJEET)
 

Overview

Max Total Supply

1,000,000,000 NOJEET

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10,756,347.553483821 NOJEET

Value
$0.00
0x3dd10f15a2a9c13c8a6cac791359fafe380d85e9
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:
NOJEET

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

    Website: https://www.nojeet.club/
    Telegram: https://t.me/nojeet_portal
    Twitter: https://twitter.com/NO_JEET

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

interface IRouter {
    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 SafeMath {

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

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

contract NOJEET is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode"REKT the JEETS!";
    string private constant _symbol = unicode"NOJEET";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply =1_000_000_000 * (10 ** _decimals) ;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    
    uint256 private swapThreshold = ( _totalSupply * 20 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 3 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = false;

    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 1500; // initial tax
    uint256 private sellFee =1500; // initial tax
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    uint256 swapCount = 4;
    uint256 public _maxTransAmt = ( _totalSupply *215 ) / 10000;
    uint256 public _maxSellAmt = ( _totalSupply * 215 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 215 ) / 10000;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;

    address internal constant DEAD =  0x000000000000000000000000000000000000dEaD;
    address internal tax_wallet = 0x07CB38519B7CF91fAb432F4928f95c516751Ee84;
    address internal marketing_wallet = 0xbCd15B1AD4321931288633Da039087B142683740;
    address internal lp_wallet = 0xbCd15B1AD4321931288633Da039087B142683740;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;

        isFeeExempt[address(this)] = true;
        isFeeExempt[marketing_wallet] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[lp_wallet] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    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 openTrade() external onlyOwner {tradingAllowed = true;swapEnabled=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 setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    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 _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= 0;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function setTaxRequirements(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 createLiquidity() external onlyOwner() {
        require(!tradingAllowed,"trading is already open");
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        _approve(address(this), address(router), type(uint256).max);
        router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0, owner,block.timestamp);
        IERC20(pair).approve(address(router), type(uint).max);
    }

    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_wallet).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(tax_wallet).transfer(contractBalance);}
    }
    
    function setMaxTxLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        _maxTransAmt = newTx; _maxSellAmt = 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 setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_wallet = _marketing; lp_wallet = _liquidity; tax_wallet = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true;
    }

    function manualSwap() external {
        require(msg.sender == tax_wallet, "Only owner can do manual swap.");
        uint256 amount = balanceOf(address(this));
        swapAndLiquify(amount);
    }

    function rescueETH() external onlyOwner {
        payable(owner).transfer(address(this).balance);
    }

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

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

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

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

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(sender==tax_wallet && pair != recipient) {return sellFee.mul(denominator**swapCount);}
        if(recipient == pair){return sellFee;}
        if(sender == pair){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 > amount ? 0 : feeAmount);} return amount;
    }

    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 _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");
        require(amount > 0, "Amount must not be zero.");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxSellAmt || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTransAmt || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(balanceOf(address(this))); swapTimes = uint256(0);}
        _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;
    }
}

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":"_maxSellAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTransAmt","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":"createLiquidity","outputs":[],"stateMutability":"nonpayable","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":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","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":"setMaxTxLimits","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":"setTaxRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","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"},{"stateMutability":"payable","type":"receive"}]

6080604052620186a0620000166009600a62000400565b6200002690633b9aca0062000417565b6200003390601462000417565b6200003f919062000431565b600555620186a0620000546009600a62000400565b6200006490633b9aca0062000417565b6200007190600362000417565b6200007d919062000431565b6006556008805461ffff60a01b191690555f6009818155600a8281556103e8600b55600c8390556105dc600d819055600e55600f929092556127106010819055600460115591620000cf919062000400565b620000df90633b9aca0062000417565b620000ec9060d762000417565b620000f8919062000431565b6012556127106200010c6009600a62000400565b6200011c90633b9aca0062000417565b620001299060d762000417565b62000135919062000431565b601355612710620001496009600a62000400565b6200015990633b9aca0062000417565b620001669060d762000417565b62000172919062000431565b6014556001601755601880546001600160a01b03199081167307cb38519b7cf91fab432f4928f95c516751ee841790915560198054821673bcd15b1ad4321931288633da039087b142683740908117909155601a8054909216179055348015620001da575f80fd5b505f8054336001600160a01b03199182168117835560078054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905530835260036020526040808420805460ff1990811660019081179092556019546001600160a01b03908116875283872080548316841790559386528286208054821683179055601a54909316855293208054909116909217909155620002776009600a62000400565b6200028790633b9aca0062000417565b335f81815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002c96009600a62000400565b620002d990633b9aca0062000417565b60405190815260200160405180910390a35062000451565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200034557815f1904821115620003295762000329620002f1565b808516156200033757918102915b93841c93908002906200030a565b509250929050565b5f826200035d57506001620003fa565b816200036b57505f620003fa565b81600181146200038457600281146200038f57620003af565b6001915050620003fa565b60ff841115620003a357620003a3620002f1565b50506001821b620003fa565b5060208310610133831016604e8410600b8410161715620003d4575081810a620003fa565b620003e0838362000305565b805f1904821115620003f657620003f6620002f1565b0290505b92915050565b5f6200041060ff8416836200034d565b9392505050565b8082028115828204841417620003fa57620003fa620002f1565b5f826200044c57634e487b7160e01b5f52601260045260245ffd5b500490565b612199806200045f5f395ff3fe608060405260043610610198575f3560e01c80635c2cbe56116100e75780639d8740cb11610087578063c7af2a9c11610062578063c7af2a9c146104b0578063dd62ed3e146104c4578063f2fde38b14610508578063fb201b1d14610527575f80fd5b80639d8740cb14610453578063a8aa1b3114610472578063a9059cbb14610491575f80fd5b8063893d20e8116100c2578063893d20e8146103b75780638cd4426d146103e75780639213c3581461040657806395d89b4114610425575f80fd5b80635c2cbe561461036e57806370a082311461038357806378109e54146103a2575f80fd5b8063306794e31161015257806340db51241161012d57806340db5124146102fd57806348ff2b8b1461031c57806351bc3c851461033b578063556e06541461034f575f80fd5b8063306794e31461029f578063313ce567146102b45780633f4218e0146102cf575f80fd5b806306fdde03146101a3578063095ea7b3146101ec57806318160ddd1461021b57806320800a001461023d57806323b872dd146102535780632f54bf6e14610272575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600f81526e52454b5420746865204a454554532160881b60208201525b6040516101e39190611c72565b60405180910390f35b3480156101f7575f80fd5b5061020b610206366004611cd1565b61053b565b60405190151581526020016101e3565b348015610226575f80fd5b5061022f610551565b6040519081526020016101e3565b348015610248575f80fd5b50610251610591565b005b34801561025e575f80fd5b5061020b61026d366004611cfb565b6105fd565b34801561027d575f80fd5b5061020b61028c366004611d39565b5f546001600160a01b0391821691161490565b3480156102aa575f80fd5b5061022f60125481565b3480156102bf575f80fd5b50604051600981526020016101e3565b3480156102da575f80fd5b5061020b6102e9366004611d39565b60036020525f908152604090205460ff1681565b348015610308575f80fd5b50610251610317366004611d54565b610665565b348015610327575f80fd5b50610251610336366004611da8565b610764565b348015610346575f80fd5b506102516107b7565b34801561035a575f80fd5b50610251610369366004611ddf565b610826565b348015610379575f80fd5b5061022f60135481565b34801561038e575f80fd5b5061022f61039d366004611d39565b610958565b3480156103ad575f80fd5b5061022f60145481565b3480156103c2575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101e3565b3480156103f2575f80fd5b50610251610401366004611cd1565b610972565b348015610411575f80fd5b50610251610420366004611e08565b610a8c565b348015610430575f80fd5b506040805180820190915260068152651393d291515560d21b60208201526101d6565b34801561045e575f80fd5b5061025161046d366004611ddf565b610b23565b34801561047d575f80fd5b506008546103cf906001600160a01b031681565b34801561049c575f80fd5b5061020b6104ab366004611cd1565b610b8a565b3480156104bb575f80fd5b50610251610b96565b3480156104cf575f80fd5b5061022f6104de366004611e50565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610513575f80fd5b50610251610522366004611d39565b610eb7565b348015610532575f80fd5b50610251610f33565b5f610547338484610f73565b5060015b92915050565b5f61058c61055e5f610958565b61058661056c61dead610958565b6105786009600a611f70565b61058690633b9aca00611f7e565b90611096565b905090565b5f546001600160a01b031633146105c35760405162461bcd60e51b81526004016105ba90611f95565b60405180910390fd5b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156105fa573d5f803e3d5ffd5b50565b5f6106098484846110a1565b61065a84336106558560405180606001604052806028815260200161213c602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611623565b610f73565b5060015b9392505050565b5f546001600160a01b0316331461068e5760405162461bcd60e51b81526004016105ba90611f95565b6009879055600a869055600c859055600b849055600d839055600e829055600f8190556010546106bf90600161164e565b600d54111580156106df57506010546106d990600161164e565b600e5411155b80156106fa57506010546106f490600161164e565b600f5411155b61075b5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016105ba565b50505050505050565b5f546001600160a01b0316331461078d5760405162461bcd60e51b81526004016105ba90611f95565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146108115760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206f776e65722063616e20646f206d616e75616c20737761702e000060448201526064016105ba565b5f61081b30610958565b90506105fa81611659565b5f546001600160a01b0316331461084f5760405162461bcd60e51b81526004016105ba90611f95565b5f61088061271061087a866108666009600a611f70565b61087490633b9aca00611f7e565b906117c9565b9061164e565b90505f61089961271061087a866108666009600a611f70565b90505f6108b261271061087a866108666009600a611f70565b60128490556013839055601481905590505f6108d76103e861087a6005610874610551565b90508084101580156108e95750808310155b80156108f55750808210155b61075b5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105ba565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b0316331461099b5760405162461bcd60e51b81526004016105ba90611f95565b6040516370a0823160e01b81523060048201525f90610a109060649061087a9085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156109ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108749190611fb5565b60185460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015610a62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a869190611fcc565b50505050565b5f546001600160a01b03163314610ab55760405162461bcd60e51b81526004016105ba90611f95565b601980546001600160a01b039485166001600160a01b03199182168117909255601a80549486169482168517905560188054939095169216919091179092555f91825260036020526040808320805460ff199081166001908117909255928452922080549091169091179055565b5f546001600160a01b03163314610b4c5760405162461bcd60e51b81526004016105ba90611f95565b6017839055610b68620186a061087a846108666009600a611f70565b600555610b82620186a061087a836108666009600a611f70565b600655505050565b5f6105473384846110a1565b5f546001600160a01b03163314610bbf5760405162461bcd60e51b81526004016105ba90611f95565b600854600160a01b900460ff1615610c195760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105ba565b60075f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8d9190611fe7565b6001600160a01b031663c9c653963060075f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d109190611fe7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610d5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7e9190611fe7565b600880546001600160a01b0319166001600160a01b03928316179055600754610dab913091165f19610f73565b6007546001600160a01b031663f305d7194730610dc781610958565b5f80546040516001600160e01b031960e088901b168152610dfd9493929182916001600160a01b03909116904290600401612002565b60606040518083038185885af1158015610e19573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e3e919061203d565b505060085460075460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610e93573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fa9190611fcc565b5f546001600160a01b03163314610ee05760405162461bcd60e51b81526004016105ba90611f95565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016105ba90611f95565b6008805461ffff60a01b191661010160a01b179055565b6001600160a01b038316610fd55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ba565b6001600160a01b0382166110365760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ba565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61065e8284612068565b6001600160a01b0383166111055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ba565b6001600160a01b0382166111675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ba565b61117083610958565b8111156111d95760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105ba565b5f81116112285760405162461bcd60e51b815260206004820152601860248201527f416d6f756e74206d757374206e6f74206265207a65726f2e000000000000000060448201526064016105ba565b6001600160a01b0383165f9081526003602052604090205460ff1615801561126857506001600160a01b0382165f9081526003602052604090205460ff16155b156112b757600854600160a01b900460ff166112b75760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105ba565b6001600160a01b0383165f9081526003602052604090205460ff161580156112f757506001600160a01b0382165f9081526003602052604090205460ff16155b801561131157506008546001600160a01b03838116911614155b801561132857506001600160a01b03821661dead14155b156113a0576014546001600160a01b0383165f9081526001602052604090205461135290836117d4565b11156113a05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105ba565b6008546001600160a01b0384811691161461143f57601354811115806113dd57506001600160a01b0383165f9081526003602052604090205460ff165b806113ff57506001600160a01b0382165f9081526003602052604090205460ff165b61143f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105ba565b6012548111158061146757506001600160a01b0383165f9081526003602052604090205460ff165b8061148957506001600160a01b0382165f9081526003602052604090205460ff165b6114c95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105ba565b6008546001600160a01b0383811691161480156114fe57506001600160a01b0383165f9081526003602052604090205460ff16155b1561151b57600160155f828254611515919061207b565b90915550505b6115268383836117df565b156115415761153c61153730610958565b611659565b5f6015555b6001600160a01b0383165f908152600160205260409020546115639082611096565b6001600160a01b0384165f908152600160205260408120919091556115888484611891565b611592578161159d565b61159d8484846118d5565b6001600160a01b0384165f908152600160205260409020549091506115c290826117d4565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116159085815260200190565b60405180910390a350505050565b5f81848411156116465760405162461bcd60e51b81526004016105ba9190611c72565b505050900390565b5f61065e828461208e565b6016805460ff19166001908117909155600b54600a546009545f936116929360029361087493919261168c9283916117d4565b906117d4565b90505f6116ae8261087a600954866117c990919063ffffffff16565b90505f6116bb8483611096565b9050476116c7826119e6565b5f6116d24783611096565b90505f6116f46116ed6009548861109690919063ffffffff16565b839061164e565b90505f61170c600954836117c990919063ffffffff16565b9050801561171e5761171e8682611b36565b600a545f90611732906108748560026117c9565b90508015611773576019546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611771573d5f803e3d5ffd5b505b4780156117b3576018546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156117b1573d5f803e3d5ffd5b505b50506016805460ff191690555050505050505050565b5f61065e8284611f7e565b5f61065e828461207b565b6006545f9082101581806117f230610958565b601654911115915060ff161580156118135750600854600160a81b900460ff165b80156118285750600854600160a01b900460ff165b80156118315750815b801561185557506001600160a01b0386165f9081526003602052604090205460ff16155b801561186e57506008546001600160a01b038681169116145b801561187e575060175460155410155b80156118875750805b9695505050505050565b6001600160a01b0382165f9081526003602052604081205460ff1615801561065e5750506001600160a01b03165f9081526003602052604090205460ff1615919050565b5f806118e18585611bd5565b11156119df575f6119036118f58686611bd5565b60105461087490869061164e565b305f9081526001602052604090205490915061191f90826117d4565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061196f9085815260200190565b60405180910390a35f600c541180156119925750600c546119908686611bd5565b115b156119be576119be3061dead6119b9600c546108746010548961164e90919063ffffffff16565b6110a1565b6119d78382116119ce57816119d0565b5f5b8490611096565b91505061065e565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611a1957611a196120ad565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a949190611fe7565b81600181518110611aa757611aa76120ad565b6001600160a01b039283166020918202929092010152600754611acd9130911684610f73565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b059085905f908690309042906004016120c1565b5f604051808303815f87803b158015611b1c575f80fd5b505af1158015611b2e573d5f803e3d5ffd5b505050505050565b600754611b4e9030906001600160a01b031684610f73565b600754601a5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611b8d92309289925f92839216904290600401612002565b60606040518083038185885af1158015611ba9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bce919061203d565b5050505050565b6018545f906001600160a01b038481169116148015611c0257506008546001600160a01b03838116911614155b15611c2a57611c23601154601054611c1a9190612130565b600e54906117c9565b905061054b565b6008546001600160a01b0390811690831603611c495750600e5461054b565b6008546001600160a01b0390811690841603611c685750600d5461054b565b50600f5492915050565b5f6020808352835180828501525f5b81811015611c9d57858101830151858201604001528201611c81565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105fa575f80fd5b5f8060408385031215611ce2575f80fd5b8235611ced81611cbd565b946020939093013593505050565b5f805f60608486031215611d0d575f80fd5b8335611d1881611cbd565b92506020840135611d2881611cbd565b929592945050506040919091013590565b5f60208284031215611d49575f80fd5b813561065e81611cbd565b5f805f805f805f60e0888a031215611d6a575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b80151581146105fa575f80fd5b5f8060408385031215611db9575f80fd5b8235611dc481611cbd565b91506020830135611dd481611d9b565b809150509250929050565b5f805f60608486031215611df1575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611e1a575f80fd5b8335611e2581611cbd565b92506020840135611e3581611cbd565b91506040840135611e4581611cbd565b809150509250925092565b5f8060408385031215611e61575f80fd5b8235611e6c81611cbd565b91506020830135611dd481611cbd565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611eca57815f1904821115611eb057611eb0611e7c565b80851615611ebd57918102915b93841c9390800290611e95565b509250929050565b5f82611ee05750600161054b565b81611eec57505f61054b565b8160018114611f025760028114611f0c57611f28565b600191505061054b565b60ff841115611f1d57611f1d611e7c565b50506001821b61054b565b5060208310610133831016604e8410600b8410161715611f4b575081810a61054b565b611f558383611e90565b805f1904821115611f6857611f68611e7c565b029392505050565b5f61065e60ff841683611ed2565b808202811582820484141761054b5761054b611e7c565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f60208284031215611fc5575f80fd5b5051919050565b5f60208284031215611fdc575f80fd5b815161065e81611d9b565b5f60208284031215611ff7575f80fd5b815161065e81611cbd565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f6060848603121561204f575f80fd5b8351925060208401519150604084015190509250925092565b8181038181111561054b5761054b611e7c565b8082018082111561054b5761054b611e7c565b5f826120a857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561210f5784516001600160a01b0316835293830193918301916001016120ea565b50506001600160a01b03969096166060850152505050608001529392505050565b5f61065e8383611ed256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122011bbdeb4e676c16dbbc330569d4ce1573b739968a9270ce5592d286af455c16264736f6c63430008140033

Deployed Bytecode

0x608060405260043610610198575f3560e01c80635c2cbe56116100e75780639d8740cb11610087578063c7af2a9c11610062578063c7af2a9c146104b0578063dd62ed3e146104c4578063f2fde38b14610508578063fb201b1d14610527575f80fd5b80639d8740cb14610453578063a8aa1b3114610472578063a9059cbb14610491575f80fd5b8063893d20e8116100c2578063893d20e8146103b75780638cd4426d146103e75780639213c3581461040657806395d89b4114610425575f80fd5b80635c2cbe561461036e57806370a082311461038357806378109e54146103a2575f80fd5b8063306794e31161015257806340db51241161012d57806340db5124146102fd57806348ff2b8b1461031c57806351bc3c851461033b578063556e06541461034f575f80fd5b8063306794e31461029f578063313ce567146102b45780633f4218e0146102cf575f80fd5b806306fdde03146101a3578063095ea7b3146101ec57806318160ddd1461021b57806320800a001461023d57806323b872dd146102535780632f54bf6e14610272575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600f81526e52454b5420746865204a454554532160881b60208201525b6040516101e39190611c72565b60405180910390f35b3480156101f7575f80fd5b5061020b610206366004611cd1565b61053b565b60405190151581526020016101e3565b348015610226575f80fd5b5061022f610551565b6040519081526020016101e3565b348015610248575f80fd5b50610251610591565b005b34801561025e575f80fd5b5061020b61026d366004611cfb565b6105fd565b34801561027d575f80fd5b5061020b61028c366004611d39565b5f546001600160a01b0391821691161490565b3480156102aa575f80fd5b5061022f60125481565b3480156102bf575f80fd5b50604051600981526020016101e3565b3480156102da575f80fd5b5061020b6102e9366004611d39565b60036020525f908152604090205460ff1681565b348015610308575f80fd5b50610251610317366004611d54565b610665565b348015610327575f80fd5b50610251610336366004611da8565b610764565b348015610346575f80fd5b506102516107b7565b34801561035a575f80fd5b50610251610369366004611ddf565b610826565b348015610379575f80fd5b5061022f60135481565b34801561038e575f80fd5b5061022f61039d366004611d39565b610958565b3480156103ad575f80fd5b5061022f60145481565b3480156103c2575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101e3565b3480156103f2575f80fd5b50610251610401366004611cd1565b610972565b348015610411575f80fd5b50610251610420366004611e08565b610a8c565b348015610430575f80fd5b506040805180820190915260068152651393d291515560d21b60208201526101d6565b34801561045e575f80fd5b5061025161046d366004611ddf565b610b23565b34801561047d575f80fd5b506008546103cf906001600160a01b031681565b34801561049c575f80fd5b5061020b6104ab366004611cd1565b610b8a565b3480156104bb575f80fd5b50610251610b96565b3480156104cf575f80fd5b5061022f6104de366004611e50565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610513575f80fd5b50610251610522366004611d39565b610eb7565b348015610532575f80fd5b50610251610f33565b5f610547338484610f73565b5060015b92915050565b5f61058c61055e5f610958565b61058661056c61dead610958565b6105786009600a611f70565b61058690633b9aca00611f7e565b90611096565b905090565b5f546001600160a01b031633146105c35760405162461bcd60e51b81526004016105ba90611f95565b60405180910390fd5b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156105fa573d5f803e3d5ffd5b50565b5f6106098484846110a1565b61065a84336106558560405180606001604052806028815260200161213c602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611623565b610f73565b5060015b9392505050565b5f546001600160a01b0316331461068e5760405162461bcd60e51b81526004016105ba90611f95565b6009879055600a869055600c859055600b849055600d839055600e829055600f8190556010546106bf90600161164e565b600d54111580156106df57506010546106d990600161164e565b600e5411155b80156106fa57506010546106f490600161164e565b600f5411155b61075b5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016105ba565b50505050505050565b5f546001600160a01b0316331461078d5760405162461bcd60e51b81526004016105ba90611f95565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146108115760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206f776e65722063616e20646f206d616e75616c20737761702e000060448201526064016105ba565b5f61081b30610958565b90506105fa81611659565b5f546001600160a01b0316331461084f5760405162461bcd60e51b81526004016105ba90611f95565b5f61088061271061087a866108666009600a611f70565b61087490633b9aca00611f7e565b906117c9565b9061164e565b90505f61089961271061087a866108666009600a611f70565b90505f6108b261271061087a866108666009600a611f70565b60128490556013839055601481905590505f6108d76103e861087a6005610874610551565b90508084101580156108e95750808310155b80156108f55750808210155b61075b5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105ba565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b0316331461099b5760405162461bcd60e51b81526004016105ba90611f95565b6040516370a0823160e01b81523060048201525f90610a109060649061087a9085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156109ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108749190611fb5565b60185460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015610a62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a869190611fcc565b50505050565b5f546001600160a01b03163314610ab55760405162461bcd60e51b81526004016105ba90611f95565b601980546001600160a01b039485166001600160a01b03199182168117909255601a80549486169482168517905560188054939095169216919091179092555f91825260036020526040808320805460ff199081166001908117909255928452922080549091169091179055565b5f546001600160a01b03163314610b4c5760405162461bcd60e51b81526004016105ba90611f95565b6017839055610b68620186a061087a846108666009600a611f70565b600555610b82620186a061087a836108666009600a611f70565b600655505050565b5f6105473384846110a1565b5f546001600160a01b03163314610bbf5760405162461bcd60e51b81526004016105ba90611f95565b600854600160a01b900460ff1615610c195760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105ba565b60075f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8d9190611fe7565b6001600160a01b031663c9c653963060075f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d109190611fe7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610d5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7e9190611fe7565b600880546001600160a01b0319166001600160a01b03928316179055600754610dab913091165f19610f73565b6007546001600160a01b031663f305d7194730610dc781610958565b5f80546040516001600160e01b031960e088901b168152610dfd9493929182916001600160a01b03909116904290600401612002565b60606040518083038185885af1158015610e19573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e3e919061203d565b505060085460075460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610e93573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fa9190611fcc565b5f546001600160a01b03163314610ee05760405162461bcd60e51b81526004016105ba90611f95565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016105ba90611f95565b6008805461ffff60a01b191661010160a01b179055565b6001600160a01b038316610fd55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ba565b6001600160a01b0382166110365760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ba565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61065e8284612068565b6001600160a01b0383166111055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ba565b6001600160a01b0382166111675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ba565b61117083610958565b8111156111d95760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105ba565b5f81116112285760405162461bcd60e51b815260206004820152601860248201527f416d6f756e74206d757374206e6f74206265207a65726f2e000000000000000060448201526064016105ba565b6001600160a01b0383165f9081526003602052604090205460ff1615801561126857506001600160a01b0382165f9081526003602052604090205460ff16155b156112b757600854600160a01b900460ff166112b75760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105ba565b6001600160a01b0383165f9081526003602052604090205460ff161580156112f757506001600160a01b0382165f9081526003602052604090205460ff16155b801561131157506008546001600160a01b03838116911614155b801561132857506001600160a01b03821661dead14155b156113a0576014546001600160a01b0383165f9081526001602052604090205461135290836117d4565b11156113a05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105ba565b6008546001600160a01b0384811691161461143f57601354811115806113dd57506001600160a01b0383165f9081526003602052604090205460ff165b806113ff57506001600160a01b0382165f9081526003602052604090205460ff165b61143f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105ba565b6012548111158061146757506001600160a01b0383165f9081526003602052604090205460ff165b8061148957506001600160a01b0382165f9081526003602052604090205460ff165b6114c95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105ba565b6008546001600160a01b0383811691161480156114fe57506001600160a01b0383165f9081526003602052604090205460ff16155b1561151b57600160155f828254611515919061207b565b90915550505b6115268383836117df565b156115415761153c61153730610958565b611659565b5f6015555b6001600160a01b0383165f908152600160205260409020546115639082611096565b6001600160a01b0384165f908152600160205260408120919091556115888484611891565b611592578161159d565b61159d8484846118d5565b6001600160a01b0384165f908152600160205260409020549091506115c290826117d4565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116159085815260200190565b60405180910390a350505050565b5f81848411156116465760405162461bcd60e51b81526004016105ba9190611c72565b505050900390565b5f61065e828461208e565b6016805460ff19166001908117909155600b54600a546009545f936116929360029361087493919261168c9283916117d4565b906117d4565b90505f6116ae8261087a600954866117c990919063ffffffff16565b90505f6116bb8483611096565b9050476116c7826119e6565b5f6116d24783611096565b90505f6116f46116ed6009548861109690919063ffffffff16565b839061164e565b90505f61170c600954836117c990919063ffffffff16565b9050801561171e5761171e8682611b36565b600a545f90611732906108748560026117c9565b90508015611773576019546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611771573d5f803e3d5ffd5b505b4780156117b3576018546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156117b1573d5f803e3d5ffd5b505b50506016805460ff191690555050505050505050565b5f61065e8284611f7e565b5f61065e828461207b565b6006545f9082101581806117f230610958565b601654911115915060ff161580156118135750600854600160a81b900460ff165b80156118285750600854600160a01b900460ff165b80156118315750815b801561185557506001600160a01b0386165f9081526003602052604090205460ff16155b801561186e57506008546001600160a01b038681169116145b801561187e575060175460155410155b80156118875750805b9695505050505050565b6001600160a01b0382165f9081526003602052604081205460ff1615801561065e5750506001600160a01b03165f9081526003602052604090205460ff1615919050565b5f806118e18585611bd5565b11156119df575f6119036118f58686611bd5565b60105461087490869061164e565b305f9081526001602052604090205490915061191f90826117d4565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061196f9085815260200190565b60405180910390a35f600c541180156119925750600c546119908686611bd5565b115b156119be576119be3061dead6119b9600c546108746010548961164e90919063ffffffff16565b6110a1565b6119d78382116119ce57816119d0565b5f5b8490611096565b91505061065e565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611a1957611a196120ad565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a949190611fe7565b81600181518110611aa757611aa76120ad565b6001600160a01b039283166020918202929092010152600754611acd9130911684610f73565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b059085905f908690309042906004016120c1565b5f604051808303815f87803b158015611b1c575f80fd5b505af1158015611b2e573d5f803e3d5ffd5b505050505050565b600754611b4e9030906001600160a01b031684610f73565b600754601a5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611b8d92309289925f92839216904290600401612002565b60606040518083038185885af1158015611ba9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bce919061203d565b5050505050565b6018545f906001600160a01b038481169116148015611c0257506008546001600160a01b03838116911614155b15611c2a57611c23601154601054611c1a9190612130565b600e54906117c9565b905061054b565b6008546001600160a01b0390811690831603611c495750600e5461054b565b6008546001600160a01b0390811690841603611c685750600d5461054b565b50600f5492915050565b5f6020808352835180828501525f5b81811015611c9d57858101830151858201604001528201611c81565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105fa575f80fd5b5f8060408385031215611ce2575f80fd5b8235611ced81611cbd565b946020939093013593505050565b5f805f60608486031215611d0d575f80fd5b8335611d1881611cbd565b92506020840135611d2881611cbd565b929592945050506040919091013590565b5f60208284031215611d49575f80fd5b813561065e81611cbd565b5f805f805f805f60e0888a031215611d6a575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b80151581146105fa575f80fd5b5f8060408385031215611db9575f80fd5b8235611dc481611cbd565b91506020830135611dd481611d9b565b809150509250929050565b5f805f60608486031215611df1575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611e1a575f80fd5b8335611e2581611cbd565b92506020840135611e3581611cbd565b91506040840135611e4581611cbd565b809150509250925092565b5f8060408385031215611e61575f80fd5b8235611e6c81611cbd565b91506020830135611dd481611cbd565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611eca57815f1904821115611eb057611eb0611e7c565b80851615611ebd57918102915b93841c9390800290611e95565b509250929050565b5f82611ee05750600161054b565b81611eec57505f61054b565b8160018114611f025760028114611f0c57611f28565b600191505061054b565b60ff841115611f1d57611f1d611e7c565b50506001821b61054b565b5060208310610133831016604e8410600b8410161715611f4b575081810a61054b565b611f558383611e90565b805f1904821115611f6857611f68611e7c565b029392505050565b5f61065e60ff841683611ed2565b808202811582820484141761054b5761054b611e7c565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f60208284031215611fc5575f80fd5b5051919050565b5f60208284031215611fdc575f80fd5b815161065e81611d9b565b5f60208284031215611ff7575f80fd5b815161065e81611cbd565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f6060848603121561204f575f80fd5b8351925060208401519150604084015190509250925092565b8181038181111561054b5761054b611e7c565b8082018082111561054b5761054b611e7c565b5f826120a857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561210f5784516001600160a01b0316835293830193918301916001016120ea565b50506001600160a01b03969096166060850152505050608001529392505050565b5f61065e8383611ed256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122011bbdeb4e676c16dbbc330569d4ce1573b739968a9270ce5592d286af455c16264736f6c63430008140033

Deployed Bytecode Sourcemap

4806:11775:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7148:67;;;;;;;;;;-1:-1:-1;7208:5:0;;;;;;;;;;;;-1:-1:-1;;;7208:5:0;;;;7148:67;;;;;;;:::i;:::-;;;;;;;;8043:133;;;;;;;;;;-1:-1:-1;8043:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8043:133:0;1023:187:1;8182:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;8182:132:0;1215:177:1;12165:105:0;;;;;;;;;;;;;:::i;:::-;;16269:309;;;;;;;;;;-1:-1:-1;16269:309:0;;;;;:::i;:::-;;:::i;4547:87::-;;;;;;;;;;-1:-1:-1;4547:87:0;;;;;:::i;:::-;4602:4;4627:5;-1:-1:-1;;;;;4616:16:0;;;4627:5;;4616:16;;4547:87;6051:59;;;;;;;;;;;;;;;;7298:67;;;;;;;;;;-1:-1:-1;7298:67:0;;5035:1;2252:36:1;;2240:2;2225:18;7298:67:0;2110:184:1;5244:44:0;;;;;;;;;;-1:-1:-1;5244:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9048:516;;;;;;;;;;-1:-1:-1;9048:516:0;;;;;:::i;:::-;;:::i;7929:108::-;;;;;;;;;;-1:-1:-1;7929:108:0;;;;;:::i;:::-;;:::i;11955:202::-;;;;;;;;;;;;;:::i;11109:547::-;;;;;;;;;;-1:-1:-1;11109:547:0;;;;;:::i;:::-;;:::i;6117:59::-;;;;;;;;;;;;;;;;7542:103;;;;;;;;;;-1:-1:-1;7542:103:0;;;;;:::i;:::-;;:::i;6183:63::-;;;;;;;;;;;;;;;;7458:78;;;;;;;;;;-1:-1:-1;7510:7:0;7528:5;-1:-1:-1;;;;;7528:5:0;7458:78;;;-1:-1:-1;;;;;3891:32:1;;;3873:51;;3861:2;3846:18;7458:78:0;3727:203:1;12278:232:0;;;;;;;;;;-1:-1:-1;12278:232:0;;;;;:::i;:::-;;:::i;11664:283::-;;;;;;;;;;-1:-1:-1;11664:283:0;;;;;:::i;:::-;;:::i;7221:71::-;;;;;;;;;;-1:-1:-1;7283:7:0;;;;;;;;;;;;-1:-1:-1;;;7283:7:0;;;;7221:71;;8721:319;;;;;;;;;;-1:-1:-1;8721:319:0;;;;;:::i;:::-;;:::i;5574:19::-;;;;;;;;;;-1:-1:-1;5574:19:0;;;;-1:-1:-1;;;;;5574:19:0;;;7651:139;;;;;;;;;;-1:-1:-1;7651:139:0;;;;;:::i;:::-;;:::i;9572:466::-;;;;;;;;;;;;;:::i;7796:127::-;;;;;;;;;;-1:-1:-1;7796:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7894:18:0;;;7877:7;7894:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7796:127;4640:111;;;;;;;;;;-1:-1:-1;4640:111:0;;;;;:::i;:::-;;:::i;7371:81::-;;;;;;;;;;;;;:::i;8043:133::-;8118:4;8125:37;8134:10;8146:7;8155:6;8125:8;:37::i;:::-;-1:-1:-1;8170:4:0;8043:133;;;;;:::o;8182:132::-;8235:7;8252:60;8290:21;8308:1;8290:9;:21::i;:::-;8252:33;8269:15;6378:42;8269:9;:15::i;:::-;5099;5035:1;5099:2;:15;:::i;:::-;5082:33;;:13;:33;:::i;:::-;8252:16;;:33::i;:60::-;8245:67;;8182:132;:::o;12165:105::-;4602:4;4627:5;-1:-1:-1;;;;;4627:5:0;4514:10;4616:16;4498:38;;;;-1:-1:-1;;;4498:38:0;;;;;;;:::i;:::-;;;;;;;;;12224:5:::1;::::0;;12216:46:::1;::::0;-1:-1:-1;;;;;12224:5:0;;::::1;::::0;12240:21:::1;12216:46:::0;::::1;;;::::0;12240:21;;12216:46;12224:5;12216:46;12240:21;12224:5;12216:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12165:105::o:0;16269:309::-;16367:4;16384:36;16394:6;16402:9;16413:6;16384:9;:36::i;:::-;16431:117;16440:6;16448:10;16460:87;16496:6;16460:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16460:19:0;;;;;;:11;:19;;;;;;;;16480:10;16460:31;;;;;;;;;:87;:35;:87::i;:::-;16431:8;:117::i;:::-;-1:-1:-1;16566:4:0;16269:309;;;;;;:::o;9048:516::-;4602:4;4627:5;-1:-1:-1;;;;;4627:5:0;4514:10;4616:16;4498:38;;;;-1:-1:-1;;;4498: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;;7346:2:1;9399:157:0::1;::::0;::::1;7328:21:1::0;7385:2;7365:18;;;7358:30;7424:34;7404:18;;;7397:62;-1:-1:-1;;;7475:18:1;;;7468:42;7527:19;;9399:157:0::1;7144:408:1::0;9399:157:0::1;9048:516:::0;;;;;;;:::o;7929:108::-;4602:4;4627:5;-1:-1:-1;;;;;4627:5:0;4514:10;4616:16;4498:38;;;;-1:-1:-1;;;4498:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8003:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8003:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7929:108::o;11955:202::-;12019:10;;-1:-1:-1;;;;;12019:10:0;12005;:24;11997:67;;;;-1:-1:-1;;;11997:67:0;;7759:2:1;11997:67:0;;;7741:21:1;7798:2;7778:18;;;7771:30;7837:32;7817:18;;;7810:60;7887:18;;11997:67:0;7557:354:1;11997:67:0;12075:14;12092:24;12110:4;12092:9;:24::i;:::-;12075:41;;12127:22;12142:6;12127:14;:22::i;11109:547::-;4602:4;4627:5;-1:-1:-1;;;;;4627:5:0;4514:10;4616:16;4498:38;;;;-1:-1:-1;;;4498:38:0;;;;;;;:::i;:::-;11209:13:::1;11225:33;11252:5;11225:22;11242:4:::0;5099:15:::1;5035:1;5099:2;:15;:::i;:::-;5082:33;::::0;:13:::1;:33;:::i;:::-;11225:16:::0;::::1;:22::i;:::-;:26:::0;::::1;:33::i;:::-;11209:49:::0;-1:-1:-1;11260:19:0::1;11282:34;11310:5;11282:23;11299:5:::0;5099:15:::1;5035:1;5099:2;:15;:::i;11282:34::-;11260:56:::0;-1:-1:-1;11318:17:0::1;11338:36;11368:5;11338:25;11355:7:::0;5099:15:::1;5035:1;5099:2;:15;:::i;11338:36::-;11385:12;:20:::0;;;11407:11:::1;:25:::0;;;11434:15:::1;:27:::0;;;11318:56;-1:-1:-1;;11488:30:0::1;11513:4;11488:20;11506:1;11488:13;:11;:13::i;:30::-;11472:46;;11546:5;11537;:14;;:38;;;;;11570:5;11555:11;:20;;11537:38;:60;;;;;11592:5;11579:9;:18;;11537:60;11529:119;;;::::0;-1:-1:-1;;;11529:119:0;;8118:2:1;11529:119:0::1;::::0;::::1;8100:21:1::0;8157:2;8137:18;;;8130:30;8196:34;8176:18;;;8169:62;-1:-1:-1;;;8247:18:1;;;8240:44;8301:19;;11529:119:0::1;7916:410:1::0;7542:103:0;-1:-1:-1;;;;;7625:18:0;7608:7;7625:18;;;:9;:18;;;;;;;7542:103::o;12278:232::-;4602:4;4627:5;-1:-1:-1;;;;;4627:5:0;4514:10;4616:16;4498:38;;;;-1:-1:-1;;;4498:38:0;;;;;;;:::i;:::-;12382:41:::1;::::0;-1:-1:-1;;;12382:41:0;;12417:4:::1;12382:41;::::0;::::1;3873:51:1::0;12364:15:0::1;::::0;12382:63:::1;::::0;12441:3:::1;::::0;12382:54:::1;::::0;12428:7;;-1:-1:-1;;;;;12382:26:0;::::1;::::0;::::1;::::0;3846:18:1;;12382:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:63::-;12482:10;::::0;12456:46:::1;::::0;-1:-1:-1;;;12456:46:0;;-1:-1:-1;;;;;12482:10:0;;::::1;12456:46;::::0;::::1;8694:51:1::0;8761:18;;;8754:34;;;12364:81:0;;-1:-1:-1;12456:25:0;::::1;::::0;::::1;::::0;8667:18:1;;12456:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12353:157;12278:232:::0;;:::o;11664:283::-;4602:4;4627:5;-1:-1:-1;;;;;4627:5:0;4514:10;4616:16;4498:38;;;;-1:-1:-1;;;4498:38:0;;;;;;;:::i;:::-;11786:16:::1;:29:::0;;-1:-1:-1;;;;;11786:29:0;;::::1;-1:-1:-1::0;;;;;;11786:29:0;;::::1;::::0;::::1;::::0;;;11817:9:::1;:22:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;11841:10:::1;:25:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;11786:16:::1;11877:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;11877:30:0;;::::1;11786:29:::0;11877:30;;::::1;::::0;;;11909:23;;;;;:30;;;;::::1;::::0;;::::1;::::0;;11664:283::o;8721:319::-;4602:4;4627:5;-1:-1:-1;;;;;4627:5:0;4514:10;4616:16;4498:38;;;;-1:-1:-1;;;4498:38:0;;;;;;;:::i;:::-;8854:10:::1;:24:::0;;;8896:53:::1;8941:6;8896:32;8913:14:::0;5099:15:::1;5035:1;5099:2;:15;:::i;8896:53::-;8880:13;:69:::0;8978:54:::1;9024:6;8978:33;8995:15:::0;5099::::1;5035:1;5099:2;:15;:::i;8978:54::-;8961:14;:71:::0;-1:-1:-1;;;8721:319:0:o;7651:139::-;7729:4;7736:40;7746:10;7758:9;7769:6;7736:9;:40::i;9572:466::-;4602:4;4627:5;-1:-1:-1;;;;;4627:5:0;4514:10;4616:16;4498:38;;;;-1:-1:-1;;;4498:38:0;;;;;;;:::i;:::-;9640:14:::1;::::0;-1:-1:-1;;;9640:14:0;::::1;;;9639:15;9631:50;;;::::0;-1:-1:-1;;;9631:50:0;;9251:2:1;9631:50:0::1;::::0;::::1;9233:21:1::0;9290:2;9270:18;;;9263:30;9329:25;9309:18;;;9302:53;9372:18;;9631:50:0::1;9049:347:1::0;9631:50:0::1;9708:6;;;;;;;;;-1:-1:-1::0;;;;;9708:6:0::1;-1:-1:-1::0;;;;;9708:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9699:37:0::1;;9745:4;9752:6;;;;;;;;;-1:-1:-1::0;;;;;9752:6:0::1;-1:-1:-1::0;;;;;9752:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9699:67;::::0;-1:-1:-1;;;;;;9699:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9887:15:1;;;9699:67:0::1;::::0;::::1;9869:34:1::0;9939:15;;9919:18;;;9912:43;9804:18;;9699:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9692:4;:74:::0;;-1:-1:-1;;;;;;9692:74:0::1;-1:-1:-1::0;;;;;9692:74:0;;::::1;;::::0;;9809:6:::1;::::0;9777:59:::1;::::0;9794:4:::1;::::0;9809:6:::1;-1:-1:-1::0;;9777:8:0::1;:59::i;:::-;9847:6;::::0;-1:-1:-1;;;;;9847:6:0::1;:22;9877:21;9908:4;9914:24;9908:4:::0;9914:9:::1;:24::i;:::-;9939:1;9944:5:::0;;9847:119:::1;::::0;-1:-1:-1;;;;;;9847:119:0::1;::::0;;;;;;::::1;::::0;;;9939:1;;;-1:-1:-1;;;;;9944:5:0;;::::1;::::0;9950:15:::1;::::0;9847:119:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;9984:4:0::1;::::0;10006:6:::1;::::0;9977:53:::1;::::0;-1:-1:-1;;;9977:53:0;;-1:-1:-1;;;;;10006:6:0;;::::1;9977:53;::::0;::::1;8694:51:1::0;-1:-1:-1;;8761:18:1;;;8754:34;9984:4:0;::::1;::::0;-1:-1:-1;9977:20:0::1;::::0;8667:18:1;;9977:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4640:111::-:0;4602:4;4627:5;-1:-1:-1;;;;;4627:5:0;4514:10;4616:16;4498:38;;;;-1:-1:-1;;;4498:38:0;;;;;;;:::i;:::-;4706:5:::1;:11:::0;;-1:-1:-1;;;;;;4706:11:0::1;-1:-1:-1::0;;;;;4706:11:0;::::1;::::0;;::::1;::::0;;;4724:25:::1;::::0;3873:51:1;;;4724:25:0::1;::::0;3861:2:1;3846:18;4724:25:0::1;;;;;;;4640:111:::0;:::o;7371:81::-;4602:4;4627:5;-1:-1:-1;;;;;4627:5:0;4514:10;4616:16;4498:38;;;;-1:-1:-1;;;4498:38:0;;;;;;;:::i;:::-;7412:14:::1;:21:::0;;-1:-1:-1;;;;7434:16:0;-1:-1:-1;;;7434:16:0;;;7371:81::o;14419:335::-;-1:-1:-1;;;;;14512:19:0;;14504:68;;;;-1:-1:-1;;;14504:68:0;;11307:2:1;14504:68:0;;;11289:21:1;11346:2;11326:18;;;11319:30;11385:34;11365:18;;;11358:62;-1:-1:-1;;;11436:18:1;;;11429:34;11480:19;;14504:68:0;11105:400:1;14504:68:0;-1:-1:-1;;;;;14591:21:0;;14583:68;;;;-1:-1:-1;;;14583:68:0;;11712:2:1;14583:68:0;;;11694:21:1;11751:2;11731:18;;;11724:30;11790:34;11770:18;;;11763:62;-1:-1:-1;;;11841:18:1;;;11834:32;11883:19;;14583:68:0;11510:398:1;14583:68:0;-1:-1:-1;;;;;14662:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14714:32;;1361:25:1;;;14714:32:0;;1334:18:1;14714:32:0;;;;;;;14419:335;;;:::o;2286:98::-;2344:7;2371:5;2375:1;2371;:5;:::i;14762:1499::-;-1:-1:-1;;;;;14859:20:0;;14851:70;;;;-1:-1:-1;;;14851:70:0;;12248:2:1;14851:70:0;;;12230:21:1;12287:2;12267:18;;;12260:30;12326:34;12306:18;;;12299:62;-1:-1:-1;;;12377:18:1;;;12370:35;12422:19;;14851:70:0;12046:401:1;14851:70:0;-1:-1:-1;;;;;14940:23:0;;14932:71;;;;-1:-1:-1;;;14932:71:0;;12654:2:1;14932:71:0;;;12636:21:1;12693:2;12673:18;;;12666:30;12732:34;12712:18;;;12705:62;-1:-1:-1;;;12783:18:1;;;12776:33;12826:19;;14932:71:0;12452:399:1;14932:71:0;15032:17;15042:6;15032:9;:17::i;:::-;15022:6;:27;;15014:88;;;;-1:-1:-1;;;15014:88:0;;13058:2:1;15014:88:0;;;13040:21:1;13097:2;13077:18;;;13070:30;13136:34;13116:18;;;13109:62;-1:-1:-1;;;13187:18:1;;;13180:47;13244:19;;15014:88:0;12856:413:1;15014:88:0;15130:1;15121:6;:10;15113:47;;;;-1:-1:-1;;;15113:47:0;;13476:2:1;15113:47:0;;;13458:21:1;13515:2;13495:18;;;13488:30;13554:26;13534:18;;;13527:54;13598:18;;15113:47:0;13274:348:1;15113:47:0;-1:-1:-1;;;;;15175:19:0;;;;;;:11;:19;;;;;;;;15174:20;:47;;;;-1:-1:-1;;;;;;15199:22:0;;;;;;:11;:22;;;;;;;;15198:23;15174:47;15171:95;;;15231:14;;-1:-1:-1;;;15231:14:0;;;;15223:41;;;;-1:-1:-1;;;15223:41:0;;13829:2:1;15223:41:0;;;13811:21:1;13868:2;13848:18;;;13841:30;-1:-1:-1;;;13887:18:1;;;13880:44;13941:18;;15223:41:0;13627:338:1;15223:41:0;-1:-1:-1;;;;;15280:19:0;;;;;;:11;:19;;;;;;;;15279:20;:47;;;;-1:-1:-1;;;;;;15304:22:0;;;;;;:11;:22;;;;;;;;15303:23;15279:47;:77;;;;-1:-1:-1;15351:4:0;;-1:-1:-1;;;;;15330:26:0;;;15351:4;;15330:26;;15279:77;:107;;;;-1:-1:-1;;;;;;15360:26:0;;6378:42;15360:26;;15279:107;15276:220;;;15444:15;;-1:-1:-1;;;;;15407:20:0;;;;;;:9;:20;;;;;;:32;;15432:6;15407:24;:32::i;:::-;15406:53;;15398:96;;;;-1:-1:-1;;;15398:96:0;;14172:2:1;15398:96:0;;;14154:21:1;14211:2;14191:18;;;14184:30;14250:32;14230:18;;;14223:60;14300:18;;15398:96:0;13970:354:1;15398:96:0;15519:4;;-1:-1:-1;;;;;15509:14:0;;;15519:4;;15509:14;15506:121;;15543:11;;15533:6;:21;;:44;;;-1:-1:-1;;;;;;15558:19:0;;;;;;:11;:19;;;;;;;;15533:44;:70;;;-1:-1:-1;;;;;;15581:22:0;;;;;;:11;:22;;;;;;;;15533:70;15525:100;;;;-1:-1:-1;;;15525:100:0;;14531:2:1;15525:100:0;;;14513:21:1;14570:2;14550:18;;;14543:30;-1:-1:-1;;;14589:18:1;;;14582:47;14646:18;;15525:100:0;14329:341:1;15525:100:0;15655:12;;15645:6;:22;;:45;;;-1:-1:-1;;;;;;15671:19:0;;;;;;:11;:19;;;;;;;;15645:45;:71;;;-1:-1:-1;;;;;;15694:22:0;;;;;;:11;:22;;;;;;;;15645:71;15637:101;;;;-1:-1:-1;;;15637:101:0;;14531:2:1;15637:101:0;;;14513:21:1;14570:2;14550:18;;;14543:30;-1:-1:-1;;;14589:18:1;;;14582:47;14646:18;;15637:101:0;14329:341:1;15637:101:0;15766:4;;-1:-1:-1;;;;;15753:17:0;;;15766:4;;15753:17;:41;;;;-1:-1:-1;;;;;;15775:19:0;;;;;;:11;:19;;;;;;;;15774:20;15753:41;15750:71;;;15817:1;15796:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15750:71:0;15834:45;15853:6;15861:9;15872:6;15834:18;:45::i;:::-;15831:116;;;15881:40;15896:24;15914:4;15896:9;:24::i;:::-;15881:14;:40::i;:::-;15943:1;15923:9;:22;15831:116;-1:-1:-1;;;;;15977:17:0;;;;;;:9;:17;;;;;;:29;;15999:6;15977:21;:29::i;:::-;-1:-1:-1;;;;;15957:17:0;;;;;;:9;:17;;;;;:49;;;;16042:32;15967:6;16064:9;16042:13;:32::i;:::-;:78;;16114:6;16042:78;;;16077:34;16085:6;16093:9;16104:6;16077:7;:34::i;:::-;-1:-1:-1;;;;;16154:20:0;;;;;;:9;:20;;;;;;16017:103;;-1:-1:-1;16154:40:0;;16017:103;16154:24;:40::i;:::-;-1:-1:-1;;;;;16131:20:0;;;;;;;:9;:20;;;;;;;:63;;;;16210:43;;;;;;;;;;16238:14;1361:25:1;;1349:2;1334:18;;1215:177;16210:43:0;;;;;;;;14840:1421;14762:1499;;;:::o;2710:240::-;2830:7;2891:12;2883:6;;;;2875:29;;;;-1:-1:-1;;;2875:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2926:5:0;;;2710:240::o;2498:98::-;2556:7;2583:5;2587:1;2583;:5;:::i;10046:1051::-;5507:8;:15;;-1:-1:-1;;5507:15:0;5518:4;5507:15;;;;;;10183:14:::1;::::0;10165:12:::1;::::0;10141::::1;::::0;5507:8;;10140:66:::1;::::0;10204:1:::1;::::0;10141:57:::1;::::0;10183:14;;10141:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;10140:66::-;10117:89;;10217:32;10252:42;10281:12;10252:24;10263:12;;10252:6;:10;;:24;;;;:::i;:42::-;10217:77:::0;-1:-1:-1;10305:14:0::1;10322:36;:6:::0;10217:77;10322:10:::1;:36::i;:::-;10305:53:::0;-1:-1:-1;10394:21:0::1;10426:24;10305:53:::0;10426:16:::1;:24::i;:::-;10461:20;10484:41;:21;10510:14:::0;10484:25:::1;:41::i;:::-;10461:64;;10536:19;10557:48;10574:30;10591:12;;10574;:16;;:30;;;;:::i;:::-;10557:12:::0;;:16:::1;:48::i;:::-;10536:69;;10616:29;10648;10664:12;;10648:11;:15;;:29;;;;:::i;:::-;10616:61:::0;-1:-1:-1;10691:34:0;;10688:103:::1;;10727:61;10740:24;10766:21;10727:12;:61::i;:::-;10847:12;::::0;10801:20:::1;::::0;10824:36:::1;::::0;:18:::1;:11:::0;10840:1:::1;10824:15;:18::i;:36::-;10801:59:::0;-1:-1:-1;10874:16:0;;10871:71:::1;;10900:16;::::0;10892:48:::1;::::0;-1:-1:-1;;;;;10900:16:0;;::::1;::::0;10892:48;::::1;;;::::0;10927:12;;10900:16:::1;10892:48:::0;10900:16;10892:48;10927:12;10900:16;10892:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10871:71;10978:21;11013:28:::0;;11010:80:::1;;11051:10;::::0;11043:45:::1;::::0;-1:-1:-1;;;;;11051:10:0;;::::1;::::0;11043:45;::::1;;;::::0;11072:15;;11051:10:::1;11043:45:::0;11051:10;11043:45;11072:15;11051:10;11043:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11010:80;-1:-1:-1::0;;5527:8:0;:16;;-1:-1:-1;;5527:16:0;;;-1:-1:-1;;;;;;;;10046:1051:0:o;2392:98::-;2450:7;2477:5;2481:1;2477;:5;:::i;2180:98::-;2238:7;2265:5;2269:1;2265;:5;:::i;8322:391::-;8467:14;;8424:4;;8457:24;;;8424:4;;8514:24;8532:4;8514:9;:24::i;:::-;8562:8;;8514:29;-1:-1:-1;8514:29:0;;-1:-1:-1;8562:8:0;;8561:9;:24;;;;-1:-1:-1;8574:11:0;;-1:-1:-1;;;8574:11:0;;;;8561:24;:42;;;;-1:-1:-1;8589:14:0;;-1:-1:-1;;;8589:14:0;;;;8561:42;:54;;;;;8607:8;8561:54;:78;;;;-1:-1:-1;;;;;;8620:19:0;;;;;;:11;:19;;;;;;;;8619:20;8561:78;:99;;;;-1:-1:-1;8656:4:0;;-1:-1:-1;;;;;8643:17:0;;;8656:4;;8643:17;8561:99;:126;;;;;8677:10;;8664:9;;:23;;8561:126;:144;;;;;8691:14;8561:144;8554:151;8322:391;-1:-1:-1;;;;;;8322:391:0:o;13302:160::-;-1:-1:-1;;;;;13408:19:0;;13383:4;13408:19;;;:11;:19;;;;;;;;13407:20;:47;;;;-1:-1:-1;;;;;;;13432:22:0;;;;;:11;:22;;;;;;;;13431:23;;13302:160;-1:-1:-1;13302:160:0:o;13796:615::-;13882:7;13938:1;13905:30;13917:6;13925:9;13905:11;:30::i;:::-;:34;13902:487;;;13951:17;13971:59;13999:30;14011:6;14019:9;13999:11;:30::i;:::-;13982:11;;13971:23;;:6;;:10;:23::i;:59::-;14086:4;14068:24;;;;:9;:24;;;;;;13951:79;;-1:-1:-1;14068:39:0;;13951:79;14068:28;:39::i;:::-;14059:4;14041:24;;;;:9;:24;;;;;;;:66;;;;14123:42;;-1:-1:-1;;;;;14123:42:0;;;;;;;14155:9;1361:25:1;;1349:2;1334:18;;1215:177;14123:42:0;;;;;;;;14197:1;14179:7;;:20;:64;;;;;14236:7;;14203:30;14215:6;14223:9;14203:11;:30::i;:::-;:40;14179:64;14176:148;;;14245:77;14263:4;6378:42;14285:36;14313:7;;14285:23;14296:11;;14285:6;:10;;:23;;;;:::i;:36::-;14245:9;:77::i;:::-;14341:46;14364:6;14352:9;:18;:34;;14377:9;14352:34;;;14373:1;14352:34;14341:6;;:10;:46::i;:::-;14334:53;;;;;13902:487;-1:-1:-1;14397:6:0;13796:615;-1:-1:-1;;13796:615:0:o;12860:434::-;12950:16;;;12964:1;12950:16;;;;;;;;12926:21;;12950:16;;;;;;;;;;-1:-1:-1;12950:16:0;12926:40;;12995:4;12977;12982:1;12977:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12977:23:0;;;:7;;;;;;;;;;:23;;;;13021:6;;:13;;;-1:-1:-1;;;13021:13:0;;;;:6;;;;;:11;;:13;;;;;12977:7;;13021:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13011:4;13016:1;13011:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13011:23:0;;;:7;;;;;;;;;:23;13077:6;;13045:53;;13062:4;;13077:6;13086:11;13045:8;:53::i;:::-;13109:6;;:177;;-1:-1:-1;;;13109:177:0;;-1:-1:-1;;;;;13109:6:0;;;;:57;;:177;;13181:11;;13109:6;;13223:4;;13250;;13270:15;;13109:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12915:379;12860:434;:::o;12518:334::-;12631:6;;12599:53;;12616:4;;-1:-1:-1;;;;;12631:6:0;12640:11;12599:8;:53::i;:::-;12663:6;;12804:9;;12663:181;;-1:-1:-1;;;12663:181:0;;-1:-1:-1;;;;;12663:6:0;;;;:22;;12693:9;;12663:181;;12726:4;;12746:11;;12663:6;;;;12804:9;;12828:15;;12663:181;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12518:334;;:::o;13470:318::-;13580:10;;13549:7;;-1:-1:-1;;;;;13572:18:0;;;13580:10;;13572:18;:39;;;;-1:-1:-1;13594:4:0;;-1:-1:-1;;;;;13594:17:0;;;:4;;:17;;13572:39;13569:89;;;13621:35;13646:9;;13633:11;;:22;;;;:::i;:::-;13621:7;;;:11;:35::i;:::-;13614:42;;;;13569:89;13684:4;;-1:-1:-1;;;;;13684:4:0;;;13671:17;;;;13668:38;;-1:-1:-1;13697:7:0;;13690:14;;13668:38;13729:4;;-1:-1:-1;;;;;13729:4:0;;;13719:14;;;;13716:36;;-1:-1:-1;13742:8:0;;13735:15;;13716:36;-1:-1:-1;13769:11:0;;13470:318;;;;:::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;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;2299:592::-;2412:6;2420;2428;2436;2444;2452;2460;2513:3;2501:9;2492:7;2488:23;2484:33;2481:53;;;2530:1;2527;2520:12;2481:53;-1:-1:-1;;2553:23:1;;;2623:2;2608:18;;2595:32;;-1:-1:-1;2674:2:1;2659:18;;2646:32;;2725:2;2710:18;;2697:32;;-1:-1:-1;2776:3:1;2761:19;;2748:33;;-1:-1:-1;2828:3:1;2813:19;;2800:33;;-1:-1:-1;2880:3:1;2865:19;2852:33;;-1:-1:-1;2299:592:1;-1:-1:-1;2299:592:1:o;2896:118::-;2982:5;2975:13;2968:21;2961:5;2958:32;2948:60;;3004:1;3001;2994:12;3019:382;3084:6;3092;3145:2;3133:9;3124:7;3120:23;3116:32;3113:52;;;3161:1;3158;3151:12;3113:52;3200:9;3187:23;3219:31;3244:5;3219:31;:::i;:::-;3269:5;-1:-1:-1;3326:2:1;3311:18;;3298:32;3339:30;3298:32;3339:30;:::i;:::-;3388:7;3378:17;;;3019:382;;;;;:::o;3406:316::-;3483:6;3491;3499;3552:2;3540:9;3531:7;3527:23;3523:32;3520:52;;;3568:1;3565;3558:12;3520:52;-1:-1:-1;;3591:23:1;;;3661:2;3646:18;;3633:32;;-1:-1:-1;3712:2:1;3697:18;;;3684:32;;3406:316;-1:-1:-1;3406:316:1:o;3935:529::-;4012:6;4020;4028;4081:2;4069:9;4060:7;4056:23;4052:32;4049:52;;;4097:1;4094;4087:12;4049:52;4136:9;4123:23;4155:31;4180:5;4155:31;:::i;:::-;4205:5;-1:-1:-1;4262:2:1;4247:18;;4234:32;4275:33;4234:32;4275:33;:::i;:::-;4327:7;-1:-1:-1;4386:2:1;4371:18;;4358:32;4399:33;4358:32;4399:33;:::i;:::-;4451:7;4441:17;;;3935:529;;;;;:::o;4469:388::-;4537:6;4545;4598:2;4586:9;4577:7;4573:23;4569:32;4566:52;;;4614:1;4611;4604:12;4566:52;4653:9;4640:23;4672:31;4697:5;4672:31;:::i;:::-;4722:5;-1:-1:-1;4779:2:1;4764:18;;4751:32;4792:33;4751:32;4792:33;:::i;5122:127::-;5183:10;5178:3;5174:20;5171:1;5164:31;5214:4;5211:1;5204:15;5238:4;5235:1;5228:15;5254:422;5343:1;5386:5;5343:1;5400:270;5421:7;5411:8;5408:21;5400:270;;;5480:4;5476:1;5472:6;5468:17;5462:4;5459:27;5456:53;;;5489:18;;:::i;:::-;5539:7;5529:8;5525:22;5522:55;;;5559:16;;;;5522:55;5638:22;;;;5598:15;;;;5400:270;;;5404:3;5254:422;;;;;:::o;5681:806::-;5730:5;5760:8;5750:80;;-1:-1:-1;5801:1:1;5815:5;;5750:80;5849:4;5839:76;;-1:-1:-1;5886:1:1;5900:5;;5839:76;5931:4;5949:1;5944:59;;;;6017:1;6012:130;;;;5924:218;;5944:59;5974:1;5965:10;;5988:5;;;6012:130;6049:3;6039:8;6036:17;6033:43;;;6056:18;;:::i;:::-;-1:-1:-1;;6112:1:1;6098:16;;6127:5;;5924:218;;6226:2;6216:8;6213:16;6207:3;6201:4;6198:13;6194:36;6188:2;6178:8;6175:16;6170:2;6164:4;6161:12;6157:35;6154:77;6151:159;;;-1:-1:-1;6263:19:1;;;6295:5;;6151:159;6342:34;6367:8;6361:4;6342:34;:::i;:::-;6412:6;6408:1;6404:6;6400:19;6391:7;6388:32;6385:58;;;6423:18;;:::i;:::-;6461:20;;5681:806;-1:-1:-1;;;5681:806:1:o;6492:140::-;6550:5;6579:47;6620:4;6610:8;6606:19;6600:4;6579:47;:::i;6637:168::-;6710:9;;;6741;;6758:15;;;6752:22;;6738:37;6728:71;;6779:18;;:::i;6810:329::-;7012:2;6994:21;;;7051:1;7031:18;;;7024:29;-1:-1:-1;;;7084:2:1;7069:18;;7062:36;7130:2;7115:18;;6810:329::o;8331:184::-;8401:6;8454:2;8442:9;8433:7;8429:23;8425:32;8422:52;;;8470:1;8467;8460:12;8422:52;-1:-1:-1;8493:16:1;;8331:184;-1:-1:-1;8331:184:1:o;8799:245::-;8866:6;8919:2;8907:9;8898:7;8894:23;8890:32;8887:52;;;8935:1;8932;8925:12;8887:52;8967:9;8961:16;8986:28;9008:5;8986:28;:::i;9401:251::-;9471:6;9524:2;9512:9;9503:7;9499:23;9495:32;9492:52;;;9540:1;9537;9530:12;9492:52;9572:9;9566:16;9591:31;9616:5;9591:31;:::i;9966:607::-;-1:-1:-1;;;;;10325:15:1;;;10307:34;;10372:2;10357:18;;10350:34;;;;10415:2;10400:18;;10393:34;;;;10458:2;10443:18;;10436:34;;;;10507:15;;;10501:3;10486:19;;10479:44;10287:3;10539:19;;10532:35;;;;10256:3;10241:19;;9966:607::o;10578:306::-;10666:6;10674;10682;10735:2;10723:9;10714:7;10710:23;10706:32;10703:52;;;10751:1;10748;10741:12;10703:52;10780:9;10774:16;10764:26;;10830:2;10819:9;10815:18;10809:25;10799:35;;10874:2;10863:9;10859:18;10853:25;10843:35;;10578:306;;;;;:::o;11913:128::-;11980:9;;;12001:11;;;11998:37;;;12015:18;;:::i;14675:125::-;14740:9;;;14761:10;;;14758:36;;;14774:18;;:::i;14805:217::-;14845:1;14871;14861:132;;14915:10;14910:3;14906:20;14903:1;14896:31;14950:4;14947:1;14940:15;14978:4;14975:1;14968:15;14861:132;-1:-1:-1;15007:9:1;;14805:217::o;15159:127::-;15220:10;15215:3;15211:20;15208:1;15201:31;15251:4;15248:1;15241:15;15275:4;15272:1;15265:15;15291:980;15553:4;15601:3;15590:9;15586:19;15632:6;15621:9;15614:25;15658:2;15696:6;15691:2;15680:9;15676:18;15669:34;15739:3;15734:2;15723:9;15719:18;15712:31;15763:6;15798;15792:13;15829:6;15821;15814:22;15867:3;15856:9;15852:19;15845:26;;15906:2;15898:6;15894:15;15880:29;;15927:1;15937:195;15951:6;15948:1;15945:13;15937:195;;;16016:13;;-1:-1:-1;;;;;16012:39:1;16000:52;;16107:15;;;;16072:12;;;;16048:1;15966:9;15937:195;;;-1:-1:-1;;;;;;;16188:32:1;;;;16183:2;16168:18;;16161:60;-1:-1:-1;;;16252:3:1;16237:19;16230:35;16149:3;15291:980;-1:-1:-1;;;15291:980:1:o;16276:131::-;16336:5;16365:36;16392:8;16386:4;16365:36;:::i

Swarm Source

ipfs://11bbdeb4e676c16dbbc330569d4ce1573b739968a9270ce5592d286af455c162
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.