ETH Price: $2,518.88 (-5.12%)

Token

ZKPixel (ZKP)
 

Overview

Max Total Supply

1,000,000,000 ZKP

Holders

285

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,800,000.98058874375118802 ZKP

Value
$0.00
0xe6472133973da6b78d28e187f92273a3240f6182
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ZKPixel

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
*/
//SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
//
// Website V1: https://www.zkpixel.com/
// Documentation: https://www.zkpixel.com/docs
// Hide behind the pixels
// 
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 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);
}

// We use the Auth contract mainly to have two devs able to interacet with the contract
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);
    }

    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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract ZKPixel is IERC20, Auth {
   
    // Constant addresses 
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    IDEXRouter public constant router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    // Immutable vars
    address public immutable pair; // After we set the pair we don't have to change it again

    // Token info is constant
    string constant _name = "ZKPixel";
    string constant _symbol = "ZKP";
    uint8 constant _decimals = 18;

    // Total supply is 1 billion
    uint256 _totalSupply = 1 * (10**9) * (10 ** _decimals);

    // The tax divisor is also constant (and hence immutable)
    // 1000 so we can also use halves, like 2.5%
    uint256 constant taxDivisor = 1_000;
    
    // 10 / 1000 = 0.01 = 1%
    uint256 public _maxTxAmount = _totalSupply * 20 / taxDivisor; 
    uint256 public _maxWalletToken =  _totalSupply * 20 / taxDivisor; 

    // Keep track of wallet balances and approvals (allowance)
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    // Mapping to keep track of what wallets/contracts are exempt
    // from fees
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt; // Both wallet + max TX

    // Also, to keep it organized, a seperate mapping to exclude the presale
    // and locker from limits
    mapping (address => bool) presaleOrlock;

    //fees are mulitplied by 10 to allow decimals, and therefore dividied by 1000 (see takefee)
    uint256 marketingBuyFee = 70;
    uint256 liquidityBuyFee = 0;
    uint256 developmentBuyFee = 70;
    uint256 public totalBuyFee = marketingBuyFee + liquidityBuyFee + developmentBuyFee;

    uint256 marketingSellFee = 100;
    uint256 liquiditySellFee = 0;
    uint256 developmentSellFee = 100;
    uint256 public totalSellFee = marketingSellFee + liquiditySellFee + developmentSellFee;

    // For the sniper friends
    uint256 private sniperTaxTill; 

    // In case anything would go wrong with fees we can just disable them
    bool feesEnabled = true;

    // Whether tx limits should apply or not 
    bool limits = true;

    // To keep track of the tokens collected to swap
    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private tokensForDev;

    // Wallets used to send the fees to
    address public liquidityWallet;
    address public marketingWallet;
    address public developmentWallet;

    // One time trade lock
    bool tradeBlock = true;
    bool lockUsed = false;

    // Contract cant be tricked into spam selling exploit
    uint256 lastSellTime;
    
    // When to swap contract tokens, and how many to swap
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 10 / 1000; // 0.5%
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

    // This will just check if the transferf is called from within 
    // the token -> ETH swap when processing the fees (and adding LP)
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }


    constructor () Auth(msg.sender) {
        // Create the lp pair
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));

        // Exclude the contract
        isFeeExempt[address(this)] = true;
        isTxLimitExempt[address(this)] = true;

        // Exclude the owner
        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        
        // Exclude the pair
        isTxLimitExempt[address(pair)] = true; 

        // Exclude the router 
        isTxLimitExempt[address(router)] = true;

        // Set fee receivers
        liquidityWallet = 0xEaC1a4dA395254ed2afEc4C3D10F4F52DD06dDA0;
        marketingWallet = 0xEaC1a4dA395254ed2afEc4C3D10F4F52DD06dDA0;
        developmentWallet = 0x44D225554D75E65cf74f50Aa73DA420a9A1550A1;

        // Approve this contract & owner to interact with the 
        // router and pair contract (for swapping)
        _approve(address(this), address(router), _totalSupply);
        _approve(msg.sender, address(pair), _totalSupply);

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

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    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;}

    // Internal approve 
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        // Check if the sender has sufficient balance
        require(senderBalance >= amount, "Insufficient Balance");
        // Update balances
        _balances[sender] = _balances[sender] - amount; 
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    // Set the buy fees, this can not exceed 14%, 140 / 1000 = 0.14 = 14%
    function setBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _developFee) external authorized{
        require(_marketingFee + _liquidityFee + _developFee <= 140); // max 14%
        marketingBuyFee = _marketingFee;
        liquidityBuyFee = _liquidityFee;
        developmentBuyFee = _developFee;
        totalBuyFee = _marketingFee + _liquidityFee + _developFee;
    }
    
    // Set the sell fees, this can not exceed 20%, 200 / 1000 = 0.20 = 20%
    function setSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _developFee) external authorized{
        require(_marketingFee + _liquidityFee + _developFee <= 200); // max 20%
        marketingSellFee = _marketingFee;
        liquiditySellFee = _liquidityFee;
        developmentSellFee = _developFee;
        totalSellFee = _marketingFee + _liquidityFee + _developFee;
    }

    // To change the tax receiving wallets
    function setWallets(address _marketingWallet, address _liquidityWallet, address _developWallet) external authorized {
        marketingWallet = _marketingWallet;
        liquidityWallet = _liquidityWallet;
        developmentWallet = _developWallet;
    }

    // To limit the number of tokens a wallet can buy, especially relevant at launch
    function setMaxWallet(uint256 percent) external authorized {
        require(percent >= 10); //should be at least 1% of the total supply (note divisor is 1000)
        _maxWalletToken = ( _totalSupply * percent ) / taxDivisor;
    }

    // To limit the number of tokens per transactions
    function setTxLimit(uint256 percent) external authorized {
        require(percent >= 10); //should be at least 1% of the total supply (note divisor is 1000)
        _maxTxAmount = ( _totalSupply * percent ) / taxDivisor;
    }
    
    function checkLimits(address sender,address recipient, uint256 amount) internal view {
        // If both sender and recipient are excluded we don't have to limit 
        if (isTxLimitExempt[sender] && isTxLimitExempt[recipient]){return;}

        // In any other case we will check whether this is a buy or sell
        // to determine the tx limit
        
        // buy
        if (sender == pair && !isTxLimitExempt[recipient]) {  
            require(amount <= _maxTxAmount, "Max tx limit");

        // sell
        } else if(recipient == pair && !isTxLimitExempt[sender] ) { 
            require(amount <= _maxTxAmount, "Max tx limit");
        }

        // Also check max wallet 
        if (!isTxLimitExempt[recipient]) {
            require(amount + balanceOf(recipient) <= _maxWalletToken, "Max wallet");
        }

    }

    // We will lift the transaction limits just after launch
    function liftLimits() external authorized {
        limits = false;
    }

    // This would make the token fee-less in case taking fees
    // would at any point block transfers. This is reversible
    function setFeeTaking(bool takeFees) external authorized {
        feesEnabled = takeFees;
    }

    // Enable trading - this can only be called once (by just the owner)
    function startTrading() external onlyOwner {
        require(lockUsed == false);
        tradeBlock = false;
        sniperTaxTill = block.number + 1; // (<sniperTaxTill, so first block)
        lockUsed = true;
    }
    
    // When and if to swap the tokens in the contract
    function setTokenSwapSettings(bool _enabled, uint256 _threshold) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _threshold * (10 ** _decimals); 
    }
    
    // Check if the contract should swap tokens
    function shouldTokenSwap(address recipient) internal view returns (bool) {
        return recipient == pair // i.e. is sell
        && lastSellTime + 1 < block.timestamp // block contract spam sells
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function takeFee(address from, address to, uint256 amount) internal returns (uint256) {

        // If the sender or receiver is exempt from fees, skip fees
        if (isFeeExempt[from] || isFeeExempt[to]) {
            return amount;
        }

        // This does not charge for wallet-wallet transfers
        uint256 fees;

        // Sniper tax
        if (block.number < sniperTaxTill) {
            fees = amount * 98 / 100; // 98% tax
            tokensForLiquidity += (fees * 50) / 98;
            tokensForMarketing += (fees * 48) / 98;
        }

        // On sell
        else if (to == pair && totalSellFee > 0) {
            fees = amount * totalSellFee / taxDivisor;
            tokensForLiquidity += (fees * liquiditySellFee)   / totalSellFee;
            tokensForDev       += (fees * developmentSellFee) / totalSellFee;
            tokensForMarketing += (fees * marketingSellFee)   / totalSellFee;
        }

        // On buy
        else if (from == pair && totalBuyFee > 0) {
            fees = amount * totalBuyFee / taxDivisor;
            tokensForLiquidity += (fees * liquidityBuyFee)   / totalBuyFee ;
            tokensForDev       += (fees * developmentBuyFee) / totalBuyFee;
            tokensForMarketing += (fees * marketingBuyFee)   / totalBuyFee;
        }

        // If we collected fees, send them to the contract
        if (fees > 0) {
            _basicTransfer(from, address(this), fees);
            emit Transfer(from, address(this), fees);
        }

        // Return the taxed amount
        return amount -= fees;
    }

    
    function swapTokensForEth(uint256 tokenAmount) private {
        // Swap path token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        // Make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // Add liquidity from the contract. Now the LP tokens get send to the lP
        // wallet, but we could also change the LP receiver to the burn address leter
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            liquidityWallet,
            block.timestamp
        );
    }

    function swapBack() internal swapping {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {return;}
  
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;

        uint256 initialETHBalance = address(this).balance;

        // Swap the tokens for ETH
        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance - initialETHBalance;
        uint256 ethForMarketing = (ethBalance * tokensForMarketing) / totalTokensToSwap;
        uint256 ethForDev       = (ethBalance * tokensForDev)       / totalTokensToSwap;
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        // Reset token fee counts
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        // Send Dev fees
        (success, ) = address(developmentWallet).call{value: ethForDev}("");

        // Add liquidty
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }

        // Whatever remains (this should be ~ethForMarketing) send to the marketing wallet
        (success, ) = address(marketingWallet).call{value: address(this).balance}("");

        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){
            // Get the current allowance
            uint256 curAllowance =  _allowances[sender][msg.sender];
            require(curAllowance >= amount, "Insufficient Allowance");
            _allowances[sender][msg.sender] -= amount;
        }
        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");

        // These transfers are always feeless and limitless
        if ( authorizations[sender] || authorizations[recipient] || presaleOrlock[sender] || inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        // In any other case, check if trading is open already
        require(tradeBlock == false,"Trading not open yet");
            
        // If limits are enabled we check the max wallet and max tx.
        if (limits){checkLimits(sender, recipient, amount);}

        // Check how much fees are accumulated in the contract, if > threshold, swap
        if(shouldTokenSwap(recipient)){ swapBack();}

        // Charge transaction fees (only swaps) when enabled
        if(feesEnabled){
             amount = (recipient == pair || sender == pair) ? takeFee(sender, recipient, amount) : amount;
        } 

        // Send the remaining tokens, after fee
        _basicTransfer(sender, recipient, amount);

        emit Transfer(sender, recipient, amount);
        return true;
    }

    // In case anyone would send ETH to the contract directly
    // or when, for some reason, autoswap would fail. We 
    // send the contact ETH to the marketing wallet
    function clearStuckWETH(uint256 perc) external authorized {
        uint256 amountWETH = address(this).balance;
        payable(marketingWallet).transfer(amountWETH * perc / 100);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"perc","type":"uint256"}],"name":"clearStuckWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"liftLimits","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":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"_developFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"takeFees","type":"bool"}],"name":"setFeeTaking","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":"_developFee","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":"_liquidityWallet","type":"address"},{"internalType":"address","name":"_developWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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":"pure","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":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526012600a62000014919062000a87565b633b9aca0062000025919062000ad8565b6002556103e860146002546200003c919062000ad8565b62000048919062000b52565b6003556103e860146002546200005f919062000ad8565b6200006b919062000b52565b6004556046600a556000600b556046600c55600c54600b54600a5462000092919062000b8a565b6200009e919062000b8a565b600d556064600e556000600f556064601055601054600f54600e54620000c5919062000b8a565b620000d1919062000b8a565b6011556001601360006101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055506001601960146101000a81548160ff0219169083151502179055506000601960156101000a81548160ff0219169083151502179055506001601b60006101000a81548160ff0219169083151502179055506103e8600a6002546200016f919062000ad8565b6200017b919062000b52565b601c553480156200018b57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000c2f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000326573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034c919062000c2f565b306040518363ffffffff1660e01b81526004016200036c92919062000c72565b6020604051808303816000875af11580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b2919062000c2f565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073eac1a4da395254ed2afec4c3d10f4f52dd06dda0601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073eac1a4da395254ed2afec4c3d10f4f52dd06dda0601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507344d225554d75e65cf74f50aa73da420a9a1550a1601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200073330737a250d5630b4cf539739df2c5dacb4c659f2488d6002546200080060201b60201c565b6200074a336080516002546200080060201b60201c565b600254600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600254604051620007f2919062000cb0565b60405180910390a362000ccd565b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620008e0919062000cb0565b60405180910390a3505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200097b57808604811115620009535762000952620008ed565b5b6001851615620009635780820291505b808102905062000973856200091c565b945062000933565b94509492505050565b60008262000996576001905062000a69565b81620009a6576000905062000a69565b8160018114620009bf5760028114620009ca5762000a00565b600191505062000a69565b60ff841115620009df57620009de620008ed565b5b8360020a915084821115620009f957620009f8620008ed565b5b5062000a69565b5060208310610133831016604e8410600b841016171562000a3a5782820a90508381111562000a345762000a33620008ed565b5b62000a69565b62000a49848484600162000929565b9250905081840481111562000a635762000a62620008ed565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a948262000a70565b915062000aa18362000a7a565b925062000ad07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000984565b905092915050565b600062000ae58262000a70565b915062000af28362000a70565b925082820262000b028162000a70565b9150828204841483151762000b1c5762000b1b620008ed565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b5f8262000a70565b915062000b6c8362000a70565b92508262000b7f5762000b7e62000b23565b5b828204905092915050565b600062000b978262000a70565b915062000ba48362000a70565b925082820190508082111562000bbf5762000bbe620008ed565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bf78262000bca565b9050919050565b62000c098162000bea565b811462000c1557600080fd5b50565b60008151905062000c298162000bfe565b92915050565b60006020828403121562000c485762000c4762000bc5565b5b600062000c588482850162000c18565b91505092915050565b62000c6c8162000bea565b82525050565b600060408201905062000c89600083018562000c61565b62000c98602083018462000c61565b9392505050565b62000caa8162000a70565b82525050565b600060208201905062000cc7600083018462000c9f565b92915050565b608051613c2662000d21600039600081816112e10152818161144a01528181611b3b01528181611b9001528181611f3101528181612025015281816121c8015281816126c501526127e20152613c266000f3fe60806040526004361061021e5760003560e01c806375f0a87411610123578063c1f1b1b5116100ab578063f2fde38b1161006f578063f2fde38b146107e2578063f60b3d6d1461080b578063f887ea4014610822578063fe6236741461084d578063fe9fbb801461087657610225565b8063c1f1b1b5146106fd578063d469801614610728578063dd62ed3e14610753578063eb34104014610790578063f0b37c04146107b957610225565b80639d9241ec116100f25780639d9241ec14610616578063a8aa1b3114610641578063a9059cbb1461066c578063b6a5d7de146106a9578063c04a5414146106d257610225565b806375f0a8741461056a57806378109e54146105955780637d1db4a5146105c057806395d89b41146105eb57610225565b80632f54bf6e116101a65780635c85974f116101755780635c85974f146104875780635d0044ca146104b05780636ddd1713146104d957806370a082311461050457806375cb1bd11461054157610225565b80632f54bf6e146103b7578063313ce567146103f4578063571ac8b01461041f57806359b107b91461045c57610225565b80630d075d9c116101ed5780630d075d9c146102e65780630f683e901461030f57806318160ddd1461033857806323b872dd14610363578063293230b8146103a057610225565b80630445b6671461022a57806304fda8ff1461025557806306fdde031461027e578063095ea7b3146102a957610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108b3565b60405161024c9190612c68565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612cb4565b6108b9565b005b34801561028a57600080fd5b5061029361098a565b6040516102a09190612d71565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190612df1565b6109c7565b6040516102dd9190612e4c565b60405180910390f35b3480156102f257600080fd5b5061030d60048036038101906103089190612e67565b610ab9565b005b34801561031b57600080fd5b5061033660048036038101906103319190612e67565b610b5c565b005b34801561034457600080fd5b5061034d610bff565b60405161035a9190612c68565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190612eba565b610c09565b6040516103979190612e4c565b60405180910390f35b3480156103ac57600080fd5b506103b5610eda565b005b3480156103c357600080fd5b506103de60048036038101906103d99190612f0d565b610f8d565b6040516103eb9190612e4c565b60405180910390f35b34801561040057600080fd5b50610409610fe6565b6040516104169190612f56565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612f0d565b610fef565b6040516104539190612e4c565b60405180910390f35b34801561046857600080fd5b50610471611004565b60405161047e9190612c68565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190612cb4565b61100a565b005b3480156104bc57600080fd5b506104d760048036038101906104d29190612cb4565b611084565b005b3480156104e557600080fd5b506104ee6110fe565b6040516104fb9190612e4c565b60405180910390f35b34801561051057600080fd5b5061052b60048036038101906105269190612f0d565b611111565b6040516105389190612c68565b60405180910390f35b34801561054d57600080fd5b5061056860048036038101906105639190612f71565b61115a565b005b34801561057657600080fd5b5061057f61126a565b60405161058c9190612fd3565b60405180910390f35b3480156105a157600080fd5b506105aa611290565b6040516105b79190612c68565b60405180910390f35b3480156105cc57600080fd5b506105d5611296565b6040516105e29190612c68565b60405180910390f35b3480156105f757600080fd5b5061060061129c565b60405161060d9190612d71565b60405180910390f35b34801561062257600080fd5b5061062b6112d9565b6040516106389190612c68565b60405180910390f35b34801561064d57600080fd5b506106566112df565b6040516106639190612fd3565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e9190612df1565b611303565b6040516106a09190612e4c565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb9190612f0d565b61137e565b005b3480156106de57600080fd5b506106e7611420565b6040516106f49190612fd3565b60405180910390f35b34801561070957600080fd5b50610712611446565b60405161071f9190612fd3565b60405180910390f35b34801561073457600080fd5b5061073d61146e565b60405161074a9190612fd3565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190612fee565b611494565b6040516107879190612c68565b60405180910390f35b34801561079c57600080fd5b506107b760048036038101906107b2919061305a565b61151b565b005b3480156107c557600080fd5b506107e060048036038101906107db9190612f0d565b6115a0565b005b3480156107ee57600080fd5b50610809600480360381019061080491906130d8565b611643565b005b34801561081757600080fd5b5061082061175c565b005b34801561082e57600080fd5b506108376117c1565b6040516108449190613164565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f919061317f565b6117d9565b005b34801561088257600080fd5b5061089d60048036038101906108989190612f0d565b61183e565b6040516108aa9190612e4c565b60405180910390f35b601c5481565b6108c23361183e565b610901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f8906131f8565b60405180910390fd5b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846109509190613247565b61095a91906132b8565b9081150290604051600060405180830381858888f19350505050158015610985573d6000803e3d6000fd5b505050565b60606040518060400160405280600781526020017f5a4b506978656c00000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610aa79190612c68565b60405180910390a36001905092915050565b610ac23361183e565b610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af8906131f8565b60405180910390fd5b608c818385610b1091906132e9565b610b1a91906132e9565b1115610b2557600080fd5b82600a8190555081600b8190555080600c81905550808284610b4791906132e9565b610b5191906132e9565b600d81905550505050565b610b653361183e565b610ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9b906131f8565b60405180910390fd5b60c8818385610bb391906132e9565b610bbd91906132e9565b1115610bc857600080fd5b82600e8190555081600f8190555080601081905550808284610bea91906132e9565b610bf491906132e9565b601181905550505050565b6000600254905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c709061338f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdf90613421565b60405180910390fd5b600254600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ec6576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e289061348d565b60405180910390fd5b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ebd91906134ad565b92505081905550505b610ed1848484611894565b90509392505050565b610ee333610f8d565b610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f199061352d565b60405180910390fd5b60001515601960159054906101000a900460ff16151514610f4257600080fd5b6000601960146101000a81548160ff021916908315150217905550600143610f6a91906132e9565b6012819055506001601960156101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000610ffd826002546109c7565b9050919050565b600d5481565b6110133361183e565b611052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611049906131f8565b60405180910390fd5b600a81101561106057600080fd5b6103e8816002546110719190613247565b61107b91906132b8565b60038190555050565b61108d3361183e565b6110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c3906131f8565b60405180910390fd5b600a8110156110da57600080fd5b6103e8816002546110eb9190613247565b6110f591906132b8565b60048190555050565b601b60009054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111633361183e565b6111a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611199906131f8565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60035481565b60606040518060400160405280600381526020017f5a4b500000000000000000000000000000000000000000000000000000000000815250905090565b60115481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361136a57611363338484611c74565b9050611378565b611375338484611894565b90505b92915050565b61138733610f8d565b6113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd9061352d565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115243361183e565b611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a906131f8565b60405180910390fd5b81601b60006101000a81548160ff0219169083151502179055506012600a61158b9190613680565b816115969190613247565b601c819055505050565b6115a933610f8d565b6115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df9061352d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61164c33610f8d565b61168b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116829061352d565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161175191906136ec565b60405180910390a150565b6117653361183e565b6117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906131f8565b60405180910390fd5b6000601360016101000a81548160ff021916908315150217905550565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6117e23361183e565b611821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611818906131f8565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fb9061338f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a90613421565b60405180910390fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a145750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a685750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a7f5750601d60009054906101000a900460ff165b15611a9657611a8f848484611c74565b9050611c6d565b60001515601960149054906101000a900460ff16151514611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390613753565b60405180910390fd5b601360019054906101000a900460ff1615611b0d57611b0c848484611e89565b5b611b16836121c4565b15611b2457611b236122b3565b5b601360009054906101000a900460ff1615611bf7577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611bde57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b611be85781611bf4565b611bf3848484612585565b5b91505b611c02848484611c74565b508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c609190612c68565b60405180910390a3600190505b9392505050565b600080600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf3906137bf565b60405180910390fd5b82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4791906134ad565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dd591906132e9565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e759190612c68565b60405180910390a360019150509392505050565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f2b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121bf577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fd45750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120235760035481111561201e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120159061382b565b60405180910390fd5b612114565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156120c85750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561211357600354811115612112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121099061382b565b60405180910390fd5b5b5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121be5760045461217183611111565b8261217c91906132e9565b11156121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b490613897565b60405180910390fd5b5b5b505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561222e5750426001601a5461222c91906132e9565b105b80156122475750601d60009054906101000a900460ff16155b801561225f5750601b60009054906101000a900460ff165b80156122ac5750601c54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b6001601d60006101000a81548160ff02191690831515021790555060006122d930611111565b905060006016546014546015546122f091906132e9565b6122fa91906132e9565b905060008083148061230c5750600082145b1561231957505050612568565b60006002836015548661232c9190613247565b61233691906132b8565b61234091906132b8565b90506000818561235091906134ad565b9050600047905061236082612990565b6000814761236e91906134ad565b9050600086601454836123819190613247565b61238b91906132b8565b90506000876016548461239e9190613247565b6123a891906132b8565b905060008183856123b991906134ad565b6123c391906134ad565b9050600060158190555060006014819055506000601681905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612423906138e8565b60006040518083038185875af1925050503d8060008114612460576040519150601f19603f3d011682016040523d82523d6000602084013e612465565b606091505b50508098505060008711801561247b5750600081115b156124c85761248a8782612b8a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826015546040516124bf939291906138fd565b60405180910390a15b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161250e906138e8565b60006040518083038185875af1925050503d806000811461254b576040519150601f19603f3d011682016040523d82523d6000602084013e612550565b606091505b50508098505042601a81905550505050505050505050505b6000601d60006101000a81548160ff021916908315150217905550565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126285750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561263557819050612989565b60006012544310156126c35760646062846126509190613247565b61265a91906132b8565b9050606260328261266b9190613247565b61267591906132b8565b6015600082825461268691906132e9565b92505081905550606260308261269c9190613247565b6126a691906132b8565b601460008282546126b791906132e9565b925050819055506128fb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561272057506000601154115b156127e0576103e8601154846127369190613247565b61274091906132b8565b9050601154600f54826127539190613247565b61275d91906132b8565b6015600082825461276e91906132e9565b92505081905550601154601054826127869190613247565b61279091906132b8565b601660008282546127a191906132e9565b92505081905550601154600e54826127b99190613247565b6127c391906132b8565b601460008282546127d491906132e9565b925050819055506128fa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561283d57506000600d54115b156128f9576103e8600d54846128539190613247565b61285d91906132b8565b9050600d54600b54826128709190613247565b61287a91906132b8565b6015600082825461288b91906132e9565b92505081905550600d54600c54826128a39190613247565b6128ad91906132b8565b601660008282546128be91906132e9565b92505081905550600d54600a54826128d69190613247565b6128e091906132b8565b601460008282546128f191906132e9565b925050819055505b5b5b60008111156129765761290f853083611c74565b503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161296d9190612c68565b60405180910390a35b808361298291906134ad565b9250829150505b9392505050565b6000600267ffffffffffffffff8111156129ad576129ac613934565b5b6040519080825280602002602001820160405280156129db5781602001602082028036833780820191505090505b50905030816000815181106129f3576129f2613963565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab091906139a7565b81600181518110612ac457612ac3613963565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b54959493929190613acd565b600060405180830381600087803b158015612b6e57600080fd5b505af1158015612b82573d6000803e3d6000fd5b505050505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612c0596959493929190613b27565b60606040518083038185885af1158015612c23573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c489190613b9d565b5050505050565b6000819050919050565b612c6281612c4f565b82525050565b6000602082019050612c7d6000830184612c59565b92915050565b600080fd5b612c9181612c4f565b8114612c9c57600080fd5b50565b600081359050612cae81612c88565b92915050565b600060208284031215612cca57612cc9612c83565b5b6000612cd884828501612c9f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d1b578082015181840152602081019050612d00565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d4382612ce1565b612d4d8185612cec565b9350612d5d818560208601612cfd565b612d6681612d27565b840191505092915050565b60006020820190508181036000830152612d8b8184612d38565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dbe82612d93565b9050919050565b612dce81612db3565b8114612dd957600080fd5b50565b600081359050612deb81612dc5565b92915050565b60008060408385031215612e0857612e07612c83565b5b6000612e1685828601612ddc565b9250506020612e2785828601612c9f565b9150509250929050565b60008115159050919050565b612e4681612e31565b82525050565b6000602082019050612e616000830184612e3d565b92915050565b600080600060608486031215612e8057612e7f612c83565b5b6000612e8e86828701612c9f565b9350506020612e9f86828701612c9f565b9250506040612eb086828701612c9f565b9150509250925092565b600080600060608486031215612ed357612ed2612c83565b5b6000612ee186828701612ddc565b9350506020612ef286828701612ddc565b9250506040612f0386828701612c9f565b9150509250925092565b600060208284031215612f2357612f22612c83565b5b6000612f3184828501612ddc565b91505092915050565b600060ff82169050919050565b612f5081612f3a565b82525050565b6000602082019050612f6b6000830184612f47565b92915050565b600080600060608486031215612f8a57612f89612c83565b5b6000612f9886828701612ddc565b9350506020612fa986828701612ddc565b9250506040612fba86828701612ddc565b9150509250925092565b612fcd81612db3565b82525050565b6000602082019050612fe86000830184612fc4565b92915050565b6000806040838503121561300557613004612c83565b5b600061301385828601612ddc565b925050602061302485828601612ddc565b9150509250929050565b61303781612e31565b811461304257600080fd5b50565b6000813590506130548161302e565b92915050565b6000806040838503121561307157613070612c83565b5b600061307f85828601613045565b925050602061309085828601612c9f565b9150509250929050565b60006130a582612d93565b9050919050565b6130b58161309a565b81146130c057600080fd5b50565b6000813590506130d2816130ac565b92915050565b6000602082840312156130ee576130ed612c83565b5b60006130fc848285016130c3565b91505092915050565b6000819050919050565b600061312a61312561312084612d93565b613105565b612d93565b9050919050565b600061313c8261310f565b9050919050565b600061314e82613131565b9050919050565b61315e81613143565b82525050565b60006020820190506131796000830184613155565b92915050565b60006020828403121561319557613194612c83565b5b60006131a384828501613045565b91505092915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b60006131e2600b83612cec565b91506131ed826131ac565b602082019050919050565b60006020820190508181036000830152613211816131d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061325282612c4f565b915061325d83612c4f565b925082820261326b81612c4f565b9150828204841483151761328257613281613218565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132c382612c4f565b91506132ce83612c4f565b9250826132de576132dd613289565b5b828204905092915050565b60006132f482612c4f565b91506132ff83612c4f565b925082820190508082111561331757613316613218565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613379602583612cec565b91506133848261331d565b604082019050919050565b600060208201905081810360008301526133a88161336c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061340b602383612cec565b9150613416826133af565b604082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b7f496e73756666696369656e7420416c6c6f77616e636500000000000000000000600082015250565b6000613477601683612cec565b915061348282613441565b602082019050919050565b600060208201905081810360008301526134a68161346a565b9050919050565b60006134b882612c4f565b91506134c383612c4f565b92508282039050818111156134db576134da613218565b5b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613517600683612cec565b9150613522826134e1565b602082019050919050565b600060208201905081810360008301526135468161350a565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156135a4578086048111156135805761357f613218565b5b600185161561358f5780820291505b808102905061359d8561354d565b9450613564565b94509492505050565b6000826135bd5760019050613679565b816135cb5760009050613679565b81600181146135e157600281146135eb5761361a565b6001915050613679565b60ff8411156135fd576135fc613218565b5b8360020a91508482111561361457613613613218565b5b50613679565b5060208310610133831016604e8410600b841016171561364f5782820a90508381111561364a57613649613218565b5b613679565b61365c848484600161355a565b9250905081840481111561367357613672613218565b5b81810290505b9392505050565b600061368b82612c4f565b915061369683612f3a565b92506136c37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135ad565b905092915050565b60006136d682613131565b9050919050565b6136e6816136cb565b82525050565b600060208201905061370160008301846136dd565b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b600061373d601483612cec565b915061374882613707565b602082019050919050565b6000602082019050818103600083015261376c81613730565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b60006137a9601483612cec565b91506137b482613773565b602082019050919050565b600060208201905081810360008301526137d88161379c565b9050919050565b7f4d6178207478206c696d69740000000000000000000000000000000000000000600082015250565b6000613815600c83612cec565b9150613820826137df565b602082019050919050565b6000602082019050818103600083015261384481613808565b9050919050565b7f4d61782077616c6c657400000000000000000000000000000000000000000000600082015250565b6000613881600a83612cec565b915061388c8261384b565b602082019050919050565b600060208201905081810360008301526138b081613874565b9050919050565b600081905092915050565b50565b60006138d26000836138b7565b91506138dd826138c2565b600082019050919050565b60006138f3826138c5565b9150819050919050565b60006060820190506139126000830186612c59565b61391f6020830185612c59565b61392c6040830184612c59565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506139a181612dc5565b92915050565b6000602082840312156139bd576139bc612c83565b5b60006139cb84828501613992565b91505092915050565b6000819050919050565b60006139f96139f46139ef846139d4565b613105565b612c4f565b9050919050565b613a09816139de565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a4481612db3565b82525050565b6000613a568383613a3b565b60208301905092915050565b6000602082019050919050565b6000613a7a82613a0f565b613a848185613a1a565b9350613a8f83613a2b565b8060005b83811015613ac0578151613aa78882613a4a565b9750613ab283613a62565b925050600181019050613a93565b5085935050505092915050565b600060a082019050613ae26000830188612c59565b613aef6020830187613a00565b8181036040830152613b018186613a6f565b9050613b106060830185612fc4565b613b1d6080830184612c59565b9695505050505050565b600060c082019050613b3c6000830189612fc4565b613b496020830188612c59565b613b566040830187613a00565b613b636060830186613a00565b613b706080830185612fc4565b613b7d60a0830184612c59565b979650505050505050565b600081519050613b9781612c88565b92915050565b600080600060608486031215613bb657613bb5612c83565b5b6000613bc486828701613b88565b9350506020613bd586828701613b88565b9250506040613be686828701613b88565b915050925092509256fea2646970667358221220713ea1dc178137ef23e278236b59f9d6ad31dd4d6194f76a55282370a64c8edc64736f6c63430008120033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c806375f0a87411610123578063c1f1b1b5116100ab578063f2fde38b1161006f578063f2fde38b146107e2578063f60b3d6d1461080b578063f887ea4014610822578063fe6236741461084d578063fe9fbb801461087657610225565b8063c1f1b1b5146106fd578063d469801614610728578063dd62ed3e14610753578063eb34104014610790578063f0b37c04146107b957610225565b80639d9241ec116100f25780639d9241ec14610616578063a8aa1b3114610641578063a9059cbb1461066c578063b6a5d7de146106a9578063c04a5414146106d257610225565b806375f0a8741461056a57806378109e54146105955780637d1db4a5146105c057806395d89b41146105eb57610225565b80632f54bf6e116101a65780635c85974f116101755780635c85974f146104875780635d0044ca146104b05780636ddd1713146104d957806370a082311461050457806375cb1bd11461054157610225565b80632f54bf6e146103b7578063313ce567146103f4578063571ac8b01461041f57806359b107b91461045c57610225565b80630d075d9c116101ed5780630d075d9c146102e65780630f683e901461030f57806318160ddd1461033857806323b872dd14610363578063293230b8146103a057610225565b80630445b6671461022a57806304fda8ff1461025557806306fdde031461027e578063095ea7b3146102a957610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108b3565b60405161024c9190612c68565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612cb4565b6108b9565b005b34801561028a57600080fd5b5061029361098a565b6040516102a09190612d71565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190612df1565b6109c7565b6040516102dd9190612e4c565b60405180910390f35b3480156102f257600080fd5b5061030d60048036038101906103089190612e67565b610ab9565b005b34801561031b57600080fd5b5061033660048036038101906103319190612e67565b610b5c565b005b34801561034457600080fd5b5061034d610bff565b60405161035a9190612c68565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190612eba565b610c09565b6040516103979190612e4c565b60405180910390f35b3480156103ac57600080fd5b506103b5610eda565b005b3480156103c357600080fd5b506103de60048036038101906103d99190612f0d565b610f8d565b6040516103eb9190612e4c565b60405180910390f35b34801561040057600080fd5b50610409610fe6565b6040516104169190612f56565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612f0d565b610fef565b6040516104539190612e4c565b60405180910390f35b34801561046857600080fd5b50610471611004565b60405161047e9190612c68565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190612cb4565b61100a565b005b3480156104bc57600080fd5b506104d760048036038101906104d29190612cb4565b611084565b005b3480156104e557600080fd5b506104ee6110fe565b6040516104fb9190612e4c565b60405180910390f35b34801561051057600080fd5b5061052b60048036038101906105269190612f0d565b611111565b6040516105389190612c68565b60405180910390f35b34801561054d57600080fd5b5061056860048036038101906105639190612f71565b61115a565b005b34801561057657600080fd5b5061057f61126a565b60405161058c9190612fd3565b60405180910390f35b3480156105a157600080fd5b506105aa611290565b6040516105b79190612c68565b60405180910390f35b3480156105cc57600080fd5b506105d5611296565b6040516105e29190612c68565b60405180910390f35b3480156105f757600080fd5b5061060061129c565b60405161060d9190612d71565b60405180910390f35b34801561062257600080fd5b5061062b6112d9565b6040516106389190612c68565b60405180910390f35b34801561064d57600080fd5b506106566112df565b6040516106639190612fd3565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e9190612df1565b611303565b6040516106a09190612e4c565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb9190612f0d565b61137e565b005b3480156106de57600080fd5b506106e7611420565b6040516106f49190612fd3565b60405180910390f35b34801561070957600080fd5b50610712611446565b60405161071f9190612fd3565b60405180910390f35b34801561073457600080fd5b5061073d61146e565b60405161074a9190612fd3565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190612fee565b611494565b6040516107879190612c68565b60405180910390f35b34801561079c57600080fd5b506107b760048036038101906107b2919061305a565b61151b565b005b3480156107c557600080fd5b506107e060048036038101906107db9190612f0d565b6115a0565b005b3480156107ee57600080fd5b50610809600480360381019061080491906130d8565b611643565b005b34801561081757600080fd5b5061082061175c565b005b34801561082e57600080fd5b506108376117c1565b6040516108449190613164565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f919061317f565b6117d9565b005b34801561088257600080fd5b5061089d60048036038101906108989190612f0d565b61183e565b6040516108aa9190612e4c565b60405180910390f35b601c5481565b6108c23361183e565b610901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f8906131f8565b60405180910390fd5b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846109509190613247565b61095a91906132b8565b9081150290604051600060405180830381858888f19350505050158015610985573d6000803e3d6000fd5b505050565b60606040518060400160405280600781526020017f5a4b506978656c00000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610aa79190612c68565b60405180910390a36001905092915050565b610ac23361183e565b610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af8906131f8565b60405180910390fd5b608c818385610b1091906132e9565b610b1a91906132e9565b1115610b2557600080fd5b82600a8190555081600b8190555080600c81905550808284610b4791906132e9565b610b5191906132e9565b600d81905550505050565b610b653361183e565b610ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9b906131f8565b60405180910390fd5b60c8818385610bb391906132e9565b610bbd91906132e9565b1115610bc857600080fd5b82600e8190555081600f8190555080601081905550808284610bea91906132e9565b610bf491906132e9565b601181905550505050565b6000600254905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c709061338f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdf90613421565b60405180910390fd5b600254600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ec6576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e289061348d565b60405180910390fd5b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ebd91906134ad565b92505081905550505b610ed1848484611894565b90509392505050565b610ee333610f8d565b610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f199061352d565b60405180910390fd5b60001515601960159054906101000a900460ff16151514610f4257600080fd5b6000601960146101000a81548160ff021916908315150217905550600143610f6a91906132e9565b6012819055506001601960156101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000610ffd826002546109c7565b9050919050565b600d5481565b6110133361183e565b611052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611049906131f8565b60405180910390fd5b600a81101561106057600080fd5b6103e8816002546110719190613247565b61107b91906132b8565b60038190555050565b61108d3361183e565b6110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c3906131f8565b60405180910390fd5b600a8110156110da57600080fd5b6103e8816002546110eb9190613247565b6110f591906132b8565b60048190555050565b601b60009054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111633361183e565b6111a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611199906131f8565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60035481565b60606040518060400160405280600381526020017f5a4b500000000000000000000000000000000000000000000000000000000000815250905090565b60115481565b7f00000000000000000000000056f421d29d3ca997cc32ef2e2adb15754dae380581565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361136a57611363338484611c74565b9050611378565b611375338484611894565b90505b92915050565b61138733610f8d565b6113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd9061352d565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f00000000000000000000000056f421d29d3ca997cc32ef2e2adb15754dae3805905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115243361183e565b611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a906131f8565b60405180910390fd5b81601b60006101000a81548160ff0219169083151502179055506012600a61158b9190613680565b816115969190613247565b601c819055505050565b6115a933610f8d565b6115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df9061352d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61164c33610f8d565b61168b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116829061352d565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161175191906136ec565b60405180910390a150565b6117653361183e565b6117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906131f8565b60405180910390fd5b6000601360016101000a81548160ff021916908315150217905550565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6117e23361183e565b611821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611818906131f8565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fb9061338f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a90613421565b60405180910390fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a145750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a685750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a7f5750601d60009054906101000a900460ff165b15611a9657611a8f848484611c74565b9050611c6d565b60001515601960149054906101000a900460ff16151514611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390613753565b60405180910390fd5b601360019054906101000a900460ff1615611b0d57611b0c848484611e89565b5b611b16836121c4565b15611b2457611b236122b3565b5b601360009054906101000a900460ff1615611bf7577f00000000000000000000000056f421d29d3ca997cc32ef2e2adb15754dae380573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611bde57507f00000000000000000000000056f421d29d3ca997cc32ef2e2adb15754dae380573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b611be85781611bf4565b611bf3848484612585565b5b91505b611c02848484611c74565b508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c609190612c68565b60405180910390a3600190505b9392505050565b600080600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf3906137bf565b60405180910390fd5b82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4791906134ad565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dd591906132e9565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e759190612c68565b60405180910390a360019150509392505050565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f2b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121bf577f00000000000000000000000056f421d29d3ca997cc32ef2e2adb15754dae380573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fd45750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120235760035481111561201e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120159061382b565b60405180910390fd5b612114565b7f00000000000000000000000056f421d29d3ca997cc32ef2e2adb15754dae380573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156120c85750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561211357600354811115612112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121099061382b565b60405180910390fd5b5b5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121be5760045461217183611111565b8261217c91906132e9565b11156121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b490613897565b60405180910390fd5b5b5b505050565b60007f00000000000000000000000056f421d29d3ca997cc32ef2e2adb15754dae380573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561222e5750426001601a5461222c91906132e9565b105b80156122475750601d60009054906101000a900460ff16155b801561225f5750601b60009054906101000a900460ff165b80156122ac5750601c54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b6001601d60006101000a81548160ff02191690831515021790555060006122d930611111565b905060006016546014546015546122f091906132e9565b6122fa91906132e9565b905060008083148061230c5750600082145b1561231957505050612568565b60006002836015548661232c9190613247565b61233691906132b8565b61234091906132b8565b90506000818561235091906134ad565b9050600047905061236082612990565b6000814761236e91906134ad565b9050600086601454836123819190613247565b61238b91906132b8565b90506000876016548461239e9190613247565b6123a891906132b8565b905060008183856123b991906134ad565b6123c391906134ad565b9050600060158190555060006014819055506000601681905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612423906138e8565b60006040518083038185875af1925050503d8060008114612460576040519150601f19603f3d011682016040523d82523d6000602084013e612465565b606091505b50508098505060008711801561247b5750600081115b156124c85761248a8782612b8a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826015546040516124bf939291906138fd565b60405180910390a15b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161250e906138e8565b60006040518083038185875af1925050503d806000811461254b576040519150601f19603f3d011682016040523d82523d6000602084013e612550565b606091505b50508098505042601a81905550505050505050505050505b6000601d60006101000a81548160ff021916908315150217905550565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126285750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561263557819050612989565b60006012544310156126c35760646062846126509190613247565b61265a91906132b8565b9050606260328261266b9190613247565b61267591906132b8565b6015600082825461268691906132e9565b92505081905550606260308261269c9190613247565b6126a691906132b8565b601460008282546126b791906132e9565b925050819055506128fb565b7f00000000000000000000000056f421d29d3ca997cc32ef2e2adb15754dae380573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561272057506000601154115b156127e0576103e8601154846127369190613247565b61274091906132b8565b9050601154600f54826127539190613247565b61275d91906132b8565b6015600082825461276e91906132e9565b92505081905550601154601054826127869190613247565b61279091906132b8565b601660008282546127a191906132e9565b92505081905550601154600e54826127b99190613247565b6127c391906132b8565b601460008282546127d491906132e9565b925050819055506128fa565b7f00000000000000000000000056f421d29d3ca997cc32ef2e2adb15754dae380573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561283d57506000600d54115b156128f9576103e8600d54846128539190613247565b61285d91906132b8565b9050600d54600b54826128709190613247565b61287a91906132b8565b6015600082825461288b91906132e9565b92505081905550600d54600c54826128a39190613247565b6128ad91906132b8565b601660008282546128be91906132e9565b92505081905550600d54600a54826128d69190613247565b6128e091906132b8565b601460008282546128f191906132e9565b925050819055505b5b5b60008111156129765761290f853083611c74565b503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161296d9190612c68565b60405180910390a35b808361298291906134ad565b9250829150505b9392505050565b6000600267ffffffffffffffff8111156129ad576129ac613934565b5b6040519080825280602002602001820160405280156129db5781602001602082028036833780820191505090505b50905030816000815181106129f3576129f2613963565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab091906139a7565b81600181518110612ac457612ac3613963565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b54959493929190613acd565b600060405180830381600087803b158015612b6e57600080fd5b505af1158015612b82573d6000803e3d6000fd5b505050505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612c0596959493929190613b27565b60606040518083038185885af1158015612c23573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c489190613b9d565b5050505050565b6000819050919050565b612c6281612c4f565b82525050565b6000602082019050612c7d6000830184612c59565b92915050565b600080fd5b612c9181612c4f565b8114612c9c57600080fd5b50565b600081359050612cae81612c88565b92915050565b600060208284031215612cca57612cc9612c83565b5b6000612cd884828501612c9f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d1b578082015181840152602081019050612d00565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d4382612ce1565b612d4d8185612cec565b9350612d5d818560208601612cfd565b612d6681612d27565b840191505092915050565b60006020820190508181036000830152612d8b8184612d38565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dbe82612d93565b9050919050565b612dce81612db3565b8114612dd957600080fd5b50565b600081359050612deb81612dc5565b92915050565b60008060408385031215612e0857612e07612c83565b5b6000612e1685828601612ddc565b9250506020612e2785828601612c9f565b9150509250929050565b60008115159050919050565b612e4681612e31565b82525050565b6000602082019050612e616000830184612e3d565b92915050565b600080600060608486031215612e8057612e7f612c83565b5b6000612e8e86828701612c9f565b9350506020612e9f86828701612c9f565b9250506040612eb086828701612c9f565b9150509250925092565b600080600060608486031215612ed357612ed2612c83565b5b6000612ee186828701612ddc565b9350506020612ef286828701612ddc565b9250506040612f0386828701612c9f565b9150509250925092565b600060208284031215612f2357612f22612c83565b5b6000612f3184828501612ddc565b91505092915050565b600060ff82169050919050565b612f5081612f3a565b82525050565b6000602082019050612f6b6000830184612f47565b92915050565b600080600060608486031215612f8a57612f89612c83565b5b6000612f9886828701612ddc565b9350506020612fa986828701612ddc565b9250506040612fba86828701612ddc565b9150509250925092565b612fcd81612db3565b82525050565b6000602082019050612fe86000830184612fc4565b92915050565b6000806040838503121561300557613004612c83565b5b600061301385828601612ddc565b925050602061302485828601612ddc565b9150509250929050565b61303781612e31565b811461304257600080fd5b50565b6000813590506130548161302e565b92915050565b6000806040838503121561307157613070612c83565b5b600061307f85828601613045565b925050602061309085828601612c9f565b9150509250929050565b60006130a582612d93565b9050919050565b6130b58161309a565b81146130c057600080fd5b50565b6000813590506130d2816130ac565b92915050565b6000602082840312156130ee576130ed612c83565b5b60006130fc848285016130c3565b91505092915050565b6000819050919050565b600061312a61312561312084612d93565b613105565b612d93565b9050919050565b600061313c8261310f565b9050919050565b600061314e82613131565b9050919050565b61315e81613143565b82525050565b60006020820190506131796000830184613155565b92915050565b60006020828403121561319557613194612c83565b5b60006131a384828501613045565b91505092915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b60006131e2600b83612cec565b91506131ed826131ac565b602082019050919050565b60006020820190508181036000830152613211816131d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061325282612c4f565b915061325d83612c4f565b925082820261326b81612c4f565b9150828204841483151761328257613281613218565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132c382612c4f565b91506132ce83612c4f565b9250826132de576132dd613289565b5b828204905092915050565b60006132f482612c4f565b91506132ff83612c4f565b925082820190508082111561331757613316613218565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613379602583612cec565b91506133848261331d565b604082019050919050565b600060208201905081810360008301526133a88161336c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061340b602383612cec565b9150613416826133af565b604082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b7f496e73756666696369656e7420416c6c6f77616e636500000000000000000000600082015250565b6000613477601683612cec565b915061348282613441565b602082019050919050565b600060208201905081810360008301526134a68161346a565b9050919050565b60006134b882612c4f565b91506134c383612c4f565b92508282039050818111156134db576134da613218565b5b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613517600683612cec565b9150613522826134e1565b602082019050919050565b600060208201905081810360008301526135468161350a565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156135a4578086048111156135805761357f613218565b5b600185161561358f5780820291505b808102905061359d8561354d565b9450613564565b94509492505050565b6000826135bd5760019050613679565b816135cb5760009050613679565b81600181146135e157600281146135eb5761361a565b6001915050613679565b60ff8411156135fd576135fc613218565b5b8360020a91508482111561361457613613613218565b5b50613679565b5060208310610133831016604e8410600b841016171561364f5782820a90508381111561364a57613649613218565b5b613679565b61365c848484600161355a565b9250905081840481111561367357613672613218565b5b81810290505b9392505050565b600061368b82612c4f565b915061369683612f3a565b92506136c37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135ad565b905092915050565b60006136d682613131565b9050919050565b6136e6816136cb565b82525050565b600060208201905061370160008301846136dd565b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b600061373d601483612cec565b915061374882613707565b602082019050919050565b6000602082019050818103600083015261376c81613730565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b60006137a9601483612cec565b91506137b482613773565b602082019050919050565b600060208201905081810360008301526137d88161379c565b9050919050565b7f4d6178207478206c696d69740000000000000000000000000000000000000000600082015250565b6000613815600c83612cec565b9150613820826137df565b602082019050919050565b6000602082019050818103600083015261384481613808565b9050919050565b7f4d61782077616c6c657400000000000000000000000000000000000000000000600082015250565b6000613881600a83612cec565b915061388c8261384b565b602082019050919050565b600060208201905081810360008301526138b081613874565b9050919050565b600081905092915050565b50565b60006138d26000836138b7565b91506138dd826138c2565b600082019050919050565b60006138f3826138c5565b9150819050919050565b60006060820190506139126000830186612c59565b61391f6020830185612c59565b61392c6040830184612c59565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506139a181612dc5565b92915050565b6000602082840312156139bd576139bc612c83565b5b60006139cb84828501613992565b91505092915050565b6000819050919050565b60006139f96139f46139ef846139d4565b613105565b612c4f565b9050919050565b613a09816139de565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a4481612db3565b82525050565b6000613a568383613a3b565b60208301905092915050565b6000602082019050919050565b6000613a7a82613a0f565b613a848185613a1a565b9350613a8f83613a2b565b8060005b83811015613ac0578151613aa78882613a4a565b9750613ab283613a62565b925050600181019050613a93565b5085935050505092915050565b600060a082019050613ae26000830188612c59565b613aef6020830187613a00565b8181036040830152613b018186613a6f565b9050613b106060830185612fc4565b613b1d6080830184612c59565b9695505050505050565b600060c082019050613b3c6000830189612fc4565b613b496020830188612c59565b613b566040830187613a00565b613b636060830186613a00565b613b706080830185612fc4565b613b7d60a0830184612c59565b979650505050505050565b600081519050613b9781612c88565b92915050565b600080600060608486031215613bb657613bb5612c83565b5b6000613bc486828701613b88565b9350506020613bd586828701613b88565b9250506040613be686828701613b88565b915050925092509256fea2646970667358221220713ea1dc178137ef23e278236b59f9d6ad31dd4d6194f76a55282370a64c8edc64736f6c63430008120033

Deployed Bytecode Sourcemap

2966:17322:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5874:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20095:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7792:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8457:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9392:389;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9869:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7522:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17938:648;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12523:222;;;;;;;;;;;;;:::i;:::-;;1758:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7616:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8681:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4722:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10966:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10668:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5837:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7878:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10315:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5521:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3906:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3838:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7702:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4924:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3307:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17630:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1551:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5558:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8128:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5484:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7989:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12812:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1653:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1984:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12134:75;;;;;;;;;;;;;:::i;:::-;;3185:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12343:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1869:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5874:55;;;;:::o;20095:188::-;1492:24;1505:10;1492:12;:24::i;:::-;1484:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20164:18:::1;20185:21;20164:42;;20225:15;;;;;;;;;;;20217:33;;:58;20271:3;20264:4;20251:10;:17;;;;:::i;:::-;:23;;;;:::i;:::-;20217:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20153:130;20095:188:::0;:::o;7792:80::-;7840:13;7864:5;;;;;;;;;;;;;;;;;7857:12;;7792:80;:::o;8457:216::-;8532:4;8584:6;8549:11;:23;8561:10;8549:23;;;;;;;;;;;;;;;:32;8573:7;8549:32;;;;;;;;;;;;;;;:41;;;;8627:7;8606:37;;8615:10;8606:37;;;8636:6;8606:37;;;;;;:::i;:::-;;;;;;;;8661:4;8654:11;;8457:216;;;;:::o;9392:389::-;1492:24;1505:10;1492:12;:24::i;:::-;1484:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9564:3:::1;9549:11;9533:13;9517;:29;;;;:::i;:::-;:43;;;;:::i;:::-;:50;;9509:59;;;::::0;::::1;;9608:13;9590:15;:31;;;;9650:13;9632:15;:31;;;;9694:11;9674:17;:31;;;;9762:11;9746:13;9730;:29;;;;:::i;:::-;:43;;;;:::i;:::-;9716:11;:57;;;;9392:389:::0;;;:::o;9869:394::-;1492:24;1505:10;1492:12;:24::i;:::-;1484:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10042:3:::1;10027:11;10011:13;9995;:29;;;;:::i;:::-;:43;;;;:::i;:::-;:50;;9987:59;;;::::0;::::1;;10087:13;10068:16;:32;;;;10130:13;10111:16;:32;;;;10175:11;10154:18;:32;;;;10244:11;10228:13;10212;:29;;;;:::i;:::-;:43;;;;:::i;:::-;10197:12;:58;;;;9869:394:::0;;;:::o;7522:88::-;7577:7;7595:12;;7588:19;;7522:88;:::o;17938:648::-;18038:4;18081:1;18063:20;;:6;:20;;;18055:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18165:1;18144:23;;:9;:23;;;18136:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18256:12;;18221:11;:19;18233:6;18221:19;;;;;;;;;;;;;;;:31;18241:10;18221:31;;;;;;;;;;;;;;;;:47;18218:303;;18326:20;18350:11;:19;18362:6;18350:19;;;;;;;;;;;;;;;:31;18370:10;18350:31;;;;;;;;;;;;;;;;18326:55;;18420:6;18404:12;:22;;18396:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;18503:6;18468:11;:19;18480:6;18468:19;;;;;;;;;;;;;;;:31;18488:10;18468:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;18269:252;18218:303;18538:40;18552:6;18560:9;18571:6;18538:13;:40::i;:::-;18531:47;;17938:648;;;;;:::o;12523:222::-;1402:19;1410:10;1402:7;:19::i;:::-;1394:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12597:5:::1;12585:17;;:8;;;;;;;;;;;:17;;;12577:26;;;::::0;::::1;;12627:5;12614:10;;:18;;;;;;;;;;;;;;;;;;12674:1;12659:12;:16;;;;:::i;:::-;12643:13;:32;;;;12733:4;12722:8;;:15;;;;;;;;;;;;;;;;;;12523:222::o:0;1758:103::-;1813:4;1848:5;;;;;;;;;;;1837:16;;:7;:16;;;1830:23;;1758:103;;;:::o;7616:80::-;7668:5;3539:2;7677:16;;7616:80;:::o;8681:117::-;8736:4;8760:30;8768:7;8777:12;;8760:7;:30::i;:::-;8753:37;;8681:117;;;:::o;4722:82::-;;;;:::o;10966:230::-;1492:24;1505:10;1492:12;:24::i;:::-;1484:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11053:2:::1;11042:7;:13;;11034:22;;;::::0;::::1;;3790:5;11166:7;11151:12;;:22;;;;:::i;:::-;11149:39;;;;:::i;:::-;11134:12;:54;;;;10966:230:::0;:::o;10668:235::-;1492:24;1505:10;1492:12;:24::i;:::-;1484:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10757:2:::1;10746:7;:13;;10738:22;;;::::0;::::1;;3790:5;10873:7;10858:12;;:22;;;;:::i;:::-;10856:39;;;;:::i;:::-;10838:15;:57;;;;10668:235:::0;:::o;5837:30::-;;;;;;;;;;;;;:::o;7878:105::-;7944:7;7962:9;:18;7972:7;7962:18;;;;;;;;;;;;;;;;7955:25;;7878:105;;;:::o;10315:259::-;1492:24;1505:10;1492:12;:24::i;:::-;1484:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10460:16:::1;10442:15;;:34;;;;;;;;;;;;;;;;;;10505:16;10487:15;;:34;;;;;;;;;;;;;;;;;;10552:14;10532:17;;:34;;;;;;;;;;;;;;;;;;10315:259:::0;;;:::o;5521:30::-;;;;;;;;;;;;;:::o;3906:64::-;;;;:::o;3838:60::-;;;;:::o;7702:84::-;7752:13;7776:7;;;;;;;;;;;;;;;;;7769:14;;7702:84;:::o;4924:86::-;;;;:::o;3307:29::-;;;:::o;17630:300::-;17710:4;17740:10;17731:19;;:5;;;;;;;;;;:19;;;17727:196;;17773:45;17788:10;17800:9;17811:6;17773:14;:45::i;:::-;17766:52;;;;17727:196;17867:44;17881:10;17893:9;17904:6;17867:13;:44::i;:::-;17860:51;;17630:300;;;;;:::o;1551:94::-;1402:19;1410:10;1402:7;:19::i;:::-;1394:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1633:4:::1;1611:14:::0;:19:::1;1626:3;1611:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;1551:94:::0;:::o;5558:32::-;;;;;;;;;;;;;:::o;8128:64::-;8170:7;8186:4;8179:11;;8128:64;:::o;5484:30::-;;;;;;;;;;;;;:::o;7989:133::-;8073:7;8091:11;:19;8103:6;8091:19;;;;;;;;;;;;;;;:28;8111:7;8091:28;;;;;;;;;;;;;;;;8084:35;;7989:133;;;;:::o;12812:184::-;1492:24;1505:10;1492:12;:24::i;:::-;1484:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12922:8:::1;12908:11;;:22;;;;;;;;;;;;;;;;;;3539:2;12971;:15;;;;:::i;:::-;12957:10;:30;;;;:::i;:::-;12941:13;:46;;;;12812:184:::0;;:::o;1653:97::-;1402:19;1410:10;1402:7;:19::i;:::-;1394:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1737:5:::1;1715:14;:19;1730:3;1715:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1653:97:::0;:::o;1984:173::-;1402:19;1410:10;1402:7;:19::i;:::-;1394:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2068:3:::1;2060:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;2104:4;2082:14:::0;:19:::1;2097:3;2082:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2124:25;2145:3;2124:25;;;;;;:::i;:::-;;;;;;;;1984:173:::0;:::o;12134:75::-;1492:24;1505:10;1492:12;:24::i;:::-;1484:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12196:5:::1;12187:6;;:14;;;;;;;;;;;;;;;;;;12134:75::o:0;3185:90::-;3232:42;3185:90;:::o;12343:98::-;1492:24;1505:10;1492:12;:24::i;:::-;1484:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12425:8:::1;12411:11;;:22;;;;;;;;;;;;;;;;;;12343:98:::0;:::o;1869:107::-;1925:4;1949:14;:19;1964:3;1949:19;;;;;;;;;;;;;;;;;;;;;;;;;1942:26;;1869:107;;;:::o;18596:1316::-;18688:4;18733:1;18715:20;;:6;:20;;;18707:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18817:1;18796:23;;:9;:23;;;18788:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18938:14;:22;18953:6;18938:22;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;18964:14;:25;18979:9;18964:25;;;;;;;;;;;;;;;;;;;;;;;;;18938:51;:76;;;;18993:13;:21;19007:6;18993:21;;;;;;;;;;;;;;;;;;;;;;;;;18938:76;:86;;;;19018:6;;;;;;;;;;;18938:86;18933:168;;;19048:41;19063:6;19071:9;19082:6;19048:14;:41::i;:::-;19041:48;;;;18933:168;19199:5;19185:19;;:10;;;;;;;;;;;:19;;;19177:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19327:6;;;;;;;;;;;19323:52;;;19335:38;19347:6;19355:9;19366:6;19335:11;:38::i;:::-;19323:52;19476:26;19492:9;19476:15;:26::i;:::-;19473:44;;;19505:10;:8;:10::i;:::-;19473:44;19594:11;;;;;;;;;;;19591:135;;;19645:4;19632:17;;:9;:17;;;:35;;;;19663:4;19653:14;;:6;:14;;;19632:35;19631:83;;19708:6;19631:83;;;19671:34;19679:6;19687:9;19698:6;19671:7;:34::i;:::-;19631:83;19622:92;;19591:135;19788:41;19803:6;19811:9;19822:6;19788:14;:41::i;:::-;;19864:9;19847:35;;19856:6;19847:35;;;19875:6;19847:35;;;;;;:::i;:::-;;;;;;;;19900:4;19893:11;;18596:1316;;;;;;:::o;8806:503::-;8899:4;8916:21;8940:9;:17;8950:6;8940:17;;;;;;;;;;;;;;;;8916:41;;9048:6;9031:13;:23;;9023:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9158:6;9138:9;:17;9148:6;9138:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9118:9;:17;9128:6;9118:17;;;;;;;;;;;;;;;:46;;;;9222:6;9199:9;:20;9209:9;9199:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;9176:9;:20;9186:9;9176:20;;;;;;;;;;;;;;;:52;;;;9261:9;9244:35;;9253:6;9244:35;;;9272:6;9244:35;;;;;;:::i;:::-;;;;;;;;9297:4;9290:11;;;8806:503;;;;;:::o;11208:856::-;11386:15;:23;11402:6;11386:23;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;;11413:15;:26;11429:9;11413:26;;;;;;;;;;;;;;;;;;;;;;;;;11386:53;11441:7;11382:67;11613:4;11603:14;;:6;:14;;;:45;;;;;11622:15;:26;11638:9;11622:26;;;;;;;;;;;;;;;;;;;;;;;;;11621:27;11603:45;11599:278;;;11685:12;;11675:6;:22;;11667:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11599:278;;;11767:4;11754:17;;:9;:17;;;:45;;;;;11776:15;:23;11792:6;11776:23;;;;;;;;;;;;;;;;;;;;;;;;;11775:24;11754:45;11751:126;;;11836:12;;11826:6;:22;;11818:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11751:126;11599:278;11929:15;:26;11945:9;11929:26;;;;;;;;;;;;;;;;;;;;;;;;;11924:131;;12013:15;;11989:20;11999:9;11989;:20::i;:::-;11980:6;:29;;;;:::i;:::-;:48;;11972:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11924:131;11208:856;;;;:::o;13057:306::-;13124:4;13161;13148:17;;:9;:17;;;:80;;;;;13213:15;13209:1;13194:12;;:16;;;;:::i;:::-;:34;13148:80;:129;;;;;13271:6;;;;;;;;;;;13270:7;13148:129;:153;;;;;13290:11;;;;;;;;;;;13148:153;:207;;;;;13342:13;;13314:9;:24;13332:4;13314:24;;;;;;;;;;;;;;;;:41;;13148:207;13141:214;;13057:306;;;:::o;15912:1710::-;6235:4;6226:6;;:13;;;;;;;;;;;;;;;;;;15961:23:::1;15987:24;16005:4;15987:9;:24::i;:::-;15961:50;;16022:25;16092:12;;16071:18;;16050;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;16022:82;;16115:12;16163:1:::0;16144:15:::1;:20;:46;;;;16189:1;16168:17;:22;16144:46;16140:61;;;16193:7;;;;;16140:61;16264:23;16351:1;16331:17;16309:18;;16291:15;:36;;;;:::i;:::-;16290:58;;;;:::i;:::-;:62;;;;:::i;:::-;16264:88;;16363:26;16410:15;16392;:33;;;;:::i;:::-;16363:62;;16438:25;16466:21;16438:49;;16536:36;16553:18;16536:16;:36::i;:::-;16585:18;16630:17;16606:21;:41;;;;:::i;:::-;16585:62;;16658:23;16720:17;16698:18;;16685:10;:31;;;;:::i;:::-;16684:53;;;;:::i;:::-;16658:79;;16748:17;16810;16788:12;;16775:10;:25;;;;:::i;:::-;16774:53;;;;:::i;:::-;16748:79;;16838:23;16895:9;16877:15;16864:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;16838:66;;16973:1;16952:18;:22;;;;17006:1;16985:18;:22;;;;17033:1;17018:12;:16;;;;17095:17;;;;;;;;;;;17087:31;;17126:9;17087:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17073:67;;;;;17200:1;17182:15;:19;:42;;;;;17223:1;17205:15;:19;17182:42;17178:212;;;17241:46;17254:15;17271;17241:12;:46::i;:::-;17307:71;17322:18;17342:15;17359:18;;17307:71;;;;;;;;:::i;:::-;;;;;;;;17178:212;17516:15;;;;;;;;;;;17508:29;;17545:21;17508:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17494:77;;;;;17599:15;17584:12;:30;;;;15950:1672;;;;;;;;;;6241:1;6253:5:::0;6244:6;;:14;;;;;;;;;;;;;;;;;;15912:1710::o;13371:1609::-;13448:7;13543:11;:17;13555:4;13543:17;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;13564:11;:15;13576:2;13564:15;;;;;;;;;;;;;;;;;;;;;;;;;13543:36;13539:82;;;13603:6;13596:13;;;;13539:82;13694:12;13761:13;;13746:12;:28;13742:952;;;13812:3;13807:2;13798:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;13791:24;;13877:2;13871;13864:4;:9;;;;:::i;:::-;13863:16;;;;:::i;:::-;13841:18;;:38;;;;;;;:::i;:::-;;;;;;;;13930:2;13924;13917:4;:9;;;;:::i;:::-;13916:16;;;;:::i;:::-;13894:18;;:38;;;;;;;:::i;:::-;;;;;;;;13742:952;;;13991:4;13985:10;;:2;:10;;;:30;;;;;14014:1;13999:12;;:16;13985:30;13981:713;;;3790:5;14048:12;;14039:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;14032:41;;14140:12;;14118:16;;14111:4;:23;;;;:::i;:::-;14110:42;;;;:::i;:::-;14088:18;;:64;;;;;;;:::i;:::-;;;;;;;;14219:12;;14197:18;;14190:4;:25;;;;:::i;:::-;14189:42;;;;:::i;:::-;14167:12;;:64;;;;;;;:::i;:::-;;;;;;;;14298:12;;14276:16;;14269:4;:23;;;;:::i;:::-;14268:42;;;;:::i;:::-;14246:18;;:64;;;;;;;:::i;:::-;;;;;;;;13981:713;;;14370:4;14362:12;;:4;:12;;;:31;;;;;14392:1;14378:11;;:15;14362:31;14358:336;;;3790:5;14426:11;;14417:6;:20;;;;:::i;:::-;:33;;;;:::i;:::-;14410:40;;14516:11;;14495:15;;14488:4;:22;;;;:::i;:::-;14487:40;;;;:::i;:::-;14465:18;;:62;;;;;;;:::i;:::-;;;;;;;;14594:11;;14573:17;;14566:4;:24;;;;:::i;:::-;14565:40;;;;:::i;:::-;14543:12;;:62;;;;;;;:::i;:::-;;;;;;;;14671:11;;14650:15;;14643:4;:22;;;;:::i;:::-;14642:40;;;;:::i;:::-;14620:18;;:62;;;;;;;:::i;:::-;;;;;;;;14358:336;13981:713;13742:952;14777:1;14770:4;:8;14766:137;;;14795:41;14810:4;14824;14831;14795:14;:41::i;:::-;;14879:4;14856:35;;14865:4;14856:35;;;14886:4;14856:35;;;;;;:::i;:::-;;;;;;;;14766:137;14968:4;14958:14;;;;;:::i;:::-;;;;14951:21;;;13371:1609;;;;;;:::o;14994:445::-;15096:21;15134:1;15120:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15096:40;;15165:4;15147;15152:1;15147:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;3232:42;15191:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15181:4;15186:1;15181:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;3232:42;15243:57;;;15315:11;15341:1;15358:4;15385;15405:15;15243:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15049:390;14994:445;:::o;15447:457::-;3232:42;15697:22;;;15727:9;15760:4;15780:11;15806:1;15823;15840:15;;;;;;;;;;;15870;15697:199;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15447:457;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:99::-;1429:6;1463:5;1457:12;1447:22;;1377:99;;;:::o;1482:169::-;1566:11;1600:6;1595:3;1588:19;1640:4;1635:3;1631:14;1616:29;;1482:169;;;;:::o;1657:246::-;1738:1;1748:113;1762:6;1759:1;1756:13;1748:113;;;1847:1;1842:3;1838:11;1832:18;1828:1;1823:3;1819:11;1812:39;1784:2;1781:1;1777:10;1772:15;;1748:113;;;1895:1;1886:6;1881:3;1877:16;1870:27;1719:184;1657:246;;;:::o;1909:102::-;1950:6;2001:2;1997:7;1992:2;1985:5;1981:14;1977:28;1967:38;;1909:102;;;:::o;2017:377::-;2105:3;2133:39;2166:5;2133:39;:::i;:::-;2188:71;2252:6;2247:3;2188:71;:::i;:::-;2181:78;;2268:65;2326:6;2321:3;2314:4;2307:5;2303:16;2268:65;:::i;:::-;2358:29;2380:6;2358:29;:::i;:::-;2353:3;2349:39;2342:46;;2109:285;2017:377;;;;:::o;2400:313::-;2513:4;2551:2;2540:9;2536:18;2528:26;;2600:9;2594:4;2590:20;2586:1;2575:9;2571:17;2564:47;2628:78;2701:4;2692:6;2628:78;:::i;:::-;2620:86;;2400:313;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:::-;4835:6;4843;4851;4900:2;4888:9;4879:7;4875:23;4871:32;4868:119;;;4906:79;;:::i;:::-;4868:119;5026:1;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4997:117;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;5281:2;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5252:118;4758:619;;;;;:::o;5383:329::-;5442:6;5491:2;5479:9;5470:7;5466:23;5462:32;5459:119;;;5497:79;;:::i;:::-;5459:119;5617:1;5642:53;5687:7;5678:6;5667:9;5663:22;5642:53;:::i;:::-;5632:63;;5588:117;5383:329;;;;:::o;5718:86::-;5753:7;5793:4;5786:5;5782:16;5771:27;;5718:86;;;:::o;5810:112::-;5893:22;5909:5;5893:22;:::i;:::-;5888:3;5881:35;5810:112;;:::o;5928:214::-;6017:4;6055:2;6044:9;6040:18;6032:26;;6068:67;6132:1;6121:9;6117:17;6108:6;6068:67;:::i;:::-;5928:214;;;;:::o;6148:619::-;6225:6;6233;6241;6290:2;6278:9;6269:7;6265:23;6261:32;6258:119;;;6296:79;;:::i;:::-;6258:119;6416:1;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;:::i;:::-;6431:63;;6387:117;6543:2;6569:53;6614:7;6605:6;6594:9;6590:22;6569:53;:::i;:::-;6559:63;;6514:118;6671:2;6697:53;6742:7;6733:6;6722:9;6718:22;6697:53;:::i;:::-;6687:63;;6642:118;6148:619;;;;;:::o;6773:118::-;6860:24;6878:5;6860:24;:::i;:::-;6855:3;6848:37;6773:118;;:::o;6897:222::-;6990:4;7028:2;7017:9;7013:18;7005:26;;7041:71;7109:1;7098:9;7094:17;7085:6;7041:71;:::i;:::-;6897:222;;;;:::o;7125:474::-;7193:6;7201;7250:2;7238:9;7229:7;7225:23;7221:32;7218:119;;;7256:79;;:::i;:::-;7218:119;7376:1;7401:53;7446:7;7437:6;7426:9;7422:22;7401:53;:::i;:::-;7391:63;;7347:117;7503:2;7529:53;7574:7;7565:6;7554:9;7550:22;7529:53;:::i;:::-;7519:63;;7474:118;7125:474;;;;;:::o;7605:116::-;7675:21;7690:5;7675:21;:::i;:::-;7668:5;7665:32;7655:60;;7711:1;7708;7701:12;7655:60;7605:116;:::o;7727:133::-;7770:5;7808:6;7795:20;7786:29;;7824:30;7848:5;7824:30;:::i;:::-;7727:133;;;;:::o;7866:468::-;7931:6;7939;7988:2;7976:9;7967:7;7963:23;7959:32;7956:119;;;7994:79;;:::i;:::-;7956:119;8114:1;8139:50;8181:7;8172:6;8161:9;8157:22;8139:50;:::i;:::-;8129:60;;8085:114;8238:2;8264:53;8309:7;8300:6;8289:9;8285:22;8264:53;:::i;:::-;8254:63;;8209:118;7866:468;;;;;:::o;8340:104::-;8385:7;8414:24;8432:5;8414:24;:::i;:::-;8403:35;;8340:104;;;:::o;8450:138::-;8531:32;8557:5;8531:32;:::i;:::-;8524:5;8521:43;8511:71;;8578:1;8575;8568:12;8511:71;8450:138;:::o;8594:155::-;8648:5;8686:6;8673:20;8664:29;;8702:41;8737:5;8702:41;:::i;:::-;8594:155;;;;:::o;8755:345::-;8822:6;8871:2;8859:9;8850:7;8846:23;8842:32;8839:119;;;8877:79;;:::i;:::-;8839:119;8997:1;9022:61;9075:7;9066:6;9055:9;9051:22;9022:61;:::i;:::-;9012:71;;8968:125;8755:345;;;;:::o;9106:60::-;9134:3;9155:5;9148:12;;9106:60;;;:::o;9172:142::-;9222:9;9255:53;9273:34;9282:24;9300:5;9282:24;:::i;:::-;9273:34;:::i;:::-;9255:53;:::i;:::-;9242:66;;9172:142;;;:::o;9320:126::-;9370:9;9403:37;9434:5;9403:37;:::i;:::-;9390:50;;9320:126;;;:::o;9452:144::-;9520:9;9553:37;9584:5;9553:37;:::i;:::-;9540:50;;9452:144;;;:::o;9602:167::-;9707:55;9756:5;9707:55;:::i;:::-;9702:3;9695:68;9602:167;;:::o;9775:258::-;9886:4;9924:2;9913:9;9909:18;9901:26;;9937:89;10023:1;10012:9;10008:17;9999:6;9937:89;:::i;:::-;9775:258;;;;:::o;10039:323::-;10095:6;10144:2;10132:9;10123:7;10119:23;10115:32;10112:119;;;10150:79;;:::i;:::-;10112:119;10270:1;10295:50;10337:7;10328:6;10317:9;10313:22;10295:50;:::i;:::-;10285:60;;10241:114;10039:323;;;;:::o;10368:161::-;10508:13;10504:1;10496:6;10492:14;10485:37;10368:161;:::o;10535:366::-;10677:3;10698:67;10762:2;10757:3;10698:67;:::i;:::-;10691:74;;10774:93;10863:3;10774:93;:::i;:::-;10892:2;10887:3;10883:12;10876:19;;10535:366;;;:::o;10907:419::-;11073:4;11111:2;11100:9;11096:18;11088:26;;11160:9;11154:4;11150:20;11146:1;11135:9;11131:17;11124:47;11188:131;11314:4;11188:131;:::i;:::-;11180:139;;10907:419;;;:::o;11332:180::-;11380:77;11377:1;11370:88;11477:4;11474:1;11467:15;11501:4;11498:1;11491:15;11518:410;11558:7;11581:20;11599:1;11581:20;:::i;:::-;11576:25;;11615:20;11633:1;11615:20;:::i;:::-;11610:25;;11670:1;11667;11663:9;11692:30;11710:11;11692:30;:::i;:::-;11681:41;;11871:1;11862:7;11858:15;11855:1;11852:22;11832:1;11825:9;11805:83;11782:139;;11901:18;;:::i;:::-;11782:139;11566:362;11518:410;;;;:::o;11934:180::-;11982:77;11979:1;11972:88;12079:4;12076:1;12069:15;12103:4;12100:1;12093:15;12120:185;12160:1;12177:20;12195:1;12177:20;:::i;:::-;12172:25;;12211:20;12229:1;12211:20;:::i;:::-;12206:25;;12250:1;12240:35;;12255:18;;:::i;:::-;12240:35;12297:1;12294;12290:9;12285:14;;12120:185;;;;:::o;12311:191::-;12351:3;12370:20;12388:1;12370:20;:::i;:::-;12365:25;;12404:20;12422:1;12404:20;:::i;:::-;12399:25;;12447:1;12444;12440:9;12433:16;;12468:3;12465:1;12462:10;12459:36;;;12475:18;;:::i;:::-;12459:36;12311:191;;;;:::o;12508:224::-;12648:34;12644:1;12636:6;12632:14;12625:58;12717:7;12712:2;12704:6;12700:15;12693:32;12508:224;:::o;12738:366::-;12880:3;12901:67;12965:2;12960:3;12901:67;:::i;:::-;12894:74;;12977:93;13066:3;12977:93;:::i;:::-;13095:2;13090:3;13086:12;13079:19;;12738:366;;;:::o;13110:419::-;13276:4;13314:2;13303:9;13299:18;13291:26;;13363:9;13357:4;13353:20;13349:1;13338:9;13334:17;13327:47;13391:131;13517:4;13391:131;:::i;:::-;13383:139;;13110:419;;;:::o;13535:222::-;13675:34;13671:1;13663:6;13659:14;13652:58;13744:5;13739:2;13731:6;13727:15;13720:30;13535:222;:::o;13763:366::-;13905:3;13926:67;13990:2;13985:3;13926:67;:::i;:::-;13919:74;;14002:93;14091:3;14002:93;:::i;:::-;14120:2;14115:3;14111:12;14104:19;;13763:366;;;:::o;14135:419::-;14301:4;14339:2;14328:9;14324:18;14316:26;;14388:9;14382:4;14378:20;14374:1;14363:9;14359:17;14352:47;14416:131;14542:4;14416:131;:::i;:::-;14408:139;;14135:419;;;:::o;14560:172::-;14700:24;14696:1;14688:6;14684:14;14677:48;14560:172;:::o;14738:366::-;14880:3;14901:67;14965:2;14960:3;14901:67;:::i;:::-;14894:74;;14977:93;15066:3;14977:93;:::i;:::-;15095:2;15090:3;15086:12;15079:19;;14738:366;;;:::o;15110:419::-;15276:4;15314:2;15303:9;15299:18;15291:26;;15363:9;15357:4;15353:20;15349:1;15338:9;15334:17;15327:47;15391:131;15517:4;15391:131;:::i;:::-;15383:139;;15110:419;;;:::o;15535:194::-;15575:4;15595:20;15613:1;15595:20;:::i;:::-;15590:25;;15629:20;15647:1;15629:20;:::i;:::-;15624:25;;15673:1;15670;15666:9;15658:17;;15697:1;15691:4;15688:11;15685:37;;;15702:18;;:::i;:::-;15685:37;15535:194;;;;:::o;15735:156::-;15875:8;15871:1;15863:6;15859:14;15852:32;15735:156;:::o;15897:365::-;16039:3;16060:66;16124:1;16119:3;16060:66;:::i;:::-;16053:73;;16135:93;16224:3;16135:93;:::i;:::-;16253:2;16248:3;16244:12;16237:19;;15897:365;;;:::o;16268:419::-;16434:4;16472:2;16461:9;16457:18;16449:26;;16521:9;16515:4;16511:20;16507:1;16496:9;16492:17;16485:47;16549:131;16675:4;16549:131;:::i;:::-;16541:139;;16268:419;;;:::o;16693:102::-;16735:8;16782:5;16779:1;16775:13;16754:34;;16693:102;;;:::o;16801:848::-;16862:5;16869:4;16893:6;16884:15;;16917:5;16908:14;;16931:712;16952:1;16942:8;16939:15;16931:712;;;17047:4;17042:3;17038:14;17032:4;17029:24;17026:50;;;17056:18;;:::i;:::-;17026:50;17106:1;17096:8;17092:16;17089:451;;;17521:4;17514:5;17510:16;17501:25;;17089:451;17571:4;17565;17561:15;17553:23;;17601:32;17624:8;17601:32;:::i;:::-;17589:44;;16931:712;;;16801:848;;;;;;;:::o;17655:1073::-;17709:5;17900:8;17890:40;;17921:1;17912:10;;17923:5;;17890:40;17949:4;17939:36;;17966:1;17957:10;;17968:5;;17939:36;18035:4;18083:1;18078:27;;;;18119:1;18114:191;;;;18028:277;;18078:27;18096:1;18087:10;;18098:5;;;18114:191;18159:3;18149:8;18146:17;18143:43;;;18166:18;;:::i;:::-;18143:43;18215:8;18212:1;18208:16;18199:25;;18250:3;18243:5;18240:14;18237:40;;;18257:18;;:::i;:::-;18237:40;18290:5;;;18028:277;;18414:2;18404:8;18401:16;18395:3;18389:4;18386:13;18382:36;18364:2;18354:8;18351:16;18346:2;18340:4;18337:12;18333:35;18317:111;18314:246;;;18470:8;18464:4;18460:19;18451:28;;18505:3;18498:5;18495:14;18492:40;;;18512:18;;:::i;:::-;18492:40;18545:5;;18314:246;18585:42;18623:3;18613:8;18607:4;18604:1;18585:42;:::i;:::-;18570:57;;;;18659:4;18654:3;18650:14;18643:5;18640:25;18637:51;;;18668:18;;:::i;:::-;18637:51;18717:4;18710:5;18706:16;18697:25;;17655:1073;;;;;;:::o;18734:281::-;18792:5;18816:23;18834:4;18816:23;:::i;:::-;18808:31;;18860:25;18876:8;18860:25;:::i;:::-;18848:37;;18904:104;18941:66;18931:8;18925:4;18904:104;:::i;:::-;18895:113;;18734:281;;;;:::o;19021:134::-;19079:9;19112:37;19143:5;19112:37;:::i;:::-;19099:50;;19021:134;;;:::o;19161:147::-;19256:45;19295:5;19256:45;:::i;:::-;19251:3;19244:58;19161:147;;:::o;19314:238::-;19415:4;19453:2;19442:9;19438:18;19430:26;;19466:79;19542:1;19531:9;19527:17;19518:6;19466:79;:::i;:::-;19314:238;;;;:::o;19558:170::-;19698:22;19694:1;19686:6;19682:14;19675:46;19558:170;:::o;19734:366::-;19876:3;19897:67;19961:2;19956:3;19897:67;:::i;:::-;19890:74;;19973:93;20062:3;19973:93;:::i;:::-;20091:2;20086:3;20082:12;20075:19;;19734:366;;;:::o;20106:419::-;20272:4;20310:2;20299:9;20295:18;20287:26;;20359:9;20353:4;20349:20;20345:1;20334:9;20330:17;20323:47;20387:131;20513:4;20387:131;:::i;:::-;20379:139;;20106:419;;;:::o;20531:170::-;20671:22;20667:1;20659:6;20655:14;20648:46;20531:170;:::o;20707:366::-;20849:3;20870:67;20934:2;20929:3;20870:67;:::i;:::-;20863:74;;20946:93;21035:3;20946:93;:::i;:::-;21064:2;21059:3;21055:12;21048:19;;20707:366;;;:::o;21079:419::-;21245:4;21283:2;21272:9;21268:18;21260:26;;21332:9;21326:4;21322:20;21318:1;21307:9;21303:17;21296:47;21360:131;21486:4;21360:131;:::i;:::-;21352:139;;21079:419;;;:::o;21504:162::-;21644:14;21640:1;21632:6;21628:14;21621:38;21504:162;:::o;21672:366::-;21814:3;21835:67;21899:2;21894:3;21835:67;:::i;:::-;21828:74;;21911:93;22000:3;21911:93;:::i;:::-;22029:2;22024:3;22020:12;22013:19;;21672:366;;;:::o;22044:419::-;22210:4;22248:2;22237:9;22233:18;22225:26;;22297:9;22291:4;22287:20;22283:1;22272:9;22268:17;22261:47;22325:131;22451:4;22325:131;:::i;:::-;22317:139;;22044:419;;;:::o;22469:160::-;22609:12;22605:1;22597:6;22593:14;22586:36;22469:160;:::o;22635:366::-;22777:3;22798:67;22862:2;22857:3;22798:67;:::i;:::-;22791:74;;22874:93;22963:3;22874:93;:::i;:::-;22992:2;22987:3;22983:12;22976:19;;22635:366;;;:::o;23007:419::-;23173:4;23211:2;23200:9;23196:18;23188:26;;23260:9;23254:4;23250:20;23246:1;23235:9;23231:17;23224:47;23288:131;23414:4;23288:131;:::i;:::-;23280:139;;23007:419;;;:::o;23432:147::-;23533:11;23570:3;23555:18;;23432:147;;;;:::o;23585:114::-;;:::o;23705:398::-;23864:3;23885:83;23966:1;23961:3;23885:83;:::i;:::-;23878:90;;23977:93;24066:3;23977:93;:::i;:::-;24095:1;24090:3;24086:11;24079:18;;23705:398;;;:::o;24109:379::-;24293:3;24315:147;24458:3;24315:147;:::i;:::-;24308:154;;24479:3;24472:10;;24109:379;;;:::o;24494:442::-;24643:4;24681:2;24670:9;24666:18;24658:26;;24694:71;24762:1;24751:9;24747:17;24738:6;24694:71;:::i;:::-;24775:72;24843:2;24832:9;24828:18;24819:6;24775:72;:::i;:::-;24857;24925:2;24914:9;24910:18;24901:6;24857:72;:::i;:::-;24494:442;;;;;;:::o;24942:180::-;24990:77;24987:1;24980:88;25087:4;25084:1;25077:15;25111:4;25108:1;25101:15;25128:180;25176:77;25173:1;25166:88;25273:4;25270:1;25263:15;25297:4;25294:1;25287:15;25314:143;25371:5;25402:6;25396:13;25387:22;;25418:33;25445:5;25418:33;:::i;:::-;25314:143;;;;:::o;25463:351::-;25533:6;25582:2;25570:9;25561:7;25557:23;25553:32;25550:119;;;25588:79;;:::i;:::-;25550:119;25708:1;25733:64;25789:7;25780:6;25769:9;25765:22;25733:64;:::i;:::-;25723:74;;25679:128;25463:351;;;;:::o;25820:85::-;25865:7;25894:5;25883:16;;25820:85;;;:::o;25911:158::-;25969:9;26002:61;26020:42;26029:32;26055:5;26029:32;:::i;:::-;26020:42;:::i;:::-;26002:61;:::i;:::-;25989:74;;25911:158;;;:::o;26075:147::-;26170:45;26209:5;26170:45;:::i;:::-;26165:3;26158:58;26075:147;;:::o;26228:114::-;26295:6;26329:5;26323:12;26313:22;;26228:114;;;:::o;26348:184::-;26447:11;26481:6;26476:3;26469:19;26521:4;26516:3;26512:14;26497:29;;26348:184;;;;:::o;26538:132::-;26605:4;26628:3;26620:11;;26658:4;26653:3;26649:14;26641:22;;26538:132;;;:::o;26676:108::-;26753:24;26771:5;26753:24;:::i;:::-;26748:3;26741:37;26676:108;;:::o;26790:179::-;26859:10;26880:46;26922:3;26914:6;26880:46;:::i;:::-;26958:4;26953:3;26949:14;26935:28;;26790:179;;;;:::o;26975:113::-;27045:4;27077;27072:3;27068:14;27060:22;;26975:113;;;:::o;27124:732::-;27243:3;27272:54;27320:5;27272:54;:::i;:::-;27342:86;27421:6;27416:3;27342:86;:::i;:::-;27335:93;;27452:56;27502:5;27452:56;:::i;:::-;27531:7;27562:1;27547:284;27572:6;27569:1;27566:13;27547:284;;;27648:6;27642:13;27675:63;27734:3;27719:13;27675:63;:::i;:::-;27668:70;;27761:60;27814:6;27761:60;:::i;:::-;27751:70;;27607:224;27594:1;27591;27587:9;27582:14;;27547:284;;;27551:14;27847:3;27840:10;;27248:608;;;27124:732;;;;:::o;27862:831::-;28125:4;28163:3;28152:9;28148:19;28140:27;;28177:71;28245:1;28234:9;28230:17;28221:6;28177:71;:::i;:::-;28258:80;28334:2;28323:9;28319:18;28310:6;28258:80;:::i;:::-;28385:9;28379:4;28375:20;28370:2;28359:9;28355:18;28348:48;28413:108;28516:4;28507:6;28413:108;:::i;:::-;28405:116;;28531:72;28599:2;28588:9;28584:18;28575:6;28531:72;:::i;:::-;28613:73;28681:3;28670:9;28666:19;28657:6;28613:73;:::i;:::-;27862:831;;;;;;;;:::o;28699:807::-;28948:4;28986:3;28975:9;28971:19;28963:27;;29000:71;29068:1;29057:9;29053:17;29044:6;29000:71;:::i;:::-;29081:72;29149:2;29138:9;29134:18;29125:6;29081:72;:::i;:::-;29163:80;29239:2;29228:9;29224:18;29215:6;29163:80;:::i;:::-;29253;29329:2;29318:9;29314:18;29305:6;29253:80;:::i;:::-;29343:73;29411:3;29400:9;29396:19;29387:6;29343:73;:::i;:::-;29426;29494:3;29483:9;29479:19;29470:6;29426:73;:::i;:::-;28699:807;;;;;;;;;:::o;29512:143::-;29569:5;29600:6;29594:13;29585:22;;29616:33;29643:5;29616:33;:::i;:::-;29512:143;;;;:::o;29661:663::-;29749:6;29757;29765;29814:2;29802:9;29793:7;29789:23;29785:32;29782:119;;;29820:79;;:::i;:::-;29782:119;29940:1;29965:64;30021:7;30012:6;30001:9;29997:22;29965:64;:::i;:::-;29955:74;;29911:128;30078:2;30104:64;30160:7;30151:6;30140:9;30136:22;30104:64;:::i;:::-;30094:74;;30049:129;30217:2;30243:64;30299:7;30290:6;30279:9;30275:22;30243:64;:::i;:::-;30233:74;;30188:129;29661:663;;;;;:::o

Swarm Source

ipfs://713ea1dc178137ef23e278236b59f9d6ad31dd4d6194f76a55282370a64c8edc
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.