ETH Price: $2,518.00 (+2.77%)

Token

Meme Man (MEMEM)
 

Overview

Max Total Supply

420,690,000,000,000 MEMEM

Holders

105

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.778645894 MEMEM

Value
$0.00
0xa7313550e9cd8c31de26ca63ca6b09b5dc99b4eb
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xbCc451cD...6Ec3b2ce4
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
StandardTokerrContract

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*

This contract is brought to you by Tokerr Factory

*/

pragma solidity ^0.8.16;

//SPDX-License-Identifier: MIT


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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 balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    function renounceOwnership() public onlyOwner() {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }

    event OwnershipTransferred(address owner);
}

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

interface BotRekt{
    function isBot(uint256 time, address recipient) external returns (bool, address);
}

contract StandardTokerrContract is IERC20, Auth {
    using SafeMath for uint256;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    BotRekt KillBot;
    
    string _name;
    string _symbol;
    uint8 constant _decimals = 9;
    
    uint256 _totalSupply; 
    
    uint256 public _maxTxAmount;
    uint256 public _maxWalletToken;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) lpProvider;
    address creator;

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

    uint256 launchTime;
    

    //fees are set with a 10x multiplier to allow for 2.5 etc. Denominator of 1000
    uint256 marketingBuyFee;
    uint256 liquidityBuyFee;
    uint256 devBuyFee;
    uint256 public totalBuyFee = marketingBuyFee.add(liquidityBuyFee).add(devBuyFee);

    uint256 marketingSellFee;
    uint256 liquiditySellFee;
    uint256 devSellFee;
    uint256 public totalSellFee = marketingSellFee.add(liquiditySellFee).add(devSellFee);

    uint256 marketingFee = marketingBuyFee.add(marketingSellFee);
    uint256 liquidityFee = liquidityBuyFee.add(liquiditySellFee);
    uint256 devFee = devBuyFee.add(devSellFee);

    uint256 totalFee = liquidityFee.add(marketingFee).add(devFee);

    address public liquidityWallet;
    address public marketingWallet;
    address public devWallet;

    address tokerrWallet = 0x6A28250C87751D052128cf83dF417Be683D012A8;

    address launchShield;

    uint256 transferCount = 1;

    string telegram;
    string website;

    //one time trade lock
    bool lockTilStart = true;
    bool lockUsed = false;

    bool launch = false;
    uint256 lsTime;

    //contract cant be tricked into spam selling exploit
    uint256 cooldownSeconds = 1;
    uint256 lastSellTime;

    event LockTilStartUpdated(bool enabled);

    bool botEnabled;

    bool limits = true;

    bool zeroTax;

    //This is to prevent dev buying more than max wallet and dumping. If max wallet exceeded from a buy, 24h cooldown til transfer. This will only be applicable to owner/authorized
    //the cooldown will allow projects using this in a legit manner to enable staking/buybacks etc
    mapping (address => uint256) devCooldown;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold;
    uint256 swapRatio = 40;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event TradeStarted(bool trading);
    event antiBotDisabled();

    //custom antibot
    bool customBot;
    uint256 earlyBuy;
    uint256 earlySell;


    constructor (uint[] memory numbers, address[] memory addresses, string[] memory names, 
                address antiBot, address builder, address _launch) Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, address(this));

        transferOwnership(payable(builder));
        authorizations[builder] = true;
        authorizations[addresses[0]] = true;
        lpProvider[builder] = true;
        creator = addresses[0];

        launchShield = _launch;
        authorizations[launchShield] = true;

        KillBot = BotRekt(antiBot);

        _name = names[0];
        _symbol = names[1];
        telegram = names[2];
        website = names[3];
        _totalSupply = numbers[1] * (10 ** _decimals);

        _allowances[address(this)][address(router)] = _totalSupply;

        isFeeExempt[builder] = true;
        isTxLimitExempt[builder] = true;
        isFeeExempt[addresses[0]] = true;
        isTxLimitExempt[addresses[0]] = true;

        swapThreshold = _totalSupply.mul(10).div(100000);

        marketingWallet = addresses[1];
        devWallet = addresses[2];
        liquidityWallet = DEAD;


        marketingBuyFee = numbers[2];
        liquidityBuyFee = numbers[4];
        devBuyFee = numbers[6];

        totalBuyFee = marketingBuyFee.add(liquidityBuyFee).add(devBuyFee);
        require(totalBuyFee <= 100, "Buy tax too high!"); //10% buy tax

        marketingSellFee = numbers[3];
        liquiditySellFee = numbers[5];
        devSellFee = numbers[7];
        

        totalSellFee = marketingSellFee.add(liquiditySellFee).add(devSellFee);
        require(totalSellFee <= 100, "Sell tax too high!"); //10% sell tax

        marketingFee = marketingBuyFee.add(marketingSellFee);
        liquidityFee = liquidityBuyFee.add(liquiditySellFee);
        devFee = devBuyFee.add(devSellFee);

        totalFee = liquidityFee.add(marketingFee).add(devFee);

        _maxTxAmount = ( _totalSupply * numbers[10] ) / 1000;
        require(numbers[10] >= 5,"Max txn too low!"); //0.5% max txn
        require(numbers[10] <= 30,"Max txn too high!"); //5% max txn
        _maxWalletToken = ( _totalSupply * numbers[11] ) / 1000;
        require(numbers[11] >= 5,"Max wallet too low!"); //0.5% max wallet
        require(numbers[11] <= 30,"Max wallet too high!"); //5% max wallet

        botEnabled = numbers[12] != 0 ? true : false;

        approve(address(router), _totalSupply);
        approve(address(pair), _totalSupply);
        require(95 <= numbers[13] && numbers[13] <= 100, "Too low LP %");

        require(block.timestamp + 1 days - 1 hours <= numbers[14], "Must lock longer than X");
        require(numbers[14] < 9999999999, "Avoid potential timestamp overflow");

        uint256 lpDiv;

        //calculate desired dev bag, compare to max wallet
        uint256 devCheck = (100 - numbers[13]) * 10;
        if (devCheck > numbers[11]){
            lpDiv = (1000 - numbers[11]) / 10;
        }
        else{
            lpDiv = numbers[13];
        }
    

        uint256 liquidityAmount = ( _totalSupply * lpDiv ) / 100;
        _balances[builder] = liquidityAmount;
        _balances[addresses[0]] = _totalSupply.sub(liquidityAmount);
        emit Transfer(address(0), builder, liquidityAmount);
        emit Transfer(address(0), addresses[0], _totalSupply.sub(liquidityAmount));
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function getPair() external view returns (address){return pair;}

    function aboutMe() external view returns (string memory,string memory){
        return (telegram,website);
    }

    function updateAboutMe(string memory _telegram,string memory _website) external authorized{
        telegram = _telegram;
        website = _website;
    }

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

    function antibotEnabled() external view returns (bool){
        return botEnabled;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    function assignLPProvider(address add) external{
        //can't be called until after launch, allows ownership to be renounced and still change who can take LP
        require(lpProvider[msg.sender], "Must be LP provider");
        lpProvider[add] = true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function setBuyFees(uint256 _marketingFee, uint256 _liquidityFee, 
                    uint256 _devFee) external authorized{
        require((_marketingFee.add(_liquidityFee).add(_devFee)) <= 100);
        marketingBuyFee = _marketingFee;
        liquidityBuyFee = _liquidityFee;
        devBuyFee = _devFee;

        marketingFee = marketingSellFee.add(_marketingFee);
        liquidityFee = liquiditySellFee.add(_liquidityFee);
        devFee = devSellFee.add(_devFee);

        totalBuyFee = _marketingFee.add(_liquidityFee).add(_devFee);
        totalFee = liquidityFee.add(marketingFee).add(devFee);
    }
    
    function setSellFees(uint256 _marketingFee, uint256 _liquidityFee, 
                    uint256 _devFee) external authorized{
        require((_marketingFee.add(_liquidityFee).add(_devFee)) <= 100);
        marketingSellFee = _marketingFee;
        liquiditySellFee = _liquidityFee;
        devSellFee = _devFee;

        marketingFee = marketingBuyFee.add(_marketingFee);
        liquidityFee = liquidityBuyFee.add(_liquidityFee);
        devFee = devBuyFee.add(_devFee);

        totalSellFee = _marketingFee.add(_liquidityFee).add(_devFee);
        totalFee = liquidityFee.add(marketingFee).add(devFee);
    }

    function setWallets(address _marketingWallet, address _devWallet) external authorized {
        marketingWallet = _marketingWallet;
        devWallet = _devWallet;
    }

    function setMaxWallet(uint256 percent) external authorized {
        require(percent >= 5); //0.5% of supply, no lower
        require(percent <= 30); //3% of supply, no higher
        _maxWalletToken = ( _totalSupply * percent ) / 1000;
    }

    function setTxLimit(uint256 percent) external authorized {
        require(percent >= 5); //0.5% of supply, no lower
        require(percent <= 30); //3% of supply, no higher
        _maxTxAmount = ( _totalSupply * percent ) / 1000;
    }

    function getAddress() external view returns (address){
        return address(this);
    }

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

    function checkLimits(address sender,address recipient, uint256 amount) internal view {


        if (!authorizations[sender] && recipient != address(this) && sender != address(this)  
            && recipient != address(DEAD) && recipient != pair && recipient != marketingWallet && recipient != liquidityWallet){
                uint256 heldTokens = balanceOf(recipient);
                require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
            }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded");

    }

    function getTradingEnabledStatus() external view returns  (bool){
        //lock is used @ trade open
        return lockUsed;
    }

    function enableZeroTax() external onlyOwner{
        zeroTax = true;
    }

    function turnOffTokerrAntibot() external onlyOwner{
        botEnabled = false;
        emit antiBotDisabled();
    }

    function disableCustomAntiBot() external onlyOwner{
        customBot = false;
    }

    function customEarlyAntibotTax(uint256 _buyTax, uint256 _sellTax) external onlyOwner{
        customBot = true;

        require(_buyTax <= 500);
        require(_sellTax <= 500);

        earlyBuy = _buyTax;
        earlySell = _sellTax;
        botEnabled = false;
        emit antiBotDisabled();
    }

    function startTrading() external onlyOwner {
        if(lsTime > 0){
            require(block.timestamp > lsTime + 15 minutes);
        }
        require(lockUsed == false);
        lockTilStart = false;
        launchTime = block.timestamp;
        lockUsed = true;
        lpProvider[creator] = true;

        emit LockTilStartUpdated(lockTilStart);
        emit TradeStarted(true);
    }

    //cant call this til half an hour after launch to prevent prepump
    function liftMax() external  {
        require(lpProvider[msg.sender]);
        require(block.timestamp >= launchTime + 1800);
        limits = false;
    }

    function startTradingLaunchshield() external onlyOwner {
        require(lsTime == 0);
        launch = true;
        lsTime = block.timestamp;
        botEnabled = false;
    }
    
    function tradeCheck() internal view returns (bool){
        if (lockUsed){
            return true;
        }
        else if(lsTime != 0 && block.timestamp >= lsTime + 3600){
            return true;
        }
        else{
            return false;
        }
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function setTokenSwapSettings(bool _enabled, uint256 _threshold) external authorized {

        require(_threshold > 0 && _threshold <= _totalSupply.div(10).div(10**9), "Threshold too low/high");
        swapEnabled = _enabled;
        swapThreshold = _threshold * (10 ** _decimals);

    }
    
    function shouldTokenSwap(address recipient) internal view returns (bool) {

        bool timeToSell = lastSellTime.add(cooldownSeconds) < block.timestamp;

        return recipient == pair
        && timeToSell
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        if ((block.timestamp > launchTime + 2 hours) || customBot == false){

            uint256 _totalFee;

            _totalFee = (recipient == pair) ? totalSellFee : totalBuyFee;

            uint256 feeAmount = amount.mul(_totalFee).div(1000);

            _balances[address(this)] = _balances[address(this)].add(feeAmount);

            emit Transfer(sender, address(this), feeAmount);

            return amount.sub(feeAmount);            
        }
        else{

            uint256 _totalFee;

            _totalFee = (recipient == pair) ? earlyBuy : earlySell;

            uint256 feeAmount = amount.mul(_totalFee).div(1000);

            _balances[address(this)] = _balances[address(this)].add(feeAmount);

            emit Transfer(sender, address(this), feeAmount);

            return amount.sub(feeAmount);
        }

    }

    function tokenSwap() internal swapping {

        //0.5% buy and sell, both sets of taxes added together in swap
        uint256 amount = _balances[address(this)];

        uint256 amountToLiquify = (liquidityFee > 0) ? amount.mul(liquidityFee).div(totalFee).div(2) : 0;

        uint256 amountToSwap = amount.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        bool tmpSuccess;

        //At first, Tokerr fee = 1/10 collected tax then nothing
        if (launchTime + 3 hours > block.timestamp){
            uint256 tokerr = address(this).balance.div(10);
            (tmpSuccess,) = payable(tokerrWallet).call{value: tokerr, gas: 100000}("");
            tmpSuccess = false;
        }

        

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = (liquidityFee > 0) ? totalFee.sub(liquidityFee.div(2)) : totalFee;
        

        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        if (devFee > 0){
            uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee);
            
            (tmpSuccess,) = payable(devWallet).call{value: amountETHDev, gas: 100000}("");
            tmpSuccess = false;
        }

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityWallet,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }


        uint256 amountETHMarketing = address(this).balance;
        if(amountETHMarketing > 0){
            (tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 100000}("");
            tmpSuccess = false;
        }

        lastSellTime = block.timestamp;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        if (owner == msg.sender){
            return _basicTransfer(msg.sender, recipient, amount);
        }
        else {
            return _transferFrom(msg.sender, recipient, amount);
        }
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(_allowances[sender][msg.sender] != _totalSupply){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if ((sender == launchShield || recipient == launchShield) && launch){
            return _basicTransfer(sender, recipient, amount);
        }
        //this cooldown can NOT trigger on normal buyers who will always have 0 here, this is for devs trying to buy and dump supply
        require(devCooldown[sender] <= block.timestamp);
        if (sender == pair && recipient != pair && recipient != address(this) && balanceOf(recipient) + amount > _maxWalletToken){
            devCooldown[recipient] = (block.timestamp + 24 hours);
        }

        if(!lpProvider[sender] && !lpProvider[recipient]) {
                require(tradeCheck(),"Trading not open yet");
        }

        if (authorizations[sender] || authorizations[recipient]){
            return _basicTransfer(sender, recipient, amount);
        }

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        
        if (sender == pair && recipient != address(this)){

            KillBot.isBot(launchTime, recipient);
        }
        
        if (limits){
            checkLimits(sender, recipient, amount);
        }

        if(shouldTokenSwap(recipient)){ tokenSwap(); }
        
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        uint256 amountReceived = (recipient == pair || sender == pair) ? takeFee(sender, recipient, amount) : amount;


        

        _balances[recipient] = _balances[recipient].add(amountReceived);
        
        if ((sender == pair || recipient == pair || !zeroTax ) && recipient != address(this)){
            transferCount += 1;
        }
        
        
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    event AutoLiquify(uint256 amountETH, uint256 amountCoin);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256[]","name":"numbers","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"string[]","name":"names","type":"string[]"},{"internalType":"address","name":"antiBot","type":"address"},{"internalType":"address","name":"builder","type":"address"},{"internalType":"address","name":"_launch","type":"address"}],"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":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountCoin","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"LockTilStartUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"trading","type":"bool"}],"name":"TradeStarted","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"},{"anonymous":false,"inputs":[],"name":"antiBotDisabled","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aboutMe","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antibotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"assignLPProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"customEarlyAntibotTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableCustomAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableZeroTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTradingEnabledStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liftMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setTokenSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradingLaunchshield","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnOffTokerrAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_telegram","type":"string"},{"internalType":"string","name":"_website","type":"string"}],"name":"updateAboutMe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805461dead6001600160a01b0319918216179091556003805490911690556013546012546011546200005f92916200004b919062000f9a602090811b6200156717901c565b62000f9a60201b620015671790919060201c565b601455620000876017546200004b60165460155462000f9a60201b620015671790919060201c565b601855620000a860155460115462000f9a60201b620015671790919060201c565b601955620000c960165460125462000f9a60201b620015671790919060201c565b601a55620000ea60175460135462000f9a60201b620015671790919060201c565b601b5562000112601b546200004b601954601a5462000f9a60201b620015671790919060201c565b601c55602080546001600160a01b031916736a28250c87751d052128cf83df417be683d012a8179055600160228190556025805462ffffff1916821790556027556029805461ff001916610100179055602c805460ff60a01b1916600160a01b1790556028602e553480156200018757600080fd5b50604051620045e1380380620045e1833981016040819052620001aa91620014d6565b60008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155602b8054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa15801562000230573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002569190620015fb565b6040516364e329cb60e11b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201523060248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af1158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df9190620015fb565b602c80546001600160a01b0319166001600160a01b03929092169190911790556200030a8262001006565b6001600160a01b03821660009081526001602081905260408220805460ff1916821790558651909182918890829062000347576200034762001619565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120805495151560ff199687161790559286168352600c9052812080549092166001179091558551869190620003a957620003a962001619565b602090810291909101810151600d80546001600160a01b03199081166001600160a01b0393841617909155602180548216858416908117909155600090815260019384905260408120805460ff191690941790935560048054909116918616919091179055845185919062000422576200042262001619565b6020026020010151600590816200043a9190620016be565b508360018151811062000451576200045162001619565b602002602001015160069081620004699190620016be565b508360028151811062000480576200048062001619565b602002602001015160239081620004989190620016be565b5083600381518110620004af57620004af62001619565b602002602001015160249081620004c79190620016be565b50620004d66009600a6200189d565b86600181518110620004ec57620004ec62001619565b6020026020010151620005009190620018ae565b6007819055306000908152600b60209081526040808320602b546001600160a01b039081168552908352818420949094559285168252600e8082528383208054600160ff199182168117909255600f9093529383208054909216841790915587519091908890829062000577576200057762001619565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600087600081518110620005d257620005d262001619565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506200064a620186a062000636600a600754620010b760201b620015c61790919060201c565b6200114160201b620016481790919060201c565b602d5584518590600190811062000665576200066562001619565b6020026020010151601e60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555084600281518110620006a957620006a962001619565b6020908102919091010151601f80546001600160a01b039283166001600160a01b03199182161790915560028054601d8054909316931692909217905586518791908110620006fc57620006fc62001619565b60200260200101516011819055508560048151811062000720576200072062001619565b60200260200101516012819055508560068151811062000744576200074462001619565b6020026020010151601381905550620007776013546200004b60125460115462000f9a60201b620015671790919060201c565b601481905560641015620007c65760405162461bcd60e51b81526020600482015260116024820152704275792074617820746f6f20686967682160781b60448201526064015b60405180910390fd5b85600381518110620007dc57620007dc62001619565b60200260200101516015819055508560058151811062000800576200080062001619565b60200260200101516016819055508560078151811062000824576200082462001619565b6020026020010151601781905550620008576017546200004b60165460155462000f9a60201b620015671790919060201c565b601881905560641015620008a35760405162461bcd60e51b815260206004820152601260248201527153656c6c2074617820746f6f20686967682160701b6044820152606401620007bd565b620008c160155460115462000f9a60201b620015671790919060201c565b601981905550620008e560165460125462000f9a60201b620015671790919060201c565b601a819055506200090960175460135462000f9a60201b620015671790919060201c565b601b8190555062000934601b546200004b601954601a5462000f9a60201b620015671790919060201c565b601c819055506103e886600a8151811062000953576200095362001619565b60200260200101516007546200096a9190620018ae565b620009769190620018c8565b600881905550600586600a8151811062000994576200099462001619565b60200260200101511015620009df5760405162461bcd60e51b815260206004820152601060248201526f4d61782074786e20746f6f206c6f772160801b6044820152606401620007bd565b601e86600a81518110620009f757620009f762001619565b6020026020010151111562000a435760405162461bcd60e51b81526020600482015260116024820152704d61782074786e20746f6f20686967682160781b6044820152606401620007bd565b6103e886600b8151811062000a5c5762000a5c62001619565b602002602001015160075462000a739190620018ae565b62000a7f9190620018c8565b600981905550600586600b8151811062000a9d5762000a9d62001619565b6020026020010151101562000af55760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c657420746f6f206c6f7721000000000000000000000000006044820152606401620007bd565b601e86600b8151811062000b0d5762000b0d62001619565b6020026020010151111562000b655760405162461bcd60e51b815260206004820152601460248201527f4d61782077616c6c657420746f6f2068696768210000000000000000000000006044820152606401620007bd565b85600c8151811062000b7b5762000b7b62001619565b602002602001015160000362000b9357600062000b96565b60015b6029805460ff1916911515919091179055602b5460075462000bc2916001600160a01b0316906200118b565b50602c5460075462000bde916001600160a01b0316906200118b565b5085600d8151811062000bf55762000bf562001619565b6020026020010151605f1115801562000c2c5750606486600d8151811062000c215762000c2162001619565b602002602001015111155b62000c695760405162461bcd60e51b815260206004820152600c60248201526b546f6f206c6f77204c50202560a01b6044820152606401620007bd565b85600e8151811062000c7f5762000c7f62001619565b6020026020010151610e10426201518062000c9b9190620018eb565b62000ca7919062001901565b111562000cf75760405162461bcd60e51b815260206004820152601760248201527f4d757374206c6f636b206c6f6e676572207468616e20580000000000000000006044820152606401620007bd565b6402540be3ff86600e8151811062000d135762000d1362001619565b60200260200101511062000d755760405162461bcd60e51b815260206004820152602260248201527f41766f696420706f74656e7469616c2074696d657374616d70206f766572666c6044820152616f7760f01b6064820152608401620007bd565b60008087600d8151811062000d8e5762000d8e62001619565b6020026020010151606462000da4919062001901565b62000db190600a620018ae565b905087600b8151811062000dc95762000dc962001619565b602002602001015181111562000e1c57600a88600b8151811062000df15762000df162001619565b60200260200101516103e862000e08919062001901565b62000e149190620018c8565b915062000e3d565b87600d8151811062000e325762000e3262001619565b602002602001015191505b600060648360075462000e519190620018ae565b62000e5d9190620018c8565b6001600160a01b0386166000908152600a6020908152604090912082905560075491925062000e98919083906200168a620011f8821b17901c565b600a60008a60008151811062000eb25762000eb262001619565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550846001600160a01b031660006001600160a01b0316600080516020620045c18339815191528360405162000f1491815260200190565b60405180910390a38760008151811062000f325762000f3262001619565b60200260200101516001600160a01b031660006001600160a01b0316600080516020620045c183398151915262000f7a84600754620011f860201b6200168a1790919060201c565b60405190815260200160405180910390a35050505050505050506200194c565b60008062000fa98385620018eb565b90508381101562000ffd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620007bd565b90505b92915050565b6000546001600160a01b031633146200104b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401620007bd565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b600082600003620010cb5750600062001000565b6000620010d98385620018ae565b905082620010e88583620018c8565b1462000ffd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401620007bd565b600062000ffd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200124260201b60201c565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620011e79086815260200190565b60405180910390a350600192915050565b600062000ffd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200127e60201b60201c565b60008183620012665760405162461bcd60e51b8152600401620007bd919062001917565b506000620012758486620018c8565b95945050505050565b60008184841115620012a55760405162461bcd60e51b8152600401620007bd919062001917565b50600062001275848662001901565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620012f557620012f5620012b4565b604052919050565b60006001600160401b03821115620013195762001319620012b4565b5060051b60200190565b80516001600160a01b03811681146200133b57600080fd5b919050565b600082601f8301126200135257600080fd5b815160206200136b6200136583620012fd565b620012ca565b82815260059290921b840181019181810190868411156200138b57600080fd5b8286015b84811015620013b157620013a38162001323565b83529183019183016200138f565b509695505050505050565b60005b83811015620013d9578181015183820152602001620013bf565b50506000910152565b6000601f8381840112620013f557600080fd5b82516020620014086200136583620012fd565b82815260059290921b850181019181810190878411156200142857600080fd5b8287015b84811015620014ca5780516001600160401b03808211156200144e5760008081fd5b818a0191508a603f830112620014645760008081fd5b858201516040828211156200147d576200147d620012b4565b62001490828b01601f19168901620012ca565b92508183528c81838601011115620014a85760008081fd5b620014b982898501838701620013bc565b50508452509183019183016200142c565b50979650505050505050565b60008060008060008060c08789031215620014f057600080fd5b86516001600160401b03808211156200150857600080fd5b818901915089601f8301126200151d57600080fd5b81516020620015306200136583620012fd565b82815260059290921b8401810191818101908d8411156200155057600080fd5b948201945b83861015620015705785518252948201949082019062001555565b918c0151919a509093505050808211156200158a57600080fd5b620015988a838b0162001340565b96506040890151915080821115620015af57600080fd5b50620015be89828a01620013e2565b945050620015cf6060880162001323565b9250620015df6080880162001323565b9150620015ef60a0880162001323565b90509295509295509295565b6000602082840312156200160e57600080fd5b62000ffd8262001323565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200164457607f821691505b6020821081036200166557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620016b957600081815260208120601f850160051c81016020861015620016945750805b601f850160051c820191505b81811015620016b557828155600101620016a0565b5050505b505050565b81516001600160401b03811115620016da57620016da620012b4565b620016f281620016eb84546200162f565b846200166b565b602080601f8311600181146200172a5760008415620017115750858301515b600019600386901b1c1916600185901b178555620016b5565b600085815260208120601f198616915b828110156200175b578886015182559484019460019091019084016200173a565b50858210156200177a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620017e1578160001904821115620017c557620017c56200178a565b80851615620017d357918102915b93841c9390800290620017a5565b509250929050565b600082620017fa5750600162001000565b81620018095750600062001000565b81600181146200182257600281146200182d576200184d565b600191505062001000565b60ff8411156200184157620018416200178a565b50506001821b62001000565b5060208310610133831016604e8410600b841016171562001872575081810a62001000565b6200187e8383620017a0565b80600019048211156200189557620018956200178a565b029392505050565b600062000ffd60ff841683620017e9565b80820281158282048414176200100057620010006200178a565b600082620018e657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200100057620010006200178a565b818103818111156200100057620010006200178a565b602081526000825180602084015262001938816040850160208701620013bc565b601f01601f19169190910160400192915050565b612c65806200195c6000396000f3fe6080604052600436106102b25760003560e01c8063715018a611610175578063c1f1b1b5116100dc578063e3d91d3011610095578063f0b37c041161006f578063f0b37c0414610833578063f2fde38b14610853578063f887ea4014610873578063fe9fbb801461089357600080fd5b8063e3d91d30146107e9578063ea3105d9146107fe578063eb3410401461081357600080fd5b8063c1f1b1b514610710578063c430e2441461072e578063d3f6a15714610743578063d469801614610763578063d7f7d92114610783578063dd62ed3e146107a357600080fd5b806395d89b411161012e57806395d89b41146106625780639d9241ec14610677578063a8aa1b311461068d578063a9059cbb146106ad578063b6a5d7de146106cd578063bc7a2898146106ed57600080fd5b8063715018a6146105c357806375f0a874146105d857806378109e54146105f85780637d1db4a51461060e578063893d20e8146106245780638ea5220f1461064257600080fd5b806338cc48311161021957806359b107b9116101d257806359b107b9146104f65780635c85974f1461050c5780635d0044ca1461052c57806360959b561461054c5780636ddd17131461056c57806370a082311461058d57600080fd5b806338cc48311461044557806341225b5f1461046c57806341bf9fdc146104815780634623e29214610499578063571ac8b0146104b6578063571e07e6146104d657600080fd5b806318160ddd1161026b57806318160ddd146103905780631da1db5e146103a557806323b872dd146103c5578063293230b8146103e55780632f54bf6e146103fa578063313ce5671461042957600080fd5b80630445b667146102be57806306fdde03146102e7578063095ea7b3146103095780630d075d9c146103395780630f683e901461035b578063143db3681461037b57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d4602d5481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b506102fc6108b3565b6040516102de9190612521565b34801561031557600080fd5b5061032961032436600461254c565b610945565b60405190151581526020016102de565b34801561034557600080fd5b50610359610354366004612578565b6109b2565b005b34801561036757600080fd5b50610359610376366004612578565b610a71565b34801561038757600080fd5b50610359610b19565b34801561039c57600080fd5b506007546102d4565b3480156103b157600080fd5b506103596103c03660046125a4565b610b56565b3480156103d157600080fd5b506103296103e03660046125bd565b610baa565b3480156103f157600080fd5b50610359610cba565b34801561040657600080fd5b506103296104153660046125fe565b6000546001600160a01b0391821691161490565b34801561043557600080fd5b50604051600981526020016102de565b34801561045157600080fd5b50305b6040516001600160a01b0390911681526020016102de565b34801561047857600080fd5b50610359610dce565b34801561048d57600080fd5b5060295460ff16610329565b3480156104a557600080fd5b50602554610100900460ff16610329565b3480156104c257600080fd5b506103296104d13660046125fe565b610e26565b3480156104e257600080fd5b506103596104f136600461261b565b610e34565b34801561050257600080fd5b506102d460145481565b34801561051857600080fd5b506103596105273660046125a4565b610ecc565b34801561053857600080fd5b506103596105473660046125a4565b610f2e565b34801561055857600080fd5b506103596105673660046126e0565b610f90565b34801561057857600080fd5b50602c5461032990600160a01b900460ff1681565b34801561059957600080fd5b506102d46105a83660046125fe565b6001600160a01b03166000908152600a602052604090205490565b3480156105cf57600080fd5b50610359610fce565b3480156105e457600080fd5b50601e54610454906001600160a01b031681565b34801561060457600080fd5b506102d460095481565b34801561061a57600080fd5b506102d460085481565b34801561063057600080fd5b506000546001600160a01b0316610454565b34801561064e57600080fd5b50601f54610454906001600160a01b031681565b34801561066e57600080fd5b506102fc611038565b34801561068357600080fd5b506102d460185481565b34801561069957600080fd5b50602c54610454906001600160a01b031681565b3480156106b957600080fd5b506103296106c836600461254c565b611047565b3480156106d957600080fd5b506103596106e83660046125fe565b611079565b3480156106f957600080fd5b506107026110ca565b6040516102de929190612744565b34801561071c57600080fd5b50602c546001600160a01b0316610454565b34801561073a57600080fd5b506103596111f1565b34801561074f57600080fd5b5061035961075e366004612769565b611228565b34801561076f57600080fd5b50601d54610454906001600160a01b031681565b34801561078f57600080fd5b5061035961079e3660046125fe565b61127b565b3480156107af57600080fd5b506102d46107be366004612769565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b3480156107f557600080fd5b506103596112f4565b34801561080a57600080fd5b50610359611353565b34801561081f57600080fd5b5061035961082e3660046127b0565b611397565b34801561083f57600080fd5b5061035961084e3660046125fe565b611468565b34801561085f57600080fd5b5061035961086e3660046125fe565b6114b3565b34801561087f57600080fd5b50602b54610454906001600160a01b031681565b34801561089f57600080fd5b506103296108ae3660046125fe565b611549565b6060600580546108c2906127ce565b80601f01602080910402602001604051908101604052809291908181526020018280546108ee906127ce565b801561093b5780601f106109105761010080835404028352916020019161093b565b820191906000526020600020905b81548152906001019060200180831161091e57829003601f168201915b5050505050905090565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109a09086815260200190565b60405180910390a35060015b92915050565b6109bb33611549565b6109e05760405162461bcd60e51b81526004016109d790612808565b60405180910390fd5b60646109f6826109f08686611567565b90611567565b1115610a0157600080fd5b601183905560128290556013819055601554610a1d9084611567565b601955601654610a2d9083611567565b601a55601754610a3d9082611567565b601b55610a4e816109f08585611567565b601455601b54601954601a54610a6992916109f09190611567565b601c55505050565b610a7a33611549565b610a965760405162461bcd60e51b81526004016109d790612808565b6064610aa6826109f08686611567565b1115610ab157600080fd5b601583905560168290556017819055601154610acd9084611567565b601955601254610add9083611567565b601a55601354610aed9082611567565b601b55610afe816109f08585611567565b601855601b54601954601a54610a6992916109f09190611567565b6000546001600160a01b03163314610b435760405162461bcd60e51b81526004016109d79061282d565b6029805462ff0000191662010000179055565b601e5447906001600160a01b03166108fc6064610b738585612863565b610b7d919061287a565b6040518115909202916000818181858888f19350505050158015610ba5573d6000803e3d6000fd5b505050565b60006001600160a01b038416610bd25760405162461bcd60e51b81526004016109d79061289c565b6001600160a01b038316610bf85760405162461bcd60e51b81526004016109d7906128e1565b6007546001600160a01b0385166000908152600b6020908152604080832033845290915290205414610ca5576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610c809184906116c8565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610cb0848484611702565b90505b9392505050565b6000546001600160a01b03163314610ce45760405162461bcd60e51b81526004016109d79061282d565b60265415610d0657602654610cfb90610384612924565b4211610d0657600080fd5b602554610100900460ff1615610d1b57600080fd5b602580544260105561ffff1916610100178155600d546001600160a01b03166000908152600c602052604090819020805460ff19166001179055905490517f2b27db57e94e474754b17ad26b358efda13cbcf4a9bbbc7ec92de2926a941f3491610d8f9160ff919091161515815260200190565b60405180910390a1604051600181527f9dcb1780788db444ce9b5c04e924c7f3b5641b1c960d06f601954f973c8a43d4906020015b60405180910390a1565b6000546001600160a01b03163314610df85760405162461bcd60e51b81526004016109d79061282d565b60265415610e0557600080fd5b6025805462ff0000191662010000179055426026556029805460ff19169055565b60006109ac82600754610945565b6000546001600160a01b03163314610e5e5760405162461bcd60e51b81526004016109d79061282d565b602f805461ff0019166101001790556101f4821115610e7c57600080fd5b6101f4811115610e8b57600080fd5b603082905560318190556029805460ff191690556040517fa75d0b4a005707c7b93e0a9e5048c507b3b8a33d36f3b614a07fa8db240aea6c90600090a15050565b610ed533611549565b610ef15760405162461bcd60e51b81526004016109d790612808565b6005811015610eff57600080fd5b601e811115610f0d57600080fd5b6103e881600754610f1e9190612863565b610f28919061287a565b60085550565b610f3733611549565b610f535760405162461bcd60e51b81526004016109d790612808565b6005811015610f6157600080fd5b601e811115610f6f57600080fd5b6103e881600754610f809190612863565b610f8a919061287a565b60095550565b610f9933611549565b610fb55760405162461bcd60e51b81526004016109d790612808565b6023610fc18382612985565b506024610ba58282612985565b6000546001600160a01b03163314610ff85760405162461bcd60e51b81526004016109d79061282d565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616390602001610dc4565b6060600680546108c2906127ce565b60008054336001600160a01b039091160361106e57611067338484611bde565b90506109ac565b611067338484611702565b6000546001600160a01b031633146110a35760405162461bcd60e51b81526004016109d79061282d565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b606080602360248180546110dd906127ce565b80601f0160208091040260200160405190810160405280929190818152602001828054611109906127ce565b80156111565780601f1061112b57610100808354040283529160200191611156565b820191906000526020600020905b81548152906001019060200180831161113957829003601f168201915b50505050509150808054611169906127ce565b80601f0160208091040260200160405190810160405280929190818152602001828054611195906127ce565b80156111e25780601f106111b7576101008083540402835291602001916111e2565b820191906000526020600020905b8154815290600101906020018083116111c557829003601f168201915b50505050509050915091509091565b6000546001600160a01b0316331461121b5760405162461bcd60e51b81526004016109d79061282d565b602f805461ff0019169055565b61123133611549565b61124d5760405162461bcd60e51b81526004016109d790612808565b601e80546001600160a01b039384166001600160a01b031991821617909155601f8054929093169116179055565b336000908152600c602052604090205460ff166112d05760405162461bcd60e51b815260206004820152601360248201527226bab9ba10313290262810383937bb34b232b960691b60448201526064016109d7565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b0316331461131e5760405162461bcd60e51b81526004016109d79061282d565b6029805460ff191690556040517fa75d0b4a005707c7b93e0a9e5048c507b3b8a33d36f3b614a07fa8db240aea6c90600090a1565b336000908152600c602052604090205460ff1661136f57600080fd5b60105461137e90610708612924565b42101561138a57600080fd5b6029805461ff0019169055565b6113a033611549565b6113bc5760405162461bcd60e51b81526004016109d790612808565b6000811180156113ef57506113eb633b9aca006113e5600a60075461164890919063ffffffff16565b90611648565b8111155b6114345760405162461bcd60e51b81526020600482015260166024820152750a8d0e4cae6d0ded8c840e8dede40d8deee5ed0d2ced60531b60448201526064016109d7565b602c805460ff60a01b1916600160a01b841515021790556114576009600a612b29565b6114619082612863565b602d555050565b6000546001600160a01b031633146114925760405162461bcd60e51b81526004016109d79061282d565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146114dd5760405162461bcd60e51b81526004016109d79061282d565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b031660009081526001602052604090205460ff1690565b6000806115748385612924565b905083811015610cb35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109d7565b6000826000036115d8575060006109ac565b60006115e48385612863565b9050826115f1858361287a565b14610cb35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109d7565b6000610cb383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cc4565b6000610cb383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152505b600081848411156116ec5760405162461bcd60e51b81526004016109d79190612521565b5060006116f98486612b38565b95945050505050565b60006001600160a01b03841661172a5760405162461bcd60e51b81526004016109d79061289c565b6001600160a01b0383166117505760405162461bcd60e51b81526004016109d7906128e1565b6021546001600160a01b038581169116148061177957506021546001600160a01b038481169116145b801561178d575060255462010000900460ff165b156117a45761179d848484611bde565b9050610cb3565b6001600160a01b0384166000908152602a60205260409020544210156117c957600080fd5b602c546001600160a01b0385811691161480156117f45750602c546001600160a01b03848116911614155b801561180957506001600160a01b0383163014155b801561183f575060095482611833856001600160a01b03166000908152600a602052604090205490565b61183d9190612924565b115b1561186b576118514262015180612924565b6001600160a01b0384166000908152602a60205260409020555b6001600160a01b0384166000908152600c602052604090205460ff161580156118ad57506001600160a01b0383166000908152600c602052604090205460ff16155b156118fd576118ba611cf2565b6118fd5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109d7565b6001600160a01b03841660009081526001602052604090205460ff168061193c57506001600160a01b03831660009081526001602052604090205460ff165b1561194c5761179d848484611bde565b602f5460ff16156119625761179d848484611bde565b602c546001600160a01b03858116911614801561198857506001600160a01b0383163014155b15611a055760048054601054604051632d08d26760e11b8152928301526001600160a01b0385811660248401521690635a11a4ce9060440160408051808303816000875af11580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a029190612b4b565b50505b602954610100900460ff1615611a2057611a20848484611d3b565b611a2983611f17565b15611a3657611a36611f97565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600a9091529190912054611a889184906116c8565b6001600160a01b038086166000908152600a6020526040812092909255602c5485821691161480611ac65750602c546001600160a01b038681169116145b611ad05782611adb565b611adb8585856123b8565b6001600160a01b0385166000908152600a6020526040902054909150611b019082611567565b6001600160a01b038086166000908152600a6020526040902091909155602c5486821691161480611b3f5750602c546001600160a01b038581169116145b80611b53575060295462010000900460ff16155b8015611b6857506001600160a01b0384163014155b15611b8657600160226000828254611b809190612924565b90915550505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bcb91815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611c2f9184906116c8565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611c5e9083611567565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cb29086815260200190565b60405180910390a35060019392505050565b60008183611ce55760405162461bcd60e51b81526004016109d79190612521565b5060006116f9848661287a565b602554600090610100900460ff1615611d0b5750600190565b60265415801590611d2a5750602654611d2690610e10612924565b4210155b15611d355750600190565b50600090565b6001600160a01b03831660009081526001602052604090205460ff16158015611d6d57506001600160a01b0382163014155b8015611d8257506001600160a01b0383163014155b8015611d9c57506002546001600160a01b03838116911614155b8015611db65750602c546001600160a01b03838116911614155b8015611dd05750601e546001600160a01b03838116911614155b8015611dea5750601d546001600160a01b03838116911614155b15611e8b576001600160a01b0382166000908152600a6020526040902054600954611e158383612924565b1115611e895760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016109d7565b505b60085481111580611eb457506001600160a01b0383166000908152600f602052604090205460ff165b80611ed757506001600160a01b0382166000908152600f602052604090205460ff165b610ba55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109d7565b60008042611f3260275460285461156790919063ffffffff16565b602c54911191506001600160a01b038481169116148015611f505750805b8015611f5f5750602f5460ff16155b8015611f745750602c54600160a01b900460ff165b8015610cb35750602d54306000908152600a602052604090205410159392505050565b602f805460ff19166001179055306000908152600a6020526040812054601a54909190611fc5576000611fe5565b611fe560026113e5601c546113e5601a54876115c690919063ffffffff16565b90506000611ff3838361168a565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061202d5761202d612b7a565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061207557612075612b7a565b6001600160a01b039283166020918202929092010152602b5460405163791ac94760e01b81524792919091169063791ac947906120bf908690600090879030904290600401612b90565b600060405180830381600087803b1580156120d957600080fd5b505af11580156120ed573d6000803e3d6000fd5b50505050600042601054612a306121049190612924565b111561217957600061211747600a611648565b6020546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d806000811461216b576040519150601f19603f3d011682016040523d82523d6000602084013e612170565b606091505b50600093505050505b6000612185478461168a565b9050600080601a541161219a57601c546121b5565b601a546121b5906121ac906002611648565b601c549061168a565b905060006121d760026113e5846113e5601a54886115c690919063ffffffff16565b601b549091501561225f5760006121fd836113e5601b54876115c690919063ffffffff16565b601f546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114612251576040519150601f19603f3d011682016040523d82523d6000602084013e612256565b606091505b50600096505050505b871561233757602b54601d5460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156122d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122fa9190612c01565b505060408051838152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b47801561239e57601e546040516001600160a01b0390911690620186a09083906000818181858888f193505050503d8060008114612391576040519150601f19603f3d011682016040523d82523d6000602084013e612396565b606091505b506000965050505b5050426028555050602f805460ff19169055505050505050565b6000601054611c206123ca9190612924565b4211806123df5750602f54610100900460ff16155b156124a557602c546000906001600160a01b0385811691161461240457601454612408565b6018545b9050600061241c6103e86113e586856115c6565b306000908152600a60205260409020549091506124399082611567565b306000818152600a6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061248a9085815260200190565b60405180910390a361249c848261168a565b92505050610cb3565b602c546000906001600160a01b038581169116146124c557603154612408565b50603054600061241c6103e86113e586856115c6565b6000815180845260005b81811015612501576020818501810151868301820152016124e5565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610cb360208301846124db565b6001600160a01b038116811461254957600080fd5b50565b6000806040838503121561255f57600080fd5b823561256a81612534565b946020939093013593505050565b60008060006060848603121561258d57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156125b657600080fd5b5035919050565b6000806000606084860312156125d257600080fd5b83356125dd81612534565b925060208401356125ed81612534565b929592945050506040919091013590565b60006020828403121561261057600080fd5b8135610cb381612534565b6000806040838503121561262e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261266457600080fd5b813567ffffffffffffffff8082111561267f5761267f61263d565b604051601f8301601f19908116603f011681019082821181831017156126a7576126a761263d565b816040528381528660208588010111156126c057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156126f357600080fd5b823567ffffffffffffffff8082111561270b57600080fd5b61271786838701612653565b9350602085013591508082111561272d57600080fd5b5061273a85828601612653565b9150509250929050565b60408152600061275760408301856124db565b82810360208401526116f981856124db565b6000806040838503121561277c57600080fd5b823561278781612534565b9150602083013561279781612534565b809150509250929050565b801515811461254957600080fd5b600080604083850312156127c357600080fd5b823561256a816127a2565b600181811c908216806127e257607f821691505b60208210810361280257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109ac576109ac61284d565b60008261289757634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156109ac576109ac61284d565b601f821115610ba557600081815260208120601f850160051c8101602086101561295e5750805b601f850160051c820191505b8181101561297d5782815560010161296a565b505050505050565b815167ffffffffffffffff81111561299f5761299f61263d565b6129b3816129ad84546127ce565b84612937565b602080601f8311600181146129e857600084156129d05750858301515b600019600386901b1c1916600185901b17855561297d565b600085815260208120601f198616915b82811015612a17578886015182559484019460019091019084016129f8565b5085821015612a355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115612a80578160001904821115612a6657612a6661284d565b80851615612a7357918102915b93841c9390800290612a4a565b509250929050565b600082612a97575060016109ac565b81612aa4575060006109ac565b8160018114612aba5760028114612ac457612ae0565b60019150506109ac565b60ff841115612ad557612ad561284d565b50506001821b6109ac565b5060208310610133831016604e8410600b8410161715612b03575081810a6109ac565b612b0d8383612a45565b8060001904821115612b2157612b2161284d565b029392505050565b6000610cb360ff841683612a88565b818103818111156109ac576109ac61284d565b60008060408385031215612b5e57600080fd5b8251612b69816127a2565b602084015190925061279781612534565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612be05784516001600160a01b031683529383019391830191600101612bbb565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612c1657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208b0e4826bea34657b8ca0cf3fc4633af2335e3eee047457326ff2d7c435c0db764736f6c63430008110033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000d52961790701c3ffcdf97ec9d6162f9975a11299000000000000000000000000f6518207b10dcbca33c8a8a783de4c0c8da04087000000000000000000000000590a7cc27d9607c03085f725ac6b85ac9ef85967000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000de00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000610000000000000000000000000000000000000000000000000000000065440d550000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000005000000000000000000000000fac30a6539bcd57636a74c20b877ffd06c3929fa000000000000000000000000e9d39d5b1eeb143fada974980f17a273ef8e2209000000000000000000000000bc45b4e4fb284471284b85c0df1a4ead436e9c8a00000000000000000000000052117d959544653a2e0c2f02506128251d24f0e1000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d560000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000055454657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000554544553540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016200000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063715018a611610175578063c1f1b1b5116100dc578063e3d91d3011610095578063f0b37c041161006f578063f0b37c0414610833578063f2fde38b14610853578063f887ea4014610873578063fe9fbb801461089357600080fd5b8063e3d91d30146107e9578063ea3105d9146107fe578063eb3410401461081357600080fd5b8063c1f1b1b514610710578063c430e2441461072e578063d3f6a15714610743578063d469801614610763578063d7f7d92114610783578063dd62ed3e146107a357600080fd5b806395d89b411161012e57806395d89b41146106625780639d9241ec14610677578063a8aa1b311461068d578063a9059cbb146106ad578063b6a5d7de146106cd578063bc7a2898146106ed57600080fd5b8063715018a6146105c357806375f0a874146105d857806378109e54146105f85780637d1db4a51461060e578063893d20e8146106245780638ea5220f1461064257600080fd5b806338cc48311161021957806359b107b9116101d257806359b107b9146104f65780635c85974f1461050c5780635d0044ca1461052c57806360959b561461054c5780636ddd17131461056c57806370a082311461058d57600080fd5b806338cc48311461044557806341225b5f1461046c57806341bf9fdc146104815780634623e29214610499578063571ac8b0146104b6578063571e07e6146104d657600080fd5b806318160ddd1161026b57806318160ddd146103905780631da1db5e146103a557806323b872dd146103c5578063293230b8146103e55780632f54bf6e146103fa578063313ce5671461042957600080fd5b80630445b667146102be57806306fdde03146102e7578063095ea7b3146103095780630d075d9c146103395780630f683e901461035b578063143db3681461037b57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d4602d5481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b506102fc6108b3565b6040516102de9190612521565b34801561031557600080fd5b5061032961032436600461254c565b610945565b60405190151581526020016102de565b34801561034557600080fd5b50610359610354366004612578565b6109b2565b005b34801561036757600080fd5b50610359610376366004612578565b610a71565b34801561038757600080fd5b50610359610b19565b34801561039c57600080fd5b506007546102d4565b3480156103b157600080fd5b506103596103c03660046125a4565b610b56565b3480156103d157600080fd5b506103296103e03660046125bd565b610baa565b3480156103f157600080fd5b50610359610cba565b34801561040657600080fd5b506103296104153660046125fe565b6000546001600160a01b0391821691161490565b34801561043557600080fd5b50604051600981526020016102de565b34801561045157600080fd5b50305b6040516001600160a01b0390911681526020016102de565b34801561047857600080fd5b50610359610dce565b34801561048d57600080fd5b5060295460ff16610329565b3480156104a557600080fd5b50602554610100900460ff16610329565b3480156104c257600080fd5b506103296104d13660046125fe565b610e26565b3480156104e257600080fd5b506103596104f136600461261b565b610e34565b34801561050257600080fd5b506102d460145481565b34801561051857600080fd5b506103596105273660046125a4565b610ecc565b34801561053857600080fd5b506103596105473660046125a4565b610f2e565b34801561055857600080fd5b506103596105673660046126e0565b610f90565b34801561057857600080fd5b50602c5461032990600160a01b900460ff1681565b34801561059957600080fd5b506102d46105a83660046125fe565b6001600160a01b03166000908152600a602052604090205490565b3480156105cf57600080fd5b50610359610fce565b3480156105e457600080fd5b50601e54610454906001600160a01b031681565b34801561060457600080fd5b506102d460095481565b34801561061a57600080fd5b506102d460085481565b34801561063057600080fd5b506000546001600160a01b0316610454565b34801561064e57600080fd5b50601f54610454906001600160a01b031681565b34801561066e57600080fd5b506102fc611038565b34801561068357600080fd5b506102d460185481565b34801561069957600080fd5b50602c54610454906001600160a01b031681565b3480156106b957600080fd5b506103296106c836600461254c565b611047565b3480156106d957600080fd5b506103596106e83660046125fe565b611079565b3480156106f957600080fd5b506107026110ca565b6040516102de929190612744565b34801561071c57600080fd5b50602c546001600160a01b0316610454565b34801561073a57600080fd5b506103596111f1565b34801561074f57600080fd5b5061035961075e366004612769565b611228565b34801561076f57600080fd5b50601d54610454906001600160a01b031681565b34801561078f57600080fd5b5061035961079e3660046125fe565b61127b565b3480156107af57600080fd5b506102d46107be366004612769565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b3480156107f557600080fd5b506103596112f4565b34801561080a57600080fd5b50610359611353565b34801561081f57600080fd5b5061035961082e3660046127b0565b611397565b34801561083f57600080fd5b5061035961084e3660046125fe565b611468565b34801561085f57600080fd5b5061035961086e3660046125fe565b6114b3565b34801561087f57600080fd5b50602b54610454906001600160a01b031681565b34801561089f57600080fd5b506103296108ae3660046125fe565b611549565b6060600580546108c2906127ce565b80601f01602080910402602001604051908101604052809291908181526020018280546108ee906127ce565b801561093b5780601f106109105761010080835404028352916020019161093b565b820191906000526020600020905b81548152906001019060200180831161091e57829003601f168201915b5050505050905090565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109a09086815260200190565b60405180910390a35060015b92915050565b6109bb33611549565b6109e05760405162461bcd60e51b81526004016109d790612808565b60405180910390fd5b60646109f6826109f08686611567565b90611567565b1115610a0157600080fd5b601183905560128290556013819055601554610a1d9084611567565b601955601654610a2d9083611567565b601a55601754610a3d9082611567565b601b55610a4e816109f08585611567565b601455601b54601954601a54610a6992916109f09190611567565b601c55505050565b610a7a33611549565b610a965760405162461bcd60e51b81526004016109d790612808565b6064610aa6826109f08686611567565b1115610ab157600080fd5b601583905560168290556017819055601154610acd9084611567565b601955601254610add9083611567565b601a55601354610aed9082611567565b601b55610afe816109f08585611567565b601855601b54601954601a54610a6992916109f09190611567565b6000546001600160a01b03163314610b435760405162461bcd60e51b81526004016109d79061282d565b6029805462ff0000191662010000179055565b601e5447906001600160a01b03166108fc6064610b738585612863565b610b7d919061287a565b6040518115909202916000818181858888f19350505050158015610ba5573d6000803e3d6000fd5b505050565b60006001600160a01b038416610bd25760405162461bcd60e51b81526004016109d79061289c565b6001600160a01b038316610bf85760405162461bcd60e51b81526004016109d7906128e1565b6007546001600160a01b0385166000908152600b6020908152604080832033845290915290205414610ca5576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610c809184906116c8565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610cb0848484611702565b90505b9392505050565b6000546001600160a01b03163314610ce45760405162461bcd60e51b81526004016109d79061282d565b60265415610d0657602654610cfb90610384612924565b4211610d0657600080fd5b602554610100900460ff1615610d1b57600080fd5b602580544260105561ffff1916610100178155600d546001600160a01b03166000908152600c602052604090819020805460ff19166001179055905490517f2b27db57e94e474754b17ad26b358efda13cbcf4a9bbbc7ec92de2926a941f3491610d8f9160ff919091161515815260200190565b60405180910390a1604051600181527f9dcb1780788db444ce9b5c04e924c7f3b5641b1c960d06f601954f973c8a43d4906020015b60405180910390a1565b6000546001600160a01b03163314610df85760405162461bcd60e51b81526004016109d79061282d565b60265415610e0557600080fd5b6025805462ff0000191662010000179055426026556029805460ff19169055565b60006109ac82600754610945565b6000546001600160a01b03163314610e5e5760405162461bcd60e51b81526004016109d79061282d565b602f805461ff0019166101001790556101f4821115610e7c57600080fd5b6101f4811115610e8b57600080fd5b603082905560318190556029805460ff191690556040517fa75d0b4a005707c7b93e0a9e5048c507b3b8a33d36f3b614a07fa8db240aea6c90600090a15050565b610ed533611549565b610ef15760405162461bcd60e51b81526004016109d790612808565b6005811015610eff57600080fd5b601e811115610f0d57600080fd5b6103e881600754610f1e9190612863565b610f28919061287a565b60085550565b610f3733611549565b610f535760405162461bcd60e51b81526004016109d790612808565b6005811015610f6157600080fd5b601e811115610f6f57600080fd5b6103e881600754610f809190612863565b610f8a919061287a565b60095550565b610f9933611549565b610fb55760405162461bcd60e51b81526004016109d790612808565b6023610fc18382612985565b506024610ba58282612985565b6000546001600160a01b03163314610ff85760405162461bcd60e51b81526004016109d79061282d565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616390602001610dc4565b6060600680546108c2906127ce565b60008054336001600160a01b039091160361106e57611067338484611bde565b90506109ac565b611067338484611702565b6000546001600160a01b031633146110a35760405162461bcd60e51b81526004016109d79061282d565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b606080602360248180546110dd906127ce565b80601f0160208091040260200160405190810160405280929190818152602001828054611109906127ce565b80156111565780601f1061112b57610100808354040283529160200191611156565b820191906000526020600020905b81548152906001019060200180831161113957829003601f168201915b50505050509150808054611169906127ce565b80601f0160208091040260200160405190810160405280929190818152602001828054611195906127ce565b80156111e25780601f106111b7576101008083540402835291602001916111e2565b820191906000526020600020905b8154815290600101906020018083116111c557829003601f168201915b50505050509050915091509091565b6000546001600160a01b0316331461121b5760405162461bcd60e51b81526004016109d79061282d565b602f805461ff0019169055565b61123133611549565b61124d5760405162461bcd60e51b81526004016109d790612808565b601e80546001600160a01b039384166001600160a01b031991821617909155601f8054929093169116179055565b336000908152600c602052604090205460ff166112d05760405162461bcd60e51b815260206004820152601360248201527226bab9ba10313290262810383937bb34b232b960691b60448201526064016109d7565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b0316331461131e5760405162461bcd60e51b81526004016109d79061282d565b6029805460ff191690556040517fa75d0b4a005707c7b93e0a9e5048c507b3b8a33d36f3b614a07fa8db240aea6c90600090a1565b336000908152600c602052604090205460ff1661136f57600080fd5b60105461137e90610708612924565b42101561138a57600080fd5b6029805461ff0019169055565b6113a033611549565b6113bc5760405162461bcd60e51b81526004016109d790612808565b6000811180156113ef57506113eb633b9aca006113e5600a60075461164890919063ffffffff16565b90611648565b8111155b6114345760405162461bcd60e51b81526020600482015260166024820152750a8d0e4cae6d0ded8c840e8dede40d8deee5ed0d2ced60531b60448201526064016109d7565b602c805460ff60a01b1916600160a01b841515021790556114576009600a612b29565b6114619082612863565b602d555050565b6000546001600160a01b031633146114925760405162461bcd60e51b81526004016109d79061282d565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146114dd5760405162461bcd60e51b81526004016109d79061282d565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b031660009081526001602052604090205460ff1690565b6000806115748385612924565b905083811015610cb35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109d7565b6000826000036115d8575060006109ac565b60006115e48385612863565b9050826115f1858361287a565b14610cb35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109d7565b6000610cb383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cc4565b6000610cb383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152505b600081848411156116ec5760405162461bcd60e51b81526004016109d79190612521565b5060006116f98486612b38565b95945050505050565b60006001600160a01b03841661172a5760405162461bcd60e51b81526004016109d79061289c565b6001600160a01b0383166117505760405162461bcd60e51b81526004016109d7906128e1565b6021546001600160a01b038581169116148061177957506021546001600160a01b038481169116145b801561178d575060255462010000900460ff165b156117a45761179d848484611bde565b9050610cb3565b6001600160a01b0384166000908152602a60205260409020544210156117c957600080fd5b602c546001600160a01b0385811691161480156117f45750602c546001600160a01b03848116911614155b801561180957506001600160a01b0383163014155b801561183f575060095482611833856001600160a01b03166000908152600a602052604090205490565b61183d9190612924565b115b1561186b576118514262015180612924565b6001600160a01b0384166000908152602a60205260409020555b6001600160a01b0384166000908152600c602052604090205460ff161580156118ad57506001600160a01b0383166000908152600c602052604090205460ff16155b156118fd576118ba611cf2565b6118fd5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109d7565b6001600160a01b03841660009081526001602052604090205460ff168061193c57506001600160a01b03831660009081526001602052604090205460ff165b1561194c5761179d848484611bde565b602f5460ff16156119625761179d848484611bde565b602c546001600160a01b03858116911614801561198857506001600160a01b0383163014155b15611a055760048054601054604051632d08d26760e11b8152928301526001600160a01b0385811660248401521690635a11a4ce9060440160408051808303816000875af11580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a029190612b4b565b50505b602954610100900460ff1615611a2057611a20848484611d3b565b611a2983611f17565b15611a3657611a36611f97565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600a9091529190912054611a889184906116c8565b6001600160a01b038086166000908152600a6020526040812092909255602c5485821691161480611ac65750602c546001600160a01b038681169116145b611ad05782611adb565b611adb8585856123b8565b6001600160a01b0385166000908152600a6020526040902054909150611b019082611567565b6001600160a01b038086166000908152600a6020526040902091909155602c5486821691161480611b3f5750602c546001600160a01b038581169116145b80611b53575060295462010000900460ff16155b8015611b6857506001600160a01b0384163014155b15611b8657600160226000828254611b809190612924565b90915550505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bcb91815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611c2f9184906116c8565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611c5e9083611567565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cb29086815260200190565b60405180910390a35060019392505050565b60008183611ce55760405162461bcd60e51b81526004016109d79190612521565b5060006116f9848661287a565b602554600090610100900460ff1615611d0b5750600190565b60265415801590611d2a5750602654611d2690610e10612924565b4210155b15611d355750600190565b50600090565b6001600160a01b03831660009081526001602052604090205460ff16158015611d6d57506001600160a01b0382163014155b8015611d8257506001600160a01b0383163014155b8015611d9c57506002546001600160a01b03838116911614155b8015611db65750602c546001600160a01b03838116911614155b8015611dd05750601e546001600160a01b03838116911614155b8015611dea5750601d546001600160a01b03838116911614155b15611e8b576001600160a01b0382166000908152600a6020526040902054600954611e158383612924565b1115611e895760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016109d7565b505b60085481111580611eb457506001600160a01b0383166000908152600f602052604090205460ff165b80611ed757506001600160a01b0382166000908152600f602052604090205460ff165b610ba55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109d7565b60008042611f3260275460285461156790919063ffffffff16565b602c54911191506001600160a01b038481169116148015611f505750805b8015611f5f5750602f5460ff16155b8015611f745750602c54600160a01b900460ff165b8015610cb35750602d54306000908152600a602052604090205410159392505050565b602f805460ff19166001179055306000908152600a6020526040812054601a54909190611fc5576000611fe5565b611fe560026113e5601c546113e5601a54876115c690919063ffffffff16565b90506000611ff3838361168a565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061202d5761202d612b7a565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061207557612075612b7a565b6001600160a01b039283166020918202929092010152602b5460405163791ac94760e01b81524792919091169063791ac947906120bf908690600090879030904290600401612b90565b600060405180830381600087803b1580156120d957600080fd5b505af11580156120ed573d6000803e3d6000fd5b50505050600042601054612a306121049190612924565b111561217957600061211747600a611648565b6020546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d806000811461216b576040519150601f19603f3d011682016040523d82523d6000602084013e612170565b606091505b50600093505050505b6000612185478461168a565b9050600080601a541161219a57601c546121b5565b601a546121b5906121ac906002611648565b601c549061168a565b905060006121d760026113e5846113e5601a54886115c690919063ffffffff16565b601b549091501561225f5760006121fd836113e5601b54876115c690919063ffffffff16565b601f546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114612251576040519150601f19603f3d011682016040523d82523d6000602084013e612256565b606091505b50600096505050505b871561233757602b54601d5460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156122d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122fa9190612c01565b505060408051838152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b47801561239e57601e546040516001600160a01b0390911690620186a09083906000818181858888f193505050503d8060008114612391576040519150601f19603f3d011682016040523d82523d6000602084013e612396565b606091505b506000965050505b5050426028555050602f805460ff19169055505050505050565b6000601054611c206123ca9190612924565b4211806123df5750602f54610100900460ff16155b156124a557602c546000906001600160a01b0385811691161461240457601454612408565b6018545b9050600061241c6103e86113e586856115c6565b306000908152600a60205260409020549091506124399082611567565b306000818152600a6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061248a9085815260200190565b60405180910390a361249c848261168a565b92505050610cb3565b602c546000906001600160a01b038581169116146124c557603154612408565b50603054600061241c6103e86113e586856115c6565b6000815180845260005b81811015612501576020818501810151868301820152016124e5565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610cb360208301846124db565b6001600160a01b038116811461254957600080fd5b50565b6000806040838503121561255f57600080fd5b823561256a81612534565b946020939093013593505050565b60008060006060848603121561258d57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156125b657600080fd5b5035919050565b6000806000606084860312156125d257600080fd5b83356125dd81612534565b925060208401356125ed81612534565b929592945050506040919091013590565b60006020828403121561261057600080fd5b8135610cb381612534565b6000806040838503121561262e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261266457600080fd5b813567ffffffffffffffff8082111561267f5761267f61263d565b604051601f8301601f19908116603f011681019082821181831017156126a7576126a761263d565b816040528381528660208588010111156126c057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156126f357600080fd5b823567ffffffffffffffff8082111561270b57600080fd5b61271786838701612653565b9350602085013591508082111561272d57600080fd5b5061273a85828601612653565b9150509250929050565b60408152600061275760408301856124db565b82810360208401526116f981856124db565b6000806040838503121561277c57600080fd5b823561278781612534565b9150602083013561279781612534565b809150509250929050565b801515811461254957600080fd5b600080604083850312156127c357600080fd5b823561256a816127a2565b600181811c908216806127e257607f821691505b60208210810361280257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109ac576109ac61284d565b60008261289757634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156109ac576109ac61284d565b601f821115610ba557600081815260208120601f850160051c8101602086101561295e5750805b601f850160051c820191505b8181101561297d5782815560010161296a565b505050505050565b815167ffffffffffffffff81111561299f5761299f61263d565b6129b3816129ad84546127ce565b84612937565b602080601f8311600181146129e857600084156129d05750858301515b600019600386901b1c1916600185901b17855561297d565b600085815260208120601f198616915b82811015612a17578886015182559484019460019091019084016129f8565b5085821015612a355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115612a80578160001904821115612a6657612a6661284d565b80851615612a7357918102915b93841c9390800290612a4a565b509250929050565b600082612a97575060016109ac565b81612aa4575060006109ac565b8160018114612aba5760028114612ac457612ae0565b60019150506109ac565b60ff841115612ad557612ad561284d565b50506001821b6109ac565b5060208310610133831016604e8410600b8410161715612b03575081810a6109ac565b612b0d8383612a45565b8060001904821115612b2157612b2161284d565b029392505050565b6000610cb360ff841683612a88565b818103818111156109ac576109ac61284d565b60008060408385031215612b5e57600080fd5b8251612b69816127a2565b602084015190925061279781612534565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612be05784516001600160a01b031683529383019391830191600101612bbb565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612c1657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208b0e4826bea34657b8ca0cf3fc4633af2335e3eee047457326ff2d7c435c0db764736f6c63430008110033

Deployed Bytecode Sourcemap

5146:20537:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7677:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7677:28:0;;;;;;;;11852:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12632:216::-;;;;;;;;;;-1:-1:-1;12632:216:0;;;;;:::i;:::-;;:::i;:::-;;;1470:14:1;;1463:22;1445:41;;1433:2;1418:18;12632:216:0;1305:187:1;13695:623:0;;;;;;;;;;-1:-1:-1;13695:623:0;;;;;:::i;:::-;;:::i;:::-;;14330:625;;;;;;;;;;-1:-1:-1;14330:625:0;;;;;:::i;:::-;;:::i;16771:76::-;;;;;;;;;;;;;:::i;11582:88::-;;;;;;;;;;-1:-1:-1;11655:12:0;;11582:88;;15754:203;;;;;;;;;;-1:-1:-1;15754:203:0;;;;;:::i;:::-;;:::i;23053:528::-;;;;;;;;;;-1:-1:-1;23053:528:0;;;;;:::i;:::-;;:::i;17399:403::-;;;;;;;;;;;;;:::i;2962:103::-;;;;;;;;;;-1:-1:-1;2962:103:0;;;;;:::i;:::-;3017:4;3052:5;-1:-1:-1;;;;;3041:16:0;;;3052:5;;3041:16;;2962:103;11676:80;;;;;;;;;;-1:-1:-1;11676:80:0;;5461:1;2858:36:1;;2846:2;2831:18;11676:80:0;2716:184:1;15648:92:0;;;;;;;;;;-1:-1:-1;15727:4:0;15648:92;;;-1:-1:-1;;;;;3069:32:1;;;3051:51;;3039:2;3024:18;15648:92:0;2905:203:1;18049:182:0;;;;;;;;;;;;;:::i;12856:90::-;;;;;;;;;;-1:-1:-1;12928:10:0;;;;12856:90;;16628:135;;;;;;;;;;-1:-1:-1;16747:8:0;;;;;;;16628:135;;12954:117;;;;;;;;;;-1:-1:-1;12954:117:0;;;;;:::i;:::-;;:::i;17077:314::-;;;;;;;;;;-1:-1:-1;17077:314:0;;;;;:::i;:::-;;:::i;6059:80::-;;;;;;;;;;;;;;;;15398:242;;;;;;;;;;-1:-1:-1;15398:242:0;;;;;:::i;:::-;;:::i;15143:247::-;;;;;;;;;;-1:-1:-1;15143:247:0;;;;;:::i;:::-;;:::i;12466:158::-;;;;;;;;;;-1:-1:-1;12466:158:0;;;;;:::i;:::-;;:::i;7640:30::-;;;;;;;;;;-1:-1:-1;7640:30:0;;;;-1:-1:-1;;;7640:30:0;;;;;;12022:105;;;;;;;;;;-1:-1:-1;12022:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;12106:18:0;12088:7;12106:18;;;:9;:18;;;;;;;12022:105;3369:133;;;;;;;;;;;;;:::i;6620:30::-;;;;;;;;;;-1:-1:-1;6620:30:0;;;;-1:-1:-1;;;;;6620:30:0;;;5543;;;;;;;;;;;;;;;;5509:27;;;;;;;;;;;;;;;;11938:78;;;;;;;;;;-1:-1:-1;11990:7:0;12008:5;-1:-1:-1;;;;;12008:5:0;11938:78;;6657:24;;;;;;;;;;-1:-1:-1;6657:24:0;;;;-1:-1:-1;;;;;6657:24:0;;;11762:84;;;;;;;;;;;;;:::i;6235:::-;;;;;;;;;;;;;;;;7612:19;;;;;;;;;;-1:-1:-1;7612:19:0;;;;-1:-1:-1;;;;;7612:19:0;;;22745:300;;;;;;;;;;-1:-1:-1;22745:300:0;;;;;:::i;:::-;;:::i;2755:94::-;;;;;;;;;;-1:-1:-1;2755:94:0;;;;;:::i;:::-;;:::i;12344:114::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;12272:64::-;;;;;;;;;;-1:-1:-1;12330:4:0;;-1:-1:-1;;;;;12330:4:0;12272:64;;16983:86;;;;;;;;;;;;;:::i;14963:172::-;;;;;;;;;;-1:-1:-1;14963:172:0;;;;;:::i;:::-;;:::i;6583:30::-;;;;;;;;;;-1:-1:-1;6583:30:0;;;;-1:-1:-1;;;;;6583:30:0;;;13079:266;;;;;;;;;;-1:-1:-1;13079:266:0;;;;;:::i;:::-;;:::i;12133:133::-;;;;;;;;;;-1:-1:-1;12133:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12235:19:0;;;12217:7;12235:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12133:133;16855:120;;;;;;;;;;;;;:::i;17881:160::-;;;;;;;;;;;;;:::i;18827:296::-;;;;;;;;;;-1:-1:-1;18827:296:0;;;;;:::i;:::-;;:::i;2857:97::-;;;;;;;;;;-1:-1:-1;2857:97:0;;;;;:::i;:::-;;:::i;3188:173::-;;;;;;;;;;-1:-1:-1;3188:173:0;;;;;:::i;:::-;;:::i;7581:24::-;;;;;;;;;;-1:-1:-1;7581:24:0;;;;-1:-1:-1;;;;;7581:24:0;;;3073:107;;;;;;;;;;-1:-1:-1;3073:107:0;;;;;:::i;:::-;;:::i;11852:80::-;11900:13;11924:5;11917:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11852:80;:::o;12632:216::-;12736:10;12707:4;12724:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12724:32:0;;;;;;;;;;:41;;;12781:37;12707:4;;12724:32;;12781:37;;;;12759:6;160:25:1;;148:2;133:18;;14:177;12781:37:0;;;;;;;;-1:-1:-1;12836:4:0;12632:216;;;;;:::o;13695:623::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;;;;;;;;;13889:3:::1;13839:45;13876:7:::0;13839:32:::1;:13:::0;13857;13839:17:::1;:32::i;:::-;:36:::0;::::1;:45::i;:::-;13838:54;;13830:63;;;::::0;::::1;;13904:15;:31:::0;;;13946:15:::1;:31:::0;;;13988:9:::1;:19:::0;;;14035:16:::1;::::0;:35:::1;::::0;13922:13;14035:20:::1;:35::i;:::-;14020:12;:50:::0;14096:16:::1;::::0;:35:::1;::::0;14117:13;14096:20:::1;:35::i;:::-;14081:12;:50:::0;14151:10:::1;::::0;:23:::1;::::0;14166:7;14151:14:::1;:23::i;:::-;14142:6;:32:::0;14201:45:::1;14238:7:::0;14201:32:::1;:13:::0;14219;14201:17:::1;:32::i;:45::-;14187:11;:59:::0;14303:6:::1;::::0;14285:12:::1;::::0;14268::::1;::::0;:42:::1;::::0;14303:6;14268:30:::1;::::0;:12;:16:::1;:30::i;:42::-;14257:8;:53:::0;-1:-1:-1;;;13695:623:0:o;14330:625::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;14525:3:::1;14475:45;14512:7:::0;14475:32:::1;:13:::0;14493;14475:17:::1;:32::i;:45::-;14474:54;;14466:63;;;::::0;::::1;;14540:16;:32:::0;;;14583:16:::1;:32:::0;;;14626:10:::1;:20:::0;;;14674:15:::1;::::0;:34:::1;::::0;14559:13;14674:19:::1;:34::i;:::-;14659:12;:49:::0;14734:15:::1;::::0;:34:::1;::::0;14754:13;14734:19:::1;:34::i;:::-;14719:12;:49:::0;14788:9:::1;::::0;:22:::1;::::0;14802:7;14788:13:::1;:22::i;:::-;14779:6;:31:::0;14838:45:::1;14875:7:::0;14838:32:::1;:13:::0;14856;14838:17:::1;:32::i;:45::-;14823:12;:60:::0;14940:6:::1;::::0;14922:12:::1;::::0;14905::::1;::::0;:42:::1;::::0;14940:6;14905:30:::1;::::0;:12;:16:::1;:30::i;16771:76::-:0;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;16825:7:::1;:14:::0;;-1:-1:-1;;16825:14:0::1;::::0;::::1;::::0;;16771:76::o;15754:203::-;15888:15;;15848:21;;-1:-1:-1;;;;;15888:15:0;15880:69;15945:3;15914:28;15926:16;15848:21;15914:28;:::i;:::-;:34;;;;:::i;:::-;15880:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15817:140;15754:203;:::o;23053:528::-;23153:4;-1:-1:-1;;;;;23178:20:0;;23170:70;;;;-1:-1:-1;;;23170:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23259:23:0;;23251:71;;;;-1:-1:-1;;;23251:71:0;;;;;;;:::i;:::-;23371:12;;-1:-1:-1;;;;;23336:19:0;;;;;;:11;:19;;;;;;;;23356:10;23336:31;;;;;;;;:47;23333:181;;23433:69;;;;;;;;;;;-1:-1:-1;;;23433:69:0;;;;;;;;-1:-1:-1;;;;;23433:19:0;;-1:-1:-1;23433:19:0;;;:11;:19;;;;;23453:10;23433:31;;;;;;;;;;:69;;23469:6;;23433:35;:69::i;:::-;-1:-1:-1;;;;;23399:19:0;;;;;;:11;:19;;;;;;;;23419:10;23399:31;;;;;;;:103;23333:181;23533:40;23547:6;23555:9;23566:6;23533:13;:40::i;:::-;23526:47;;23053:528;;;;;;:::o;17399:403::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;17456:6:::1;::::0;:10;17453:87:::1;;17508:6;::::0;:19:::1;::::0;17517:10:::1;17508:19;:::i;:::-;17490:15;:37;17482:46;;;::::0;::::1;;17558:8;::::0;::::1;::::0;::::1;;;:17;17550:26;;;::::0;::::1;;17587:12;:20:::0;;17631:15:::1;17618:10;:28:::0;-1:-1:-1;;17657:15:0;17587:20:::1;17657:15;::::0;;17694:7:::1;::::0;-1:-1:-1;;;;;17694:7:0::1;17602:5;17683:19:::0;;;:10:::1;:19;::::0;;;;;;:26;;-1:-1:-1;;17683:26:0::1;17587:20:::0;17683:26:::1;::::0;;17747:12;;17727:33;;::::1;::::0;::::1;::::0;17587:20:::1;17747:12:::0;;;::::1;1470:14:1::0;1463:22;1445:41;;1433:2;1418:18;;1305:187;17727:33:0::1;;;;;;;;17776:18;::::0;17789:4:::1;1445:41:1::0;;17776:18:0::1;::::0;1433:2:1;1418:18;17776::0::1;;;;;;;;17399:403::o:0;18049:182::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;18123:6:::1;::::0;:11;18115:20:::1;;;::::0;::::1;;18146:6;:13:::0;;-1:-1:-1;;18146:13:0::1;::::0;::::1;::::0;;18179:15:::1;18170:6;:24:::0;18205:10:::1;:18:::0;;-1:-1:-1;;18205:18:0::1;::::0;;18049:182::o;12954:117::-;13009:4;13033:30;13041:7;13050:12;;13033:7;:30::i;17077:314::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;17172:9:::1;:16:::0;;-1:-1:-1;;17172:16:0::1;;;::::0;;17220:3:::1;17209:14:::0;::::1;;17201:23;;;::::0;::::1;;17255:3;17243:8;:15;;17235:24;;;::::0;::::1;;17272:8;:18:::0;;;17301:9:::1;:20:::0;;;17332:10:::1;:18:::0;;-1:-1:-1;;17332:18:0::1;::::0;;17366:17:::1;::::0;::::1;::::0;-1:-1:-1;;17366:17:0::1;17077:314:::0;;:::o;15398:242::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;15485:1:::1;15474:7;:12;;15466:21;;;::::0;::::1;;15544:2;15533:7;:13;;15525:22;;;::::0;::::1;;15628:4;15616:7;15601:12;;:22;;;;:::i;:::-;15599:33;;;;:::i;:::-;15584:12;:48:::0;-1:-1:-1;15398:242:0:o;15143:247::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;15232:1:::1;15221:7;:12;;15213:21;;;::::0;::::1;;15291:2;15280:7;:13;;15272:22;;;::::0;::::1;;15378:4;15366:7;15351:12;;:22;;;;:::i;:::-;15349:33;;;;:::i;:::-;15331:15;:51:::0;-1:-1:-1;15143:247:0:o;12466:158::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;12567:8:::1;:20;12578:9:::0;12567:8;:20:::1;:::i;:::-;-1:-1:-1::0;12598:7:0::1;:18;12608:8:::0;12598:7;:18:::1;:::i;3369:133::-:0;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;3444:1:::1;3428:18:::0;;-1:-1:-1;;;;;;3428:18:0::1;::::0;;3462:32:::1;::::0;3051:51:1;;;3462:32:0::1;::::0;3039:2:1;3024:18;3462:32:0::1;2905:203:1::0;11762:84:0;11812:13;11836:7;11829:14;;;;;:::i;22745:300::-;22825:4;22846:5;;22855:10;-1:-1:-1;;;;;22846:5:0;;;:19;22842:196;;22888:45;22903:10;22915:9;22926:6;22888:14;:45::i;:::-;22881:52;;;;22842:196;22982:44;22996:10;23008:9;23019:6;22982:13;:44::i;2755:94::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2815:19:0::1;;::::0;;;2837:4:::1;2815:19;::::0;;;;;;;:26;;-1:-1:-1;;2815:26:0::1;::::0;;::::1;::::0;;2755:94::o;12344:114::-;12386:13;12400;12433:8;12442:7;12425:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12344:114;;:::o;16983:86::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;17044:9:::1;:17:::0;;-1:-1:-1;;17044:17:0::1;::::0;;16983:86::o;14963:172::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;15060:15:::1;:34:::0;;-1:-1:-1;;;;;15060:34:0;;::::1;-1:-1:-1::0;;;;;;15060:34:0;;::::1;;::::0;;;15105:9:::1;:22:::0;;;;;::::1;::::0;::::1;;::::0;;14963:172::o;13079:266::-;13269:10;13258:22;;;;:10;:22;;;;;;;;13250:54;;;;-1:-1:-1;;;13250:54:0;;11406:2:1;13250:54:0;;;11388:21:1;11445:2;11425:18;;;11418:30;-1:-1:-1;;;11464:18:1;;;11457:49;11523:18;;13250:54:0;11204:343:1;13250:54:0;-1:-1:-1;;;;;13315:15:0;;;;;:10;:15;;;;;:22;;-1:-1:-1;;13315:22:0;13333:4;13315:22;;;13079:266::o;16855:120::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;16916:10:::1;:18:::0;;-1:-1:-1;;16916:18:0::1;::::0;;16950:17:::1;::::0;::::1;::::0;16929:5:::1;::::0;16950:17:::1;16855:120::o:0;17881:160::-;17940:10;17929:22;;;;:10;:22;;;;;;;;17921:31;;;;;;17990:10;;:17;;18003:4;17990:17;:::i;:::-;17971:15;:36;;17963:45;;;;;;18019:6;:14;;-1:-1:-1;;18019:14:0;;;17881:160::o;18827:296::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;18946:1:::1;18933:10;:14;:63;;;;;18965:31;18990:5;18965:20;18982:2;18965:12;;:16;;:20;;;;:::i;:::-;:24:::0;::::1;:31::i;:::-;18951:10;:45;;18933:63;18925:98;;;::::0;-1:-1:-1;;;18925:98:0;;11754:2:1;18925:98:0::1;::::0;::::1;11736:21:1::0;11793:2;11773:18;;;11766:30;-1:-1:-1;;;11812:18:1;;;11805:52;11874:18;;18925:98:0::1;11552:346:1::0;18925:98:0::1;19034:11;:22:::0;;-1:-1:-1;;;;19034:22:0::1;-1:-1:-1::0;;;19034:22:0;::::1;;;;::::0;;19097:15:::1;5461:1;19097:2;:15;:::i;:::-;19083:30;::::0;:10;:30:::1;:::i;:::-;19067:13;:46:::0;-1:-1:-1;;18827:296:0:o;2857:97::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2919:19:0::1;2941:5;2919:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2919:27:0::1;::::0;;2857:97::o;3188:173::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;3264:5:::1;:11:::0;;-1:-1:-1;;;;;;3264:11:0::1;-1:-1:-1::0;;;;;3264:11:0;::::1;::::0;;::::1;::::0;;3286:19;;;-1:-1:-1;3286:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3286:26:0::1;::::0;;::::1;::::0;;;3328:25;;3051:51:1;;;3328:25:0::1;::::0;3024:18:1;3328:25:0::1;;;;;;;3188:173:::0;:::o;3073:107::-;-1:-1:-1;;;;;3153:19:0;3129:4;3153:19;;;:14;:19;;;;;;;;;3073:107::o;153:181::-;211:7;;243:5;247:1;243;:5;:::i;:::-;231:17;;272:1;267;:6;;259:46;;;;-1:-1:-1;;;259:46:0;;13704:2:1;259:46:0;;;13686:21:1;13743:2;13723:18;;;13716:30;13782:29;13762:18;;;13755:57;13829:18;;259:46:0;13502:351:1;680:250:0;738:7;762:1;767;762:6;758:47;;-1:-1:-1;792:1:0;785:8;;758:47;817:9;829:5;833:1;829;:5;:::i;:::-;817:17;-1:-1:-1;862:1:0;853:5;857:1;817:17;853:5;:::i;:::-;:10;845:56;;;;-1:-1:-1;;;845:56:0;;14060:2:1;845:56:0;;;14042:21:1;14099:2;14079:18;;;14072:30;14138:34;14118:18;;;14111:62;-1:-1:-1;;;14189:18:1;;;14182:31;14230:19;;845:56:0;13858:397:1;936:132:0;994:7;1021:39;1025:1;1028;1021:39;;;;;;;;;;;;;;;;;:3;:39::i;340:136::-;398:7;425:43;429:1;432;425:43;;;;;;;;;;;;;;;;;482:192;568:7;604:12;596:6;;;;588:29;;;;-1:-1:-1;;;588:29:0;;;;;;;;:::i;:::-;-1:-1:-1;628:9:0;640:5;644:1;640;:5;:::i;:::-;628:17;482:192;-1:-1:-1;;;;;482:192:0:o;23589:2028::-;23681:4;-1:-1:-1;;;;;23708:20:0;;23700:70;;;;-1:-1:-1;;;23700:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23789:23:0;;23781:71;;;;-1:-1:-1;;;23781:71:0;;;;;;;:::i;:::-;23880:12;;-1:-1:-1;;;;;23870:22:0;;;23880:12;;23870:22;;:51;;-1:-1:-1;23909:12:0;;-1:-1:-1;;;;;23896:25:0;;;23909:12;;23896:25;23870:51;23869:63;;;;-1:-1:-1;23926:6:0;;;;;;;23869:63;23865:143;;;23955:41;23970:6;23978:9;23989:6;23955:14;:41::i;:::-;23948:48;;;;23865:143;-1:-1:-1;;;;;24160:19:0;;;;;;:11;:19;;;;;;24183:15;-1:-1:-1;24160:38:0;24152:47;;;;;;24224:4;;-1:-1:-1;;;;;24214:14:0;;;24224:4;;24214:14;:35;;;;-1:-1:-1;24245:4:0;;-1:-1:-1;;;;;24232:17:0;;;24245:4;;24232:17;;24214:35;:65;;;;-1:-1:-1;;;;;;24253:26:0;;24274:4;24253:26;;24214:65;:116;;;;;24315:15;;24306:6;24283:20;24293:9;-1:-1:-1;;;;;12106:18:0;12088:7;12106:18;;;:9;:18;;;;;;;12022:105;24283:20;:29;;;;:::i;:::-;:47;24214:116;24210:201;;;24372:26;:15;24390:8;24372:26;:::i;:::-;-1:-1:-1;;;;;24346:22:0;;;;;;:11;:22;;;;;:53;24210:201;-1:-1:-1;;;;;24427:18:0;;;;;;:10;:18;;;;;;;;24426:19;:45;;;;-1:-1:-1;;;;;;24450:21:0;;;;;;:10;:21;;;;;;;;24449:22;24426:45;24423:125;;;24500:12;:10;:12::i;:::-;24492:44;;;;-1:-1:-1;;;24492:44:0;;14595:2:1;24492:44:0;;;14577:21:1;14634:2;14614:18;;;14607:30;-1:-1:-1;;;14653:18:1;;;14646:50;14713:18;;24492:44:0;14393:344:1;24492:44:0;-1:-1:-1;;;;;24564:22:0;;;;;;:14;:22;;;;;;;;;:51;;-1:-1:-1;;;;;;24590:25:0;;;;;;:14;:25;;;;;;;;24564:51;24560:131;;;24638:41;24653:6;24661:9;24672:6;24638:14;:41::i;24560:131::-;24706:6;;;;24703:63;;;24722:41;24737:6;24745:9;24756:6;24722:14;:41::i;24703:63::-;24802:4;;-1:-1:-1;;;;;24792:14:0;;;24802:4;;24792:14;:44;;;;-1:-1:-1;;;;;;24810:26:0;;24831:4;24810:26;;24792:44;24788:114;;;24854:7;;;24868:10;;24854:36;;-1:-1:-1;;;24854:36:0;;;;;14916:25:1;-1:-1:-1;;;;;14977:32:1;;;14957:18;;;14950:60;24854:7:0;;:13;;14889:18:1;;24854:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;24788:114;24926:6;;;;;;;24922:76;;;24948:38;24960:6;24968:9;24979:6;24948:11;:38::i;:::-;25013:26;25029:9;25013:15;:26::i;:::-;25010:46;;;25042:11;:9;:11::i;:::-;25096:53;;;;;;;;;;;-1:-1:-1;;;25096:53:0;;;;;;;;-1:-1:-1;;;;;25096:17:0;;-1:-1:-1;25096:17:0;;;:9;:17;;;;;;;;:53;;25118:6;;25096:21;:53::i;:::-;-1:-1:-1;;;;;25076:17:0;;;;;;;:9;:17;;;;;:73;;;;25199:4;;25186:17;;;25199:4;;25186:17;;:35;;-1:-1:-1;25217:4:0;;-1:-1:-1;;;;;25207:14:0;;;25217:4;;25207:14;25186:35;25185:83;;25262:6;25185:83;;;25225:34;25233:6;25241:9;25252:6;25225:7;:34::i;:::-;-1:-1:-1;;;;;25318:20:0;;;;;;:9;:20;;;;;;25160:108;;-1:-1:-1;25318:40:0;;25160:108;25318:24;:40::i;:::-;-1:-1:-1;;;;;25295:20:0;;;;;;;:9;:20;;;;;:63;;;;25394:4;;25384:14;;;25394:4;;25384:14;;:35;;-1:-1:-1;25415:4:0;;-1:-1:-1;;;;;25402:17:0;;;25415:4;;25402:17;25384:35;:47;;;-1:-1:-1;25424:7:0;;;;;;;25423:8;25384:47;25383:80;;;;-1:-1:-1;;;;;;25437:26:0;;25458:4;25437:26;;25383:80;25379:130;;;25496:1;25479:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;25379:130:0;25561:9;-1:-1:-1;;;;;25544:43:0;25553:6;-1:-1:-1;;;;;25544:43:0;;25572:14;25544:43;;;;160:25:1;;148:2;133:18;;14:177;25544:43:0;;;;;;;;-1:-1:-1;25605:4:0;;23589:2028;-1:-1:-1;;;;23589:2028:0:o;13357:330::-;13487:53;;;;;;;;;;;-1:-1:-1;;;13487:53:0;;;;;;;;-1:-1:-1;;;;;13487:17:0;;13450:4;13487:17;;;:9;:17;;;;;;;:53;;13509:6;;13487:21;:53::i;:::-;-1:-1:-1;;;;;13467:17:0;;;;;;;:9;:17;;;;;;:73;;;;13574:20;;;;;;;:32;;13599:6;13574:24;:32::i;:::-;-1:-1:-1;;;;;13551:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13622:35;;;;;;;;;;13650:6;160:25:1;;148:2;133:18;;14:177;13622:35:0;;;;;;;;-1:-1:-1;13675:4:0;13357:330;;;;;:::o;1074:345::-;1160:7;1262:12;1255:5;1247:28;;;;-1:-1:-1;;;1247:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1286:9:0;1298:5;1302:1;1298;:5;:::i;18243:276::-;18308:8;;18288:4;;18308:8;;;;;18304:208;;;-1:-1:-1;18339:4:0;;18243:276::o;18304:208::-;18373:6;;:11;;;;:47;;-1:-1:-1;18407:6:0;;:13;;18416:4;18407:13;:::i;:::-;18388:15;:32;;18373:47;18370:142;;;-1:-1:-1;18443:4:0;;18243:276::o;18370:142::-;-1:-1:-1;18495:5:0;;18243:276::o;15965:655::-;-1:-1:-1;;;;;16070:22:0;;;;;;:14;:22;;;;;;;;16069:23;:53;;;;-1:-1:-1;;;;;;16096:26:0;;16117:4;16096:26;;16069:53;:80;;;;-1:-1:-1;;;;;;16126:23:0;;16144:4;16126:23;;16069:80;:125;;;;-1:-1:-1;16189:4:0;;-1:-1:-1;;;;;16168:26:0;;;16189:4;;16168:26;;16069:125;:146;;;;-1:-1:-1;16211:4:0;;-1:-1:-1;;;;;16198:17:0;;;16211:4;;16198:17;;16069:146;:178;;;;-1:-1:-1;16232:15:0;;-1:-1:-1;;;;;16219:28:0;;;16232:15;;16219:28;;16069:178;:210;;;;-1:-1:-1;16264:15:0;;-1:-1:-1;;;;;16251:28:0;;;16264:15;;16251:28;;16069:210;16065:424;;;-1:-1:-1;;;;;12106:18:0;;16299;12106;;;:9;:18;;;;;;16392:15;;16368:19;16381:6;12106:18;16368:19;:::i;:::-;16367:40;;16359:114;;;;-1:-1:-1;;;16359:114:0;;15607:2:1;16359:114:0;;;15589:21:1;15646:2;15626:18;;;15619:30;15685:34;15665:18;;;15658:62;15756:32;15736:18;;;15729:60;15806:19;;16359:114:0;15405:426:1;16359:114:0;16280:209;16065:424;16519:12;;16509:6;:22;;:49;;;-1:-1:-1;;;;;;16535:23:0;;;;;;:15;:23;;;;;;;;16509:49;:79;;;-1:-1:-1;;;;;;16562:26:0;;;;;;:15;:26;;;;;;;;16509:79;16501:109;;;;-1:-1:-1;;;16501:109:0;;16038:2:1;16501:109:0;;;16020:21:1;16077:2;16057:18;;;16050:30;-1:-1:-1;;;16096:18:1;;;16089:47;16153:18;;16501:109:0;15836:341:1;19135:321:0;19202:4;19221:15;19275;19239:33;19256:15;;19239:12;;:16;;:33;;;;:::i;:::-;19323:4;;19239:51;-1:-1:-1;19239:51:0;-1:-1:-1;;;;;;19310:17:0;;;19323:4;;19310:17;:40;;;;;19340:10;19310:40;:60;;;;-1:-1:-1;19364:6:0;;;;19363:7;19310:60;:84;;;;-1:-1:-1;19383:11:0;;-1:-1:-1;;;19383:11:0;;;;19310:84;:138;;;;-1:-1:-1;19435:13:0;;19425:4;19407:24;;;;:9;:24;;;;;;:41;;19303:145;19135:321;-1:-1:-1;;;19135:321:0:o;20442:2295::-;7783:6;:13;;-1:-1:-1;;7783:13:0;7792:4;7783:13;;;20601:4:::1;7783:6:::0;20583:24;;;:9:::1;:24;::::0;;;;;20647:12:::1;::::0;20583:24;;7783:6;20646:70:::1;;20715:1;20646:70;;;20667:45;20710:1;20667:38;20696:8;;20667:24;20678:12;;20667:6;:10;;:24;;;;:::i;:45::-;20620:96:::0;-1:-1:-1;20729:20:0::1;20752:27;:6:::0;20620:96;20752:10:::1;:27::i;:::-;20816:16;::::0;;20830:1:::1;20816:16:::0;;;;;::::1;::::0;;20729:50;;-1:-1:-1;20792:21:0::1;::::0;20816:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20816:16:0::1;20792:40;;20861:4;20843;20848:1;20843:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20843:23:0::1;;;-1:-1:-1::0;;;;;20843:23:0::1;;;::::0;::::1;20887:42;20877:4;20882:1;20877:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20877:52:0;;::::1;:7;::::0;;::::1;::::0;;;;;:52;21000:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21000:188:0;;20966:21:::1;::::0;21000:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;21072:12;;20942:21:::1;::::0;21115:4;;21142::::1;::::0;21162:15:::1;::::0;21000:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21199:15;21320;21297:10;;21310:7;21297:20;;;;:::i;:::-;:38;21293:238;;;21351:14;21368:29;:21;21394:2;21368:25;:29::i;:::-;21436:12;::::0;21428:58:::1;::::0;21351:46;;-1:-1:-1;;;;;;21436:12:0::1;::::0;21475:6:::1;::::0;21351:46;;21428:58:::1;::::0;;;21351:46;21436:12;21475:6;21428:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21514:5:0::1;::::0;-1:-1:-1;;;;21293:238:0::1;21555:17;21575:40;:21;21601:13:::0;21575:25:::1;:40::i;:::-;21555:60;;21626:19;21664:1:::0;21649:12:::1;;:16;21648:65;;21705:8;;21648:65;;;21682:12;::::0;21669:33:::1;::::0;21682:19:::1;::::0;21699:1:::1;21682:16;:19::i;:::-;21669:8;::::0;;:12:::1;:33::i;:::-;21626:87;;21736:26;21765:51;21814:1;21765:44;21797:11;21765:27;21779:12;;21765:9;:13;;:27;;;;:::i;:51::-;21831:6;::::0;21736:80;;-1:-1:-1;21831:10:0;21827:242:::1;;21857:20;21880:38;21906:11;21880:21;21894:6;;21880:9;:13;;:21;;;;:::i;:38::-;21971:9;::::0;21963:61:::1;::::0;21857;;-1:-1:-1;;;;;;21971:9:0::1;::::0;22013:6:::1;::::0;21857:61;;21963::::1;::::0;;;21857;21971:9;22013:6;21963:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22052:5:0::1;::::0;-1:-1:-1;;;;21827:242:0::1;22084:19:::0;;22081:356:::1;;22119:6;::::0;22293:15:::1;::::0;22119:238:::1;::::0;-1:-1:-1;;;22119:238:0;;22195:4:::1;22119:238;::::0;::::1;17850:34:1::0;17900:18;;;17893:34;;;22119:6:0::1;17943:18:1::0;;;17936:34;;;17986:18;;;17979:34;-1:-1:-1;;;;;22293:15:0;;::::1;18029:19:1::0;;;18022:44;22327:15:0::1;18082:19:1::0;;;18075:35;22119:6:0;::::1;::::0;:22:::1;::::0;22149:18;;17784:19:1;;22119:238:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22377:48:0::1;::::0;;18606:25:1;;;18662:2;18647:18;;18640:34;;;22377:48:0::1;::::0;-1:-1:-1;18579:18:1;22377:48:0::1;;;;;;;22081:356;22480:21;22515:22:::0;;22512:175:::1;;22577:15;::::0;22569:73:::1;::::0;-1:-1:-1;;;;;22577:15:0;;::::1;::::0;22631:6:::1;::::0;22606:18;;22569:73:::1;::::0;;;22606:18;22577:15;22631:6;22569:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22670:5:0::1;::::0;-1:-1:-1;;;22512:175:0::1;-1:-1:-1::0;;22714:15:0::1;22699:12;:30:::0;-1:-1:-1;;7801:6:0;:14;;-1:-1:-1;;7801:14:0;;;-1:-1:-1;;;;;;20442:2295:0:o;19464:970::-;19550:7;19595:10;;19608:7;19595:20;;;;:::i;:::-;19577:15;:38;19576:62;;;-1:-1:-1;19620:9:0;;;;;;;:18;19576:62;19572:853;;;19716:4;;19656:17;;-1:-1:-1;;;;;19703:17:0;;;19716:4;;19703:17;19702:48;;19739:11;;19702:48;;;19724:12;;19702:48;19690:60;-1:-1:-1;19767:17:0;19787:31;19813:4;19787:21;:6;19690:60;19787:10;:21::i;:31::-;19880:4;19862:24;;;;:9;:24;;;;;;19767:51;;-1:-1:-1;19862:39:0;;19767:51;19862:28;:39::i;:::-;19853:4;19835:24;;;;:9;:24;;;;;;;:66;;;;19923:42;;-1:-1:-1;;;;;19923:42:0;;;;;;;19955:9;160:25:1;;148:2;133:18;;14:177;19923:42:0;;;;;;;;19989:21;:6;20000:9;19989:10;:21::i;:::-;19982:28;;;;;;19572:853;20125:4;;20065:17;;-1:-1:-1;;;;;20112:17:0;;;20125:4;;20112:17;20111:42;;20144:9;;20111:42;;;-1:-1:-1;20133:8:0;;20170:17;20190:31;20216:4;20190:21;:6;20133:8;20190:10;:21::i;196:423:1:-;238:3;276:5;270:12;303:6;298:3;291:19;328:1;338:162;352:6;349:1;346:13;338:162;;;414:4;470:13;;;466:22;;460:29;442:11;;;438:20;;431:59;367:12;338:162;;;342:3;545:1;538:4;529:6;524:3;520:16;516:27;509:38;608:4;601:2;597:7;592:2;584:6;580:15;576:29;571:3;567:39;563:50;556:57;;;196:423;;;;:::o;624:220::-;773:2;762:9;755:21;736:4;793:45;834:2;823:9;819:18;811:6;793:45;:::i;849:131::-;-1:-1:-1;;;;;924:31:1;;914:42;;904:70;;970:1;967;960:12;904:70;849:131;:::o;985:315::-;1053:6;1061;1114:2;1102:9;1093:7;1089:23;1085:32;1082:52;;;1130:1;1127;1120:12;1082:52;1169:9;1156:23;1188:31;1213:5;1188:31;:::i;:::-;1238:5;1290:2;1275:18;;;;1262:32;;-1:-1:-1;;;985:315:1:o;1497:316::-;1574:6;1582;1590;1643:2;1631:9;1622:7;1618:23;1614:32;1611:52;;;1659:1;1656;1649:12;1611:52;-1:-1:-1;;1682:23:1;;;1752:2;1737:18;;1724:32;;-1:-1:-1;1803:2:1;1788:18;;;1775:32;;1497:316;-1:-1:-1;1497:316:1:o;1818:180::-;1877:6;1930:2;1918:9;1909:7;1905:23;1901:32;1898:52;;;1946:1;1943;1936:12;1898:52;-1:-1:-1;1969:23:1;;1818:180;-1:-1:-1;1818:180:1:o;2003:456::-;2080:6;2088;2096;2149:2;2137:9;2128:7;2124:23;2120:32;2117:52;;;2165:1;2162;2155:12;2117:52;2204:9;2191:23;2223:31;2248:5;2223:31;:::i;:::-;2273:5;-1:-1:-1;2330:2:1;2315:18;;2302:32;2343:33;2302:32;2343:33;:::i;:::-;2003:456;;2395:7;;-1:-1:-1;;;2449:2:1;2434:18;;;;2421:32;;2003:456::o;2464:247::-;2523:6;2576:2;2564:9;2555:7;2551:23;2547:32;2544:52;;;2592:1;2589;2582:12;2544:52;2631:9;2618:23;2650:31;2675:5;2650:31;:::i;3113:248::-;3181:6;3189;3242:2;3230:9;3221:7;3217:23;3213:32;3210:52;;;3258:1;3255;3248:12;3210:52;-1:-1:-1;;3281:23:1;;;3351:2;3336:18;;;3323:32;;-1:-1:-1;3113:248:1:o;3366:127::-;3427:10;3422:3;3418:20;3415:1;3408:31;3458:4;3455:1;3448:15;3482:4;3479:1;3472:15;3498:719;3541:5;3594:3;3587:4;3579:6;3575:17;3571:27;3561:55;;3612:1;3609;3602:12;3561:55;3648:6;3635:20;3674:18;3711:2;3707;3704:10;3701:36;;;3717:18;;:::i;:::-;3792:2;3786:9;3760:2;3846:13;;-1:-1:-1;;3842:22:1;;;3866:2;3838:31;3834:40;3822:53;;;3890:18;;;3910:22;;;3887:46;3884:72;;;3936:18;;:::i;:::-;3976:10;3972:2;3965:22;4011:2;4003:6;3996:18;4057:3;4050:4;4045:2;4037:6;4033:15;4029:26;4026:35;4023:55;;;4074:1;4071;4064:12;4023:55;4138:2;4131:4;4123:6;4119:17;4112:4;4104:6;4100:17;4087:54;4185:1;4178:4;4173:2;4165:6;4161:15;4157:26;4150:37;4205:6;4196:15;;;;;;3498:719;;;;:::o;4222:543::-;4310:6;4318;4371:2;4359:9;4350:7;4346:23;4342:32;4339:52;;;4387:1;4384;4377:12;4339:52;4427:9;4414:23;4456:18;4497:2;4489:6;4486:14;4483:34;;;4513:1;4510;4503:12;4483:34;4536:50;4578:7;4569:6;4558:9;4554:22;4536:50;:::i;:::-;4526:60;;4639:2;4628:9;4624:18;4611:32;4595:48;;4668:2;4658:8;4655:16;4652:36;;;4684:1;4681;4674:12;4652:36;;4707:52;4751:7;4740:8;4729:9;4725:24;4707:52;:::i;:::-;4697:62;;;4222:543;;;;;:::o;4770:383::-;4967:2;4956:9;4949:21;4930:4;4993:45;5034:2;5023:9;5019:18;5011:6;4993:45;:::i;:::-;5086:9;5078:6;5074:22;5069:2;5058:9;5054:18;5047:50;5114:33;5140:6;5132;5114:33;:::i;5158:388::-;5226:6;5234;5287:2;5275:9;5266:7;5262:23;5258:32;5255:52;;;5303:1;5300;5293:12;5255:52;5342:9;5329:23;5361:31;5386:5;5361:31;:::i;:::-;5411:5;-1:-1:-1;5468:2:1;5453:18;;5440:32;5481:33;5440:32;5481:33;:::i;:::-;5533:7;5523:17;;;5158:388;;;;;:::o;5551:118::-;5637:5;5630:13;5623:21;5616:5;5613:32;5603:60;;5659:1;5656;5649:12;5674:309;5739:6;5747;5800:2;5788:9;5779:7;5775:23;5771:32;5768:52;;;5816:1;5813;5806:12;5768:52;5855:9;5842:23;5874:28;5896:5;5874:28;:::i;6474:380::-;6553:1;6549:12;;;;6596;;;6617:61;;6671:4;6663:6;6659:17;6649:27;;6617:61;6724:2;6716:6;6713:14;6693:18;6690:38;6687:161;;6770:10;6765:3;6761:20;6758:1;6751:31;6805:4;6802:1;6795:15;6833:4;6830:1;6823:15;6687:161;;6474:380;;;:::o;6859:335::-;7061:2;7043:21;;;7100:2;7080:18;;;7073:30;-1:-1:-1;;;7134:2:1;7119:18;;7112:41;7185:2;7170:18;;6859:335::o;7199:329::-;7401:2;7383:21;;;7440:1;7420:18;;;7413:29;-1:-1:-1;;;7473:2:1;7458:18;;7451:36;7519:2;7504:18;;7199:329::o;7533:127::-;7594:10;7589:3;7585:20;7582:1;7575:31;7625:4;7622:1;7615:15;7649:4;7646:1;7639:15;7665:168;7738:9;;;7769;;7786:15;;;7780:22;;7766:37;7756:71;;7807:18;;:::i;7838:217::-;7878:1;7904;7894:132;;7948:10;7943:3;7939:20;7936:1;7929:31;7983:4;7980:1;7973:15;8011:4;8008:1;8001:15;7894:132;-1:-1:-1;8040:9:1;;7838:217::o;8060:401::-;8262:2;8244:21;;;8301:2;8281:18;;;8274:30;8340:34;8335:2;8320:18;;8313:62;-1:-1:-1;;;8406:2:1;8391:18;;8384:35;8451:3;8436:19;;8060:401::o;8466:399::-;8668:2;8650:21;;;8707:2;8687:18;;;8680:30;8746:34;8741:2;8726:18;;8719:62;-1:-1:-1;;;8812:2:1;8797:18;;8790:33;8855:3;8840:19;;8466:399::o;8870:125::-;8935:9;;;8956:10;;;8953:36;;;8969:18;;:::i;9126:545::-;9228:2;9223:3;9220:11;9217:448;;;9264:1;9289:5;9285:2;9278:17;9334:4;9330:2;9320:19;9404:2;9392:10;9388:19;9385:1;9381:27;9375:4;9371:38;9440:4;9428:10;9425:20;9422:47;;;-1:-1:-1;9463:4:1;9422:47;9518:2;9513:3;9509:12;9506:1;9502:20;9496:4;9492:31;9482:41;;9573:82;9591:2;9584:5;9581:13;9573:82;;;9636:17;;;9617:1;9606:13;9573:82;;;9577:3;;;9126:545;;;:::o;9847:1352::-;9973:3;9967:10;10000:18;9992:6;9989:30;9986:56;;;10022:18;;:::i;:::-;10051:97;10141:6;10101:38;10133:4;10127:11;10101:38;:::i;:::-;10095:4;10051:97;:::i;:::-;10203:4;;10267:2;10256:14;;10284:1;10279:663;;;;10986:1;11003:6;11000:89;;;-1:-1:-1;11055:19:1;;;11049:26;11000:89;-1:-1:-1;;9804:1:1;9800:11;;;9796:24;9792:29;9782:40;9828:1;9824:11;;;9779:57;11102:81;;10249:944;;10279:663;9073:1;9066:14;;;9110:4;9097:18;;-1:-1:-1;;10315:20:1;;;10433:236;10447:7;10444:1;10441:14;10433:236;;;10536:19;;;10530:26;10515:42;;10628:27;;;;10596:1;10584:14;;;;10463:19;;10433:236;;;10437:3;10697:6;10688:7;10685:19;10682:201;;;10758:19;;;10752:26;-1:-1:-1;;10841:1:1;10837:14;;;10853:3;10833:24;10829:37;10825:42;10810:58;10795:74;;10682:201;-1:-1:-1;;;;;10929:1:1;10913:14;;;10909:22;10896:36;;-1:-1:-1;9847:1352:1:o;11903:422::-;11992:1;12035:5;11992:1;12049:270;12070:7;12060:8;12057:21;12049:270;;;12129:4;12125:1;12121:6;12117:17;12111:4;12108:27;12105:53;;;12138:18;;:::i;:::-;12188:7;12178:8;12174:22;12171:55;;;12208:16;;;;12171:55;12287:22;;;;12247:15;;;;12049:270;;;12053:3;11903:422;;;;;:::o;12330:806::-;12379:5;12409:8;12399:80;;-1:-1:-1;12450:1:1;12464:5;;12399:80;12498:4;12488:76;;-1:-1:-1;12535:1:1;12549:5;;12488:76;12580:4;12598:1;12593:59;;;;12666:1;12661:130;;;;12573:218;;12593:59;12623:1;12614:10;;12637:5;;;12661:130;12698:3;12688:8;12685:17;12682:43;;;12705:18;;:::i;:::-;-1:-1:-1;;12761:1:1;12747:16;;12776:5;;12573:218;;12875:2;12865:8;12862:16;12856:3;12850:4;12847:13;12843:36;12837:2;12827:8;12824:16;12819:2;12813:4;12810:12;12806:35;12803:77;12800:159;;;-1:-1:-1;12912:19:1;;;12944:5;;12800:159;12991:34;13016:8;13010:4;12991:34;:::i;:::-;13061:6;13057:1;13053:6;13049:19;13040:7;13037:32;13034:58;;;13072:18;;:::i;:::-;13110:20;;12330:806;-1:-1:-1;;;12330:806:1:o;13141:140::-;13199:5;13228:47;13269:4;13259:8;13255:19;13249:4;13228:47;:::i;14260:128::-;14327:9;;;14348:11;;;14345:37;;;14362:18;;:::i;15021:379::-;15097:6;15105;15158:2;15146:9;15137:7;15133:23;15129:32;15126:52;;;15174:1;15171;15164:12;15126:52;15206:9;15200:16;15225:28;15247:5;15225:28;:::i;:::-;15322:2;15307:18;;15301:25;15272:5;;-1:-1:-1;15335:33:1;15301:25;15335:33;:::i;16182:127::-;16243:10;16238:3;16234:20;16231:1;16224:31;16274:4;16271:1;16264:15;16298:4;16295:1;16288:15;16314:980;16576:4;16624:3;16613:9;16609:19;16655:6;16644:9;16637:25;16681:2;16719:6;16714:2;16703:9;16699:18;16692:34;16762:3;16757:2;16746:9;16742:18;16735:31;16786:6;16821;16815:13;16852:6;16844;16837:22;16890:3;16879:9;16875:19;16868:26;;16929:2;16921:6;16917:15;16903:29;;16950:1;16960:195;16974:6;16971:1;16968:13;16960:195;;;17039:13;;-1:-1:-1;;;;;17035:39:1;17023:52;;17130:15;;;;17095:12;;;;17071:1;16989:9;16960:195;;;-1:-1:-1;;;;;;;17211:32:1;;;;17206:2;17191:18;;17184:60;-1:-1:-1;;;17275:3:1;17260:19;17253:35;17172:3;16314:980;-1:-1:-1;;;16314:980:1:o;18121:306::-;18209:6;18217;18225;18278:2;18266:9;18257:7;18253:23;18249:32;18246:52;;;18294:1;18291;18284:12;18246:52;18323:9;18317:16;18307:26;;18373:2;18362:9;18358:18;18352:25;18342:35;;18417:2;18406:9;18402:18;18396:25;18386:35;;18121:306;;;;;:::o

Swarm Source

ipfs://8b0e4826bea34657b8ca0cf3fc4633af2335e3eee047457326ff2d7c435c0db7
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.