Contract Address Details

0x8AdEb840dFe5AA2D630F43b9BA24b5a4b3b1B6d7

Token
TheDogeWorld (TDW)
Creator
0xe25079–6cba17 at 0xb8b5c7–d24c1c
Balance
91.0498203649543054 Doge
Tokens
Fetching tokens...
Transactions
797 Transactions
Transfers
2,601 Transfers
Gas Used
35,124,628
Last Balance Update
26838368
Contract name:
TDW




Optimization enabled
false
Compiler version
v0.8.9+commit.e5eed63a




EVM Version
default




Verified at
2022-08-16T19:57:35.253185Z

Contract source code

/**

Telegram : https://t.me/the_doge_world_portal
Twitter  : https://twitter.com/thedogeworld_io
Website  : https://thedogeworld.io

*/
 
//
 
// SPDX-License-Identifier: MIT
 
pragma solidity ^0.8.6;
 
/**
 * DOGE20 standard interface
 */
 
interface IDOGE20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
abstract contract Ownable {
    address internal owner;
    address private _previousOwner;
    uint256 private _lockTime;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor(address _owner) {
        owner =_owner;
    }
 
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
 
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
 
    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
 
    function Ownershiplock(uint256 time) public virtual onlyOwner {
        _previousOwner = owner;
        owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(owner, address(0));
    }
 
    function Ownershipunlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked");
        emit OwnershipTransferred(owner, _previousOwner);
        owner = _previousOwner;
    }
}
 
/**
 * Router Interfaces
 */
 
interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IDEXRouter {
    function factory() external pure returns (address);
    function WWDOGE() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
 
    function addLiquidityWDOGE(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountWDOGE, uint liquidity);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
 
    function swapExactWDOGEForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
 
    function swapExactTokensForWDOGESupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
/**
 * Contract Code
 */
 
contract TDW is IDOGE20, Ownable {
 
    address WDOGE = 0xB7ddC6414bf4F5515b52D8BdD69973Ae205ff101;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
 
    string constant _name = "TheDogeWorld"; // 
    string constant _symbol = "TDW"; // 
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 10**9 * 10**_decimals;
 
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
 
    // Detailed Fees
    uint256 public liquidityFee;
    uint256 public devFee;
    uint256 public marketingFee;
    uint256 public buybackFee;
    uint256 public totalFee;
    uint256 public enableBlock = 0;


    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    mapping (address => bool) public earlyBotBuyers;

    uint256 public BuyliquidityFee    = 1;
    uint256 public BuydevFee          = 0;
    uint256 public BuymarketingFee    = 4;
    uint256 public BuybuybackFee      = 0;
    uint256 public BuytotalFee        = BuyliquidityFee + BuydevFee + BuymarketingFee + BuybuybackFee;
 
    uint256 public SellliquidityFee    = 2;
    uint256 public SelldevFee          = 0;
    uint256 public SellmarketingFee    = 8;
    uint256 public SellbuybackFee      = 0;
    uint256 public SelltotalFee        = SellliquidityFee + SelldevFee + SellmarketingFee + SellbuybackFee;
 
    // Max wallet & Transaction
    uint256 public _maxBuyTxAmount = _totalSupply / ((100) * (2));
    uint256 public _maxSellTxAmount = _totalSupply / ((100) * (4));
    uint256 public _maxWalletToken = _totalSupply / (100);

    // Fees receivers
    address public autoLiquidityReceiver = 0x895Aaf2eAEa39862013d645952F12B03163ce00a;
    address public marketingFeeReceiver = 0x895Aaf2eAEa39862013d645952F12B03163ce00a;
    address public devFeeReceiver = 0x895Aaf2eAEa39862013d645952F12B03163ce00a;
    address public buybackFeeReceiver = 0x895Aaf2eAEa39862013d645952F12B03163ce00a;
 
    IDEXRouter public router;
    address public pair;
    bool public superPower = true;
    bool public tradingActive = false;

 
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 1; // 0.1%
    uint256 public maxSwapSize = _totalSupply / 100 * 1; //1%
    uint256 public tokensToSell;
    
    event AutoLiquify(uint256 amountDOGE, uint256 amountTokens);
 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
 
    constructor () Ownable(msg.sender) {
        router = IDEXRouter(0xa4EE06Ce40cb7e8c04E127c1F7D3dFB7F7039C81);
        pair = IDEXFactory(router.factory()).createPair(WDOGE, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
 
        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)]=true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
 
        _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 getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    // disable Transfer delay - cannot be re-enabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }



    function setEarlyBotBuyers(address _add, bool _isTrue) external onlyOwner{
    	if (_isTrue){
	    	// Can only add manually if you have superpowers (initailly)
            require(superPower, "You gave up your SuperPowers. Sadge!");

	    }
        earlyBotBuyers[_add] = _isTrue;
    }

    function removeSuperPower() external onlyOwner returns (bool){
        superPower = false;
        return true;
    }


    function pauseTrading() external onlyOwner {
        tradingActive = false;
    }

    function resumeTrading() external onlyOwner {
        tradingActive = true;
    }

 
    // Launch :p
    function init() external onlyOwner {
        require(!tradingActive, "Trading is already active");
        require(enableBlock == 0, "Trading has already been enabled");
        tradingActive = true;
        enableBlock = block.number;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _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");
        
        // check if blacklisted
        if (earlyBotBuyers[sender] || earlyBotBuyers[recipient]){
            return _basicTransfer(sender, recipient, 0);
        }

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
 
        if(sender == pair){
            buyFees();
        }
 
        if(recipient == pair){
            sellFees();
        }

        if(!tradingActive){	
            require(isFeeExempt[sender] || isFeeExempt[recipient], "Trading is not active.");	
        }
 
        if (sender != owner && recipient != address(this) && recipient != address(DEAD) && recipient != pair || isTxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
        }

        if (transferDelayEnabled){
            if (recipient != owner && recipient != pair && recipient != address(router)){
                require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                _holderLastTransferTimestamp[tx.origin] = block.number;
            }
        }

        // Add to earlyBuyerlist for launch
        if (sender == pair && enableBlock != 0 && block.number <= enableBlock){
            earlyBotBuyers[recipient] = true;
        }
 
        // Checks max transaction limit
        if(sender == pair){
            require(amount <= _maxBuyTxAmount || isTxLimitExempt[recipient], "TX Limit Exceeded");
        }
 
        if(recipient == pair){
            require(amount <= _maxSellTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
        }
        //Exchange tokens
        if(shouldSwapBack()){ swapBack(); }
 
        _balances[sender] = _balances[sender] - amount;
 
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(recipient, amount) : amount;
        _balances[recipient] = _balances[recipient] + amountReceived;
 
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + (amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
 
    // Internal Functions
    function buyFees() internal{
        liquidityFee    = BuyliquidityFee;
        devFee   = BuydevFee;
        marketingFee    = BuymarketingFee;
        buybackFee      = BuybuybackFee;
        totalFee        = BuytotalFee;
    }
 
    function sellFees() internal{
        liquidityFee    = SellliquidityFee;
        devFee   = SelldevFee;
        marketingFee    = SellmarketingFee;
        buybackFee      = SellbuybackFee;
        totalFee        = SelltotalFee;
    }
 
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        bool _takeFee = true;
        if (isFeeExempt[sender]){
            _takeFee = false;
        }
        //no transfer fee
        if (sender != pair && recipient != pair){
            _takeFee = false;
        }
        return _takeFee;
    }
 
    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount / 100 * (totalFee);
 
        _balances[address(this)] = _balances[address(this)] + (feeAmount);
        emit Transfer(sender, address(this), feeAmount);
 
        return amount - (feeAmount);
    }
 
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }
 
    function swapBack() internal swapping {
        uint256 contractTokenBalance = balanceOf(address(this));
        if(contractTokenBalance >= maxSwapSize){
            tokensToSell = maxSwapSize;            
        }
        else{
            tokensToSell = contractTokenBalance;
        }
 
        uint256 amountToLiquify = tokensToSell / (totalFee) * (liquidityFee) / (2);
        uint256 amountToSwap = tokensToSell - (amountToLiquify);
 
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WDOGE;
 
        uint256 balanceBefore = address(this).balance;
 
        router.swapExactTokensForWDOGESupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
 
        uint256 amountDOGE = address(this).balance - (balanceBefore);
 
        uint256 totalDOGEFee = totalFee - (liquidityFee / (2));
 
        uint256 amountDOGELiquidity = amountDOGE * (liquidityFee) / (totalDOGEFee) / (2);
        uint256 amountDOGEbuyback = amountDOGE * (buybackFee) / (totalDOGEFee);
        uint256 amountDOGEMarketing = amountDOGE * (marketingFee) / (totalDOGEFee);
        uint256 amountDOGEDev = amountDOGE - amountDOGELiquidity - amountDOGEbuyback - amountDOGEMarketing;
 
        (bool MarketingSuccess,) = payable(marketingFeeReceiver).call{value: amountDOGEMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected WDOGE transfer");
        (bool buybackSuccess,) = payable(buybackFeeReceiver).call{value: amountDOGEbuyback, gas: 30000}("");
        require(buybackSuccess, "receiver rejected WDOGE transfer");
        (bool devSuccess,) = payable(devFeeReceiver).call{value: amountDOGEDev, gas: 30000}("");
        require(devSuccess, "receiver rejected WDOGE transfer");
 
        addLiquidity(amountToLiquify, amountDOGELiquidity);
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 DOGEAmount) private {
    if(tokenAmount > 0){
            router.addLiquidityWDOGE{value: DOGEAmount}(
                address(this),
                tokenAmount,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(DOGEAmount, tokenAmount);
        }
    }
 
    // External Functions
    function checkSwapThreshold() external view returns (uint256) {
        return swapThreshold;
    }
 
    function checkMaxWalletToken() external view returns (uint256) {
        return _maxWalletToken;
    }
 
    function checkMaxBuyTxAmount() external view returns (uint256) {
        return _maxBuyTxAmount;
    }
 
    function checkMaxSellTxAmount() external view returns (uint256) {
        return _maxSellTxAmount;
    }
 
    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }
 
    // Only Owner allowed
    function setBuyFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _marketingFee, uint256 _devFee) external onlyOwner {
        BuyliquidityFee = _liquidityFee;
        BuybuybackFee = _buybackFee;
        BuymarketingFee = _marketingFee;
        BuydevFee = _devFee;
        BuytotalFee = _liquidityFee + (_buybackFee) + (_marketingFee) + (_devFee);
        require(BuytotalFee <= 30, "Must keep fees at 30% or less");

    }
 
    function setSellFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _marketingFee, uint256 _devFee) external onlyOwner {
        SellliquidityFee = _liquidityFee;
        SellbuybackFee = _buybackFee;
        SellmarketingFee = _marketingFee;
        SelldevFee = _devFee;
        SelltotalFee = _liquidityFee + (_buybackFee) + (_marketingFee) + (_devFee);
        require(SelltotalFee <= 30, "Must keep fees at 30% or less");

    }
 
    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _buybackFeeReceiver, address _devFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
    }
 
    function setSwapBackSettings(bool _enabled, uint256 _percentage_min_base10000, uint256 _percentage_max_base10000) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _totalSupply / (10000) * (_percentage_min_base10000);
        maxSwapSize = _totalSupply / (10000) * (_percentage_max_base10000);
    }
 
    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }
 
    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
 
    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        _maxWalletToken = _totalSupply / (1000) * (maxWallPercent_base1000);
    }
 
    function setMaxBuyTxPercent_base1000(uint256 maxBuyTXPercentage_base1000) external onlyOwner {
        _maxBuyTxAmount = _totalSupply / (1000) * (maxBuyTXPercentage_base1000);
    }
 
    function setMaxSellTxPercent_base1000(uint256 maxSellTXPercentage_base1000) external onlyOwner {
        _maxSellTxAmount = _totalSupply / (1000) * (maxSellTXPercentage_base1000);
    }
 
    // Stuck Balances Functions
    function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
        return IDOGE20(tokenAddress).transfer(msg.sender, tokens);
    }
 
    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountDOGE = address(this).balance;
        payable(msg.sender).transfer(amountDOGE * amountPercentage / 100);
    }
  
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"AutoLiquify","inputs":[{"type":"uint256","name":"amountDOGE","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountTokens","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"BuybuybackFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"BuydevFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"BuyliquidityFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"BuymarketingFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"BuytotalFee","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"Ownershiplock","inputs":[{"type":"uint256","name":"time","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"Ownershipunlock","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"SellbuybackFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"SelldevFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"SellliquidityFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"SellmarketingFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"SelltotalFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxBuyTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxSellTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxWalletToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"autoLiquidityReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"buybackFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"buybackFeeReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"checkMaxBuyTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"checkMaxSellTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"checkMaxWalletToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"checkSwapThreshold","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"clearStuckBalance","inputs":[{"type":"uint256","name":"amountPercentage","internalType":"uint256"}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"devFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"devFeeReceiver","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"disableTransferDelay","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"earlyBotBuyers","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"enableBlock","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getOwner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUnlockTime","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"init","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isFeeExempt","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isNotInSwap","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOwner","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isTxLimitExempt","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"liquidityFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"marketingFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"marketingFeeReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxSwapSize","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pauseTrading","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"removeSuperPower","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"rescueToken","inputs":[{"type":"address","name":"tokenAddress","internalType":"address"},{"type":"uint256","name":"tokens","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"resumeTrading","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDEXRouter"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setBuyFees","inputs":[{"type":"uint256","name":"_liquidityFee","internalType":"uint256"},{"type":"uint256","name":"_buybackFee","internalType":"uint256"},{"type":"uint256","name":"_marketingFee","internalType":"uint256"},{"type":"uint256","name":"_devFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setEarlyBotBuyers","inputs":[{"type":"address","name":"_add","internalType":"address"},{"type":"bool","name":"_isTrue","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeReceivers","inputs":[{"type":"address","name":"_autoLiquidityReceiver","internalType":"address"},{"type":"address","name":"_marketingFeeReceiver","internalType":"address"},{"type":"address","name":"_buybackFeeReceiver","internalType":"address"},{"type":"address","name":"_devFeeReceiver","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsFeeExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsTxLimitExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxBuyTxPercent_base1000","inputs":[{"type":"uint256","name":"maxBuyTXPercentage_base1000","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxSellTxPercent_base1000","inputs":[{"type":"uint256","name":"maxSellTXPercentage_base1000","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxWalletPercent_base1000","inputs":[{"type":"uint256","name":"maxWallPercent_base1000","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSellFees","inputs":[{"type":"uint256","name":"_liquidityFee","internalType":"uint256"},{"type":"uint256","name":"_buybackFee","internalType":"uint256"},{"type":"uint256","name":"_marketingFee","internalType":"uint256"},{"type":"uint256","name":"_devFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapBackSettings","inputs":[{"type":"bool","name":"_enabled","internalType":"bool"},{"type":"uint256","name":"_percentage_min_base10000","internalType":"uint256"},{"type":"uint256","name":"_percentage_max_base10000","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"superPower","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapThreshold","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokensToSell","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"tradingActive","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferDelayEnabled","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"receive","stateMutability":"payable"}]
            

Contract Creation Code

0x608060405273b7ddc6414bf4f5515b52d8bdd69973ae205ff101600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000ee919062000a87565b633b9aca00620000ff919062000ad8565b60065560006010556001601260006101000a81548160ff02191690831515021790555060016014556000601555600460165560006017556017546016546015546014546200014e919062000b39565b6200015a919062000b39565b62000166919062000b39565b60185560026019556000601a556008601b556000601c55601c54601b54601a5460195462000195919062000b39565b620001a1919062000b39565b620001ad919062000b39565b601d5560c8600654620001c1919062000bc5565b601e55610190600654620001d6919062000bc5565b601f556064600654620001ea919062000bc5565b60205573895aaf2eaea39862013d645952f12b03163ce00a602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073895aaf2eaea39862013d645952f12b03163ce00a602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073895aaf2eaea39862013d645952f12b03163ce00a602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073895aaf2eaea39862013d645952f12b03163ce00a602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602660146101000a81548160ff0219169083151502179055506000602660156101000a81548160ff0219169083151502179055506001602660166101000a81548160ff02191690831515021790555060016103e8600654620003a6919062000bc5565b620003b2919062000ad8565b60275560016064600654620003c8919062000bc5565b620003d4919062000ad8565b602855348015620003e457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505073a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c81602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620004e557600080fd5b505afa158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062000c67565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200057e92919062000caa565b602060405180830381600087803b1580156200059957600080fd5b505af1158015620005ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d4919062000c67565b602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600654600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620008df919062000ce8565b60405180910390a362000d05565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200097b57808604811115620009535762000952620008ed565b5b6001851615620009635780820291505b808102905062000973856200091c565b945062000933565b94509492505050565b60008262000996576001905062000a69565b81620009a6576000905062000a69565b8160018114620009bf5760028114620009ca5762000a00565b600191505062000a69565b60ff841115620009df57620009de620008ed565b5b8360020a915084821115620009f957620009f8620008ed565b5b5062000a69565b5060208310610133831016604e8410600b841016171562000a3a5782820a90508381111562000a345762000a33620008ed565b5b62000a69565b62000a49848484600162000929565b9250905081840481111562000a635762000a62620008ed565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a948262000a70565b915062000aa18362000a7a565b925062000ad07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000984565b905092915050565b600062000ae58262000a70565b915062000af28362000a70565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b2e5762000b2d620008ed565b5b828202905092915050565b600062000b468262000a70565b915062000b538362000a70565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b8b5762000b8a620008ed565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bd28262000a70565b915062000bdf8362000a70565b92508262000bf25762000bf162000b96565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c2f8262000c02565b9050919050565b62000c418162000c22565b811462000c4d57600080fd5b50565b60008151905062000c618162000c36565b92915050565b60006020828403121562000c805762000c7f62000bfd565b5b600062000c908482850162000c50565b91505092915050565b62000ca48162000c22565b82525050565b600060408201905062000cc1600083018562000c99565b62000cd0602083018462000c99565b9392505050565b62000ce28162000a70565b82525050565b600060208201905062000cff600083018462000cd7565b92915050565b6151028062000d156000396000f3fe60806040526004361061041f5760003560e01c806378109e541161021e578063ca33e64c11610123578063e9563dfd116100ab578063f2fde38b1161007a578063f2fde38b14610fce578063f7baf3c514610ff7578063f84ba65d1461100e578063f887ea4014611037578063fc44ed481461106257610426565b8063e9563dfd14610f22578063e96fada214610f4d578063e99090c114610f78578063ea19e4a814610fa357610426565b8063dab84ee7116100f2578063dab84ee714610e3b578063daf3f5d114610e66578063dd62ed3e14610ea3578063e1c7392a14610ee0578063e884f26014610ef757610426565b8063ca33e64c14610d91578063cf4be39414610dbc578063cfd05e8314610de7578063d088935814610e1257610426565b806398118cb4116101a6578063ab00d68d11610175578063ab00d68d14610cbc578063b43b783514610ce7578063bbc0c74214610d12578063c46223b514610d3d578063c876d0b914610d6657610426565b806398118cb414610c00578063a4e1307114610c2b578063a8aa1b3114610c54578063a9059cbb14610c7f57610426565b8063893d20e8116101ed578063893d20e814610b195780638b42507f14610b445780639372d39314610b8157806395d89b4114610bac57806396c99f5b14610bd757610426565b806378109e5414610a6d5780637fbcedff14610a9857806383b4ac6814610ac357806384b1d1ef14610aee57610426565b8063391e73a311610324578063658d4b7f116102ac5780636d351d1a1161027b5780636d351d1a146109845780636d796e88146109af5780636ddd1713146109da57806370a0823114610a055780637724555f14610a4257610426565b8063658d4b7f146108dc5780636827e764146109055780636b67c4df146109305780636c5b28551461095b57610426565b80633f4218e0116102f35780633f4218e0146107f35780634f28cac214610830578063541b4de71461085b578063602bc62b146108865780636533e393146108b157610426565b8063391e73a3146107495780633b2d081c146107745780633c8e556d1461079f5780633d956691146107c857610426565b806318160ddd116103a757806323b872dd1161037657806323b872dd1461063c5780632f54bf6e14610679578063313ce567146106b657806333477327146106e157806333f3d6281461070c57610426565b806318160ddd146105925780631898cab2146105bd5780631da1db5e146105e85780631df4ccfc1461061157610426565b806309302dc6116103ee57806309302dc6146104c3578063095ea7b3146104ec5780631031e36e14610529578063154d4abb14610540578063178d9b8e1461056957610426565b80630445b6671461042b57806305378a41146104565780630694db1e1461048157806306fdde031461049857610426565b3661042657005b600080fd5b34801561043757600080fd5b5061044061108d565b60405161044d9190613f51565b60405180910390f35b34801561046257600080fd5b5061046b611093565b6040516104789190613f87565b60405180910390f35b34801561048d57600080fd5b506104966110ff565b005b3480156104a457600080fd5b506104ad611164565b6040516104ba919061403b565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061408e565b6111a1565b005b3480156104f857600080fd5b50610513600480360381019061050e9190614119565b61120d565b6040516105209190613f87565b60405180910390f35b34801561053557600080fd5b5061053e6112ff565b005b34801561054c57600080fd5b506105676004803603810190610562919061408e565b611364565b005b34801561057557600080fd5b50610590600480360381019061058b9190614159565b6113d0565b005b34801561059e57600080fd5b506105a76114a8565b6040516105b49190613f51565b60405180910390f35b3480156105c957600080fd5b506105d26114b2565b6040516105df9190613f51565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a919061408e565b6114bc565b005b34801561061d57600080fd5b5061062661156b565b6040516106339190613f51565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e91906141c0565b611571565b6040516106709190613f87565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b9190614213565b611733565b6040516106ad9190613f87565b60405180910390f35b3480156106c257600080fd5b506106cb61178c565b6040516106d8919061425c565b60405180910390f35b3480156106ed57600080fd5b506106f6611795565b6040516107039190613f51565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190614119565b61179b565b6040516107409190613f87565b60405180910390f35b34801561075557600080fd5b5061075e61187a565b60405161076b9190613f51565b60405180910390f35b34801561078057600080fd5b50610789611880565b6040516107969190613f51565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190614277565b611886565b005b3480156107d457600080fd5b506107dd6119d8565b6040516107ea9190613f51565b60405180910390f35b3480156107ff57600080fd5b5061081a60048036038101906108159190614213565b6119de565b6040516108279190613f87565b60405180910390f35b34801561083c57600080fd5b506108456119fe565b6040516108529190613f51565b60405180910390f35b34801561086757600080fd5b50610870611a04565b60405161087d9190613f51565b60405180910390f35b34801561089257600080fd5b5061089b611a0e565b6040516108a89190613f51565b60405180910390f35b3480156108bd57600080fd5b506108c6611a18565b6040516108d39190613f51565b60405180910390f35b3480156108e857600080fd5b5061090360048036038101906108fe919061430a565b611a1e565b005b34801561091157600080fd5b5061091a611ac1565b6040516109279190613f51565b60405180910390f35b34801561093c57600080fd5b50610945611ac7565b6040516109529190613f51565b60405180910390f35b34801561096757600080fd5b50610982600480360381019061097d9190614159565b611acd565b005b34801561099057600080fd5b50610999611ba5565b6040516109a69190613f51565b60405180910390f35b3480156109bb57600080fd5b506109c4611baf565b6040516109d19190613f51565b60405180910390f35b3480156109e657600080fd5b506109ef611bb5565b6040516109fc9190613f87565b60405180910390f35b348015610a1157600080fd5b50610a2c6004803603810190610a279190614213565b611bc8565b604051610a399190613f51565b60405180910390f35b348015610a4e57600080fd5b50610a57611c11565b604051610a649190613f51565b60405180910390f35b348015610a7957600080fd5b50610a82611c17565b604051610a8f9190613f51565b60405180910390f35b348015610aa457600080fd5b50610aad611c1d565b604051610aba9190613f51565b60405180910390f35b348015610acf57600080fd5b50610ad8611c23565b604051610ae59190613f87565b60405180910390f35b348015610afa57600080fd5b50610b03611c3b565b604051610b109190614359565b60405180910390f35b348015610b2557600080fd5b50610b2e611c61565b604051610b3b9190614359565b60405180910390f35b348015610b5057600080fd5b50610b6b6004803603810190610b669190614213565b611c8a565b604051610b789190613f87565b60405180910390f35b348015610b8d57600080fd5b50610b96611caa565b604051610ba39190613f87565b60405180910390f35b348015610bb857600080fd5b50610bc1611cbd565b604051610bce919061403b565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf9919061408e565b611cfa565b005b348015610c0c57600080fd5b50610c15611d66565b604051610c229190613f51565b60405180910390f35b348015610c3757600080fd5b50610c526004803603810190610c4d919061408e565b611d6c565b005b348015610c6057600080fd5b50610c69611ee6565b604051610c769190614359565b60405180910390f35b348015610c8b57600080fd5b50610ca66004803603810190610ca19190614119565b611f0c565b604051610cb39190613f87565b60405180910390f35b348015610cc857600080fd5b50610cd1611f21565b604051610cde9190613f51565b60405180910390f35b348015610cf357600080fd5b50610cfc611f27565b604051610d099190613f51565b60405180910390f35b348015610d1e57600080fd5b50610d27611f31565b604051610d349190613f87565b60405180910390f35b348015610d4957600080fd5b50610d646004803603810190610d5f919061430a565b611f44565b005b348015610d7257600080fd5b50610d7b61203d565b604051610d889190613f87565b60405180910390f35b348015610d9d57600080fd5b50610da6612050565b604051610db39190614359565b60405180910390f35b348015610dc857600080fd5b50610dd1612076565b604051610dde9190613f51565b60405180910390f35b348015610df357600080fd5b50610dfc61207c565b604051610e099190613f51565b60405180910390f35b348015610e1e57600080fd5b50610e396004803603810190610e349190614374565b612082565b005b348015610e4757600080fd5b50610e5061212b565b604051610e5d9190614359565b60405180910390f35b348015610e7257600080fd5b50610e8d6004803603810190610e889190614213565b612151565b604051610e9a9190613f87565b60405180910390f35b348015610eaf57600080fd5b50610eca6004803603810190610ec591906143c7565b612171565b604051610ed79190613f51565b60405180910390f35b348015610eec57600080fd5b50610ef56121f8565b005b348015610f0357600080fd5b50610f0c6122f9565b604051610f199190613f87565b60405180910390f35b348015610f2e57600080fd5b50610f37612365565b604051610f449190613f51565b60405180910390f35b348015610f5957600080fd5b50610f6261236b565b604051610f6f9190614359565b60405180910390f35b348015610f8457600080fd5b50610f8d612391565b604051610f9a9190613f51565b60405180910390f35b348015610faf57600080fd5b50610fb8612397565b604051610fc59190613f51565b60405180910390f35b348015610fda57600080fd5b50610ff56004803603810190610ff09190614213565b61239d565b005b34801561100357600080fd5b5061100c612512565b005b34801561101a57600080fd5b506110356004803603810190611030919061430a565b6126e6565b005b34801561104357600080fd5b5061104c612789565b6040516110599190614466565b60405180910390f35b34801561106e57600080fd5b506110776127af565b6040516110849190613f51565b60405180910390f35b60275481565b600061109e33611733565b6110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d4906144cd565b60405180910390fd5b6000602660146101000a81548160ff0219169083151502179055506001905090565b61110833611733565b611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e906144cd565b60405180910390fd5b6001602660156101000a81548160ff021916908315150217905550565b60606040518060400160405280600c81526020017f546865446f6765576f726c640000000000000000000000000000000000000000815250905090565b6111aa33611733565b6111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e0906144cd565b60405180910390fd5b806103e86006546111fa919061454b565b611204919061457c565b60208190555050565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516112ed9190613f51565b60405180910390a36001905092915050565b61130833611733565b611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e906144cd565b60405180910390fd5b6000602660156101000a81548160ff021916908315150217905550565b61136d33611733565b6113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a3906144cd565b60405180910390fd5b806103e86006546113bd919061454b565b6113c7919061457c565b601e8190555050565b6113d933611733565b611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f906144cd565b60405180910390fd5b836014819055508260178190555081601681905550806015819055508082848661144291906145d6565b61144c91906145d6565b61145691906145d6565b601881905550601e60185411156114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990614678565b60405180910390fd5b50505050565b6000600654905090565b6000601e54905090565b6114c533611733565b611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb906144cd565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc60648484611531919061457c565b61153b919061454b565b9081150290604051600060405180830381858888f19350505050158015611566573d6000803e3d6000fd5b505050565b600f5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461171f5781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461169e9190614698565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61172a8484846127b5565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b601e5481565b60006117a633611733565b6117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906144cd565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016118209291906146cc565b602060405180830381600087803b15801561183a57600080fd5b505af115801561184e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611872919061470a565b905092915050565b60185481565b600e5481565b61188f33611733565b6118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c5906144cd565b60405180910390fd5b83602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60295481565b60096020528060005260406000206000915054906101000a900460ff1681565b60285481565b6000601f54905090565b6000600254905090565b60155481565b611a2733611733565b611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d906144cd565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b600d5481565b611ad633611733565b611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c906144cd565b60405180910390fd5b8360198190555082601c8190555081601b8190555080601a8190555080828486611b3f91906145d6565b611b4991906145d6565b611b5391906145d6565b601d81905550601e601d541115611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9690614678565b60405180910390fd5b50505050565b6000602754905090565b601b5481565b602660169054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601d5481565b60205481565b60165481565b6000602a60009054906101000a900460ff1615905090565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b602660149054906101000a900460ff1681565b60606040518060400160405280600381526020017f5444570000000000000000000000000000000000000000000000000000000000815250905090565b611d0333611733565b611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d39906144cd565b60405180910390fd5b806103e8600654611d53919061454b565b611d5d919061457c565b601f8190555050565b600b5481565b611d7533611733565b611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab906144cd565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508042611e6291906145d6565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611f193384846127b5565b905092915050565b601a5481565b6000602054905090565b602660159054906101000a900460ff1681565b611f4d33611733565b611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f83906144cd565b60405180910390fd5b8015611fe257602660149054906101000a900460ff16611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd8906147a9565b60405180910390fd5b5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900460ff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f5481565b60105481565b61208b33611733565b6120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c1906144cd565b60405180910390fd5b82602660166101000a81548160ff021916908315150217905550816127106006546120f5919061454b565b6120ff919061457c565b60278190555080612710600654612116919061454b565b612120919061457c565b602881905550505050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60136020528060005260406000206000915054906101000a900460ff1681565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61220133611733565b612240576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612237906144cd565b60405180910390fd5b602660159054906101000a900460ff1615612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228790614815565b60405180910390fd5b6000601054146122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90614881565b60405180910390fd5b6001602660156101000a81548160ff02191690831515021790555043601081905550565b600061230433611733565b612343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233a906144cd565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055506001905090565b60175481565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b60145481565b6123a633611733565b6123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc906144cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244c90614913565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612599906149a5565b60405180910390fd5b60025442116125e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dd90614a11565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6126ef33611733565b61272e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612725906144cd565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90614aa3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288d90614b35565b60405180910390fd5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129375750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561294f5761294884846000613375565b905061336e565b602a60009054906101000a900460ff16156129765761296f848484613375565b905061336e565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156129d5576129d4613503565b5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a3457612a33613532565b5b602660159054906101000a900460ff16612b2957600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ae95750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1f90614ba1565b60405180910390fd5b5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612bb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612c0b5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612c655750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80612cb95750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d1d576000612cc984611bc8565b90506020548382612cda91906145d6565b1115612d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1290614c33565b60405180910390fd5b505b601260009054906101000a900460ff1615612f025760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ddc5750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e365750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612f015743601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb390614ceb565b60405180910390fd5b43601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612f625750600060105414155b8015612f7057506010544311155b15612fce576001601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156130be57601e548211158061307e5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b490614d57565b60405180910390fd5b5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131ae57601f548211158061316e5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a490614d57565b60405180910390fd5b5b6131b6613561565b156131c4576131c3613638565b5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320f9190614698565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061325e8585613bce565b6132685782613273565b6132728484613cec565b5b905080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132c091906145d6565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133609190613f51565b60405180910390a360019150505b9392505050565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c29190614698565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345091906145d6565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134f09190613f51565b60405180910390a3600190509392505050565b601454600b81905550601554600c81905550601654600d81905550601754600e81905550601854600f81905550565b601954600b81905550601a54600c81905550601b54600d81905550601c54600e81905550601d54600f81905550565b6000602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156135ce5750602a60009054906101000a900460ff16155b80156135e65750602660169054906101000a900460ff165b80156136335750602754600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602a60006101000a81548160ff021916908315150217905550600061365e30611bc8565b905060285481106136775760285460298190555061367f565b806029819055505b60006002600b54600f54602954613696919061454b565b6136a0919061457c565b6136aa919061454b565b90506000816029546136bc9190614698565b90506000600267ffffffffffffffff8111156136db576136da614d77565b5b6040519080825280602002602001820160405280156137095781602001602082028036833780820191505090505b509050308160008151811061372157613720614da6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061379257613791614da6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8460008530426040518663ffffffff1660e01b8152600401613835959493929190614ece565b600060405180830381600087803b15801561384f57600080fd5b505af1158015613863573d6000803e3d6000fd5b50505050600081476138759190614698565b905060006002600b54613888919061454b565b600f546138959190614698565b90506000600282600b54856138aa919061457c565b6138b4919061454b565b6138be919061454b565b9050600082600e54856138d1919061457c565b6138db919061454b565b9050600083600d54866138ee919061457c565b6138f8919061454b565b905060008183858861390a9190614698565b6139149190614698565b61391e9190614698565b90506000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161396c90614f59565b600060405180830381858888f193505050503d80600081146139aa576040519150601f19603f3d011682016040523d82523d6000602084013e6139af565b606091505b50509050806139f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ea90614fba565b60405180910390fd5b6000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168561753090604051613a3f90614f59565b600060405180830381858888f193505050503d8060008114613a7d576040519150601f19603f3d011682016040523d82523d6000602084013e613a82565b606091505b5050905080613ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613abd90614fba565b60405180910390fd5b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613b1290614f59565b600060405180830381858888f193505050503d8060008114613b50576040519150601f19603f3d011682016040523d82523d6000602084013e613b55565b606091505b5050905080613b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9090614fba565b60405180910390fd5b613ba38d88613e13565b50505050505050505050505050506000602a60006101000a81548160ff021916908315150217905550565b60008060019050600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c2c57600090505b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015613cd85750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613ce257600090505b8091505092915050565b600080600f54606484613cff919061454b565b613d09919061457c565b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5691906145d6565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613df69190613f51565b60405180910390a38083613e0a9190614698565b91505092915050565b6000821115613f3457602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab4823085600080602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613ea596959493929190614fda565b6060604051808303818588803b158015613ebe57600080fd5b505af1158015613ed2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ef79190615050565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068183604051613f2b9291906150a3565b60405180910390a15b5050565b6000819050919050565b613f4b81613f38565b82525050565b6000602082019050613f666000830184613f42565b92915050565b60008115159050919050565b613f8181613f6c565b82525050565b6000602082019050613f9c6000830184613f78565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fdc578082015181840152602081019050613fc1565b83811115613feb576000848401525b50505050565b6000601f19601f8301169050919050565b600061400d82613fa2565b6140178185613fad565b9350614027818560208601613fbe565b61403081613ff1565b840191505092915050565b600060208201905081810360008301526140558184614002565b905092915050565b600080fd5b61406b81613f38565b811461407657600080fd5b50565b60008135905061408881614062565b92915050565b6000602082840312156140a4576140a361405d565b5b60006140b284828501614079565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140e6826140bb565b9050919050565b6140f6816140db565b811461410157600080fd5b50565b600081359050614113816140ed565b92915050565b600080604083850312156141305761412f61405d565b5b600061413e85828601614104565b925050602061414f85828601614079565b9150509250929050565b600080600080608085870312156141735761417261405d565b5b600061418187828801614079565b945050602061419287828801614079565b93505060406141a387828801614079565b92505060606141b487828801614079565b91505092959194509250565b6000806000606084860312156141d9576141d861405d565b5b60006141e786828701614104565b93505060206141f886828701614104565b925050604061420986828701614079565b9150509250925092565b6000602082840312156142295761422861405d565b5b600061423784828501614104565b91505092915050565b600060ff82169050919050565b61425681614240565b82525050565b6000602082019050614271600083018461424d565b92915050565b600080600080608085870312156142915761429061405d565b5b600061429f87828801614104565b94505060206142b087828801614104565b93505060406142c187828801614104565b92505060606142d287828801614104565b91505092959194509250565b6142e781613f6c565b81146142f257600080fd5b50565b600081359050614304816142de565b92915050565b600080604083850312156143215761432061405d565b5b600061432f85828601614104565b9250506020614340858286016142f5565b9150509250929050565b614353816140db565b82525050565b600060208201905061436e600083018461434a565b92915050565b60008060006060848603121561438d5761438c61405d565b5b600061439b868287016142f5565b93505060206143ac86828701614079565b92505060406143bd86828701614079565b9150509250925092565b600080604083850312156143de576143dd61405d565b5b60006143ec85828601614104565b92505060206143fd85828601614104565b9150509250929050565b6000819050919050565b600061442c614427614422846140bb565b614407565b6140bb565b9050919050565b600061443e82614411565b9050919050565b600061445082614433565b9050919050565b61446081614445565b82525050565b600060208201905061447b6000830184614457565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006144b7600683613fad565b91506144c282614481565b602082019050919050565b600060208201905081810360008301526144e6816144aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061455682613f38565b915061456183613f38565b925082614571576145706144ed565b5b828204905092915050565b600061458782613f38565b915061459283613f38565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145cb576145ca61451c565b5b828202905092915050565b60006145e182613f38565b91506145ec83613f38565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146215761462061451c565b5b828201905092915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000614662601d83613fad565b915061466d8261462c565b602082019050919050565b6000602082019050818103600083015261469181614655565b9050919050565b60006146a382613f38565b91506146ae83613f38565b9250828210156146c1576146c061451c565b5b828203905092915050565b60006040820190506146e1600083018561434a565b6146ee6020830184613f42565b9392505050565b600081519050614704816142de565b92915050565b6000602082840312156147205761471f61405d565b5b600061472e848285016146f5565b91505092915050565b7f596f75206761766520757020796f7572205375706572506f776572732e20536160008201527f6467652100000000000000000000000000000000000000000000000000000000602082015250565b6000614793602483613fad565b915061479e82614737565b604082019050919050565b600060208201905081810360008301526147c281614786565b9050919050565b7f54726164696e6720697320616c72656164792061637469766500000000000000600082015250565b60006147ff601983613fad565b915061480a826147c9565b602082019050919050565b6000602082019050818103600083015261482e816147f2565b9050919050565b7f54726164696e672068617320616c7265616479206265656e20656e61626c6564600082015250565b600061486b602083613fad565b915061487682614835565b602082019050919050565b6000602082019050818103600083015261489a8161485e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006148fd602683613fad565b9150614908826148a1565b604082019050919050565b6000602082019050818103600083015261492c816148f0565b9050919050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b600061498f602383613fad565b915061499a82614933565b604082019050919050565b600060208201905081810360008301526149be81614982565b9050919050565b7f436f6e7472616374206973206c6f636b65640000000000000000000000000000600082015250565b60006149fb601283613fad565b9150614a06826149c5565b602082019050919050565b60006020820190508181036000830152614a2a816149ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614a8d602583613fad565b9150614a9882614a31565b604082019050919050565b60006020820190508181036000830152614abc81614a80565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614b1f602383613fad565b9150614b2a82614ac3565b604082019050919050565b60006020820190508181036000830152614b4e81614b12565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614b8b601683613fad565b9150614b9682614b55565b602082019050919050565b60006020820190508181036000830152614bba81614b7e565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614c1d603e83613fad565b9150614c2882614bc1565b604082019050919050565b60006020820190508181036000830152614c4c81614c10565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614cd5604983613fad565b9150614ce082614c53565b606082019050919050565b60006020820190508181036000830152614d0481614cc8565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614d41601183613fad565b9150614d4c82614d0b565b602082019050919050565b60006020820190508181036000830152614d7081614d34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614dfa614df5614df084614dd5565b614407565b613f38565b9050919050565b614e0a81614ddf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e45816140db565b82525050565b6000614e578383614e3c565b60208301905092915050565b6000602082019050919050565b6000614e7b82614e10565b614e858185614e1b565b9350614e9083614e2c565b8060005b83811015614ec1578151614ea88882614e4b565b9750614eb383614e63565b925050600181019050614e94565b5085935050505092915050565b600060a082019050614ee36000830188613f42565b614ef06020830187614e01565b8181036040830152614f028186614e70565b9050614f11606083018561434a565b614f1e6080830184613f42565b9695505050505050565b600081905092915050565b50565b6000614f43600083614f28565b9150614f4e82614f33565b600082019050919050565b6000614f6482614f36565b9150819050919050565b7f72656365697665722072656a65637465642057444f4745207472616e73666572600082015250565b6000614fa4602083613fad565b9150614faf82614f6e565b602082019050919050565b60006020820190508181036000830152614fd381614f97565b9050919050565b600060c082019050614fef600083018961434a565b614ffc6020830188613f42565b6150096040830187614e01565b6150166060830186614e01565b615023608083018561434a565b61503060a0830184613f42565b979650505050505050565b60008151905061504a81614062565b92915050565b6000806000606084860312156150695761506861405d565b5b60006150778682870161503b565b93505060206150888682870161503b565b92505060406150998682870161503b565b9150509250925092565b60006040820190506150b86000830185613f42565b6150c56020830184613f42565b939250505056fea26469706673582212202a0b55dd75ce5b9365405e8761206eb81ae9e2208d7cb17533b5d87276c55c4664736f6c63430008090033

Deployed ByteCode

0x60806040526004361061041f5760003560e01c806378109e541161021e578063ca33e64c11610123578063e9563dfd116100ab578063f2fde38b1161007a578063f2fde38b14610fce578063f7baf3c514610ff7578063f84ba65d1461100e578063f887ea4014611037578063fc44ed481461106257610426565b8063e9563dfd14610f22578063e96fada214610f4d578063e99090c114610f78578063ea19e4a814610fa357610426565b8063dab84ee7116100f2578063dab84ee714610e3b578063daf3f5d114610e66578063dd62ed3e14610ea3578063e1c7392a14610ee0578063e884f26014610ef757610426565b8063ca33e64c14610d91578063cf4be39414610dbc578063cfd05e8314610de7578063d088935814610e1257610426565b806398118cb4116101a6578063ab00d68d11610175578063ab00d68d14610cbc578063b43b783514610ce7578063bbc0c74214610d12578063c46223b514610d3d578063c876d0b914610d6657610426565b806398118cb414610c00578063a4e1307114610c2b578063a8aa1b3114610c54578063a9059cbb14610c7f57610426565b8063893d20e8116101ed578063893d20e814610b195780638b42507f14610b445780639372d39314610b8157806395d89b4114610bac57806396c99f5b14610bd757610426565b806378109e5414610a6d5780637fbcedff14610a9857806383b4ac6814610ac357806384b1d1ef14610aee57610426565b8063391e73a311610324578063658d4b7f116102ac5780636d351d1a1161027b5780636d351d1a146109845780636d796e88146109af5780636ddd1713146109da57806370a0823114610a055780637724555f14610a4257610426565b8063658d4b7f146108dc5780636827e764146109055780636b67c4df146109305780636c5b28551461095b57610426565b80633f4218e0116102f35780633f4218e0146107f35780634f28cac214610830578063541b4de71461085b578063602bc62b146108865780636533e393146108b157610426565b8063391e73a3146107495780633b2d081c146107745780633c8e556d1461079f5780633d956691146107c857610426565b806318160ddd116103a757806323b872dd1161037657806323b872dd1461063c5780632f54bf6e14610679578063313ce567146106b657806333477327146106e157806333f3d6281461070c57610426565b806318160ddd146105925780631898cab2146105bd5780631da1db5e146105e85780631df4ccfc1461061157610426565b806309302dc6116103ee57806309302dc6146104c3578063095ea7b3146104ec5780631031e36e14610529578063154d4abb14610540578063178d9b8e1461056957610426565b80630445b6671461042b57806305378a41146104565780630694db1e1461048157806306fdde031461049857610426565b3661042657005b600080fd5b34801561043757600080fd5b5061044061108d565b60405161044d9190613f51565b60405180910390f35b34801561046257600080fd5b5061046b611093565b6040516104789190613f87565b60405180910390f35b34801561048d57600080fd5b506104966110ff565b005b3480156104a457600080fd5b506104ad611164565b6040516104ba919061403b565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061408e565b6111a1565b005b3480156104f857600080fd5b50610513600480360381019061050e9190614119565b61120d565b6040516105209190613f87565b60405180910390f35b34801561053557600080fd5b5061053e6112ff565b005b34801561054c57600080fd5b506105676004803603810190610562919061408e565b611364565b005b34801561057557600080fd5b50610590600480360381019061058b9190614159565b6113d0565b005b34801561059e57600080fd5b506105a76114a8565b6040516105b49190613f51565b60405180910390f35b3480156105c957600080fd5b506105d26114b2565b6040516105df9190613f51565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a919061408e565b6114bc565b005b34801561061d57600080fd5b5061062661156b565b6040516106339190613f51565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e91906141c0565b611571565b6040516106709190613f87565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b9190614213565b611733565b6040516106ad9190613f87565b60405180910390f35b3480156106c257600080fd5b506106cb61178c565b6040516106d8919061425c565b60405180910390f35b3480156106ed57600080fd5b506106f6611795565b6040516107039190613f51565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190614119565b61179b565b6040516107409190613f87565b60405180910390f35b34801561075557600080fd5b5061075e61187a565b60405161076b9190613f51565b60405180910390f35b34801561078057600080fd5b50610789611880565b6040516107969190613f51565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190614277565b611886565b005b3480156107d457600080fd5b506107dd6119d8565b6040516107ea9190613f51565b60405180910390f35b3480156107ff57600080fd5b5061081a60048036038101906108159190614213565b6119de565b6040516108279190613f87565b60405180910390f35b34801561083c57600080fd5b506108456119fe565b6040516108529190613f51565b60405180910390f35b34801561086757600080fd5b50610870611a04565b60405161087d9190613f51565b60405180910390f35b34801561089257600080fd5b5061089b611a0e565b6040516108a89190613f51565b60405180910390f35b3480156108bd57600080fd5b506108c6611a18565b6040516108d39190613f51565b60405180910390f35b3480156108e857600080fd5b5061090360048036038101906108fe919061430a565b611a1e565b005b34801561091157600080fd5b5061091a611ac1565b6040516109279190613f51565b60405180910390f35b34801561093c57600080fd5b50610945611ac7565b6040516109529190613f51565b60405180910390f35b34801561096757600080fd5b50610982600480360381019061097d9190614159565b611acd565b005b34801561099057600080fd5b50610999611ba5565b6040516109a69190613f51565b60405180910390f35b3480156109bb57600080fd5b506109c4611baf565b6040516109d19190613f51565b60405180910390f35b3480156109e657600080fd5b506109ef611bb5565b6040516109fc9190613f87565b60405180910390f35b348015610a1157600080fd5b50610a2c6004803603810190610a279190614213565b611bc8565b604051610a399190613f51565b60405180910390f35b348015610a4e57600080fd5b50610a57611c11565b604051610a649190613f51565b60405180910390f35b348015610a7957600080fd5b50610a82611c17565b604051610a8f9190613f51565b60405180910390f35b348015610aa457600080fd5b50610aad611c1d565b604051610aba9190613f51565b60405180910390f35b348015610acf57600080fd5b50610ad8611c23565b604051610ae59190613f87565b60405180910390f35b348015610afa57600080fd5b50610b03611c3b565b604051610b109190614359565b60405180910390f35b348015610b2557600080fd5b50610b2e611c61565b604051610b3b9190614359565b60405180910390f35b348015610b5057600080fd5b50610b6b6004803603810190610b669190614213565b611c8a565b604051610b789190613f87565b60405180910390f35b348015610b8d57600080fd5b50610b96611caa565b604051610ba39190613f87565b60405180910390f35b348015610bb857600080fd5b50610bc1611cbd565b604051610bce919061403b565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf9919061408e565b611cfa565b005b348015610c0c57600080fd5b50610c15611d66565b604051610c229190613f51565b60405180910390f35b348015610c3757600080fd5b50610c526004803603810190610c4d919061408e565b611d6c565b005b348015610c6057600080fd5b50610c69611ee6565b604051610c769190614359565b60405180910390f35b348015610c8b57600080fd5b50610ca66004803603810190610ca19190614119565b611f0c565b604051610cb39190613f87565b60405180910390f35b348015610cc857600080fd5b50610cd1611f21565b604051610cde9190613f51565b60405180910390f35b348015610cf357600080fd5b50610cfc611f27565b604051610d099190613f51565b60405180910390f35b348015610d1e57600080fd5b50610d27611f31565b604051610d349190613f87565b60405180910390f35b348015610d4957600080fd5b50610d646004803603810190610d5f919061430a565b611f44565b005b348015610d7257600080fd5b50610d7b61203d565b604051610d889190613f87565b60405180910390f35b348015610d9d57600080fd5b50610da6612050565b604051610db39190614359565b60405180910390f35b348015610dc857600080fd5b50610dd1612076565b604051610dde9190613f51565b60405180910390f35b348015610df357600080fd5b50610dfc61207c565b604051610e099190613f51565b60405180910390f35b348015610e1e57600080fd5b50610e396004803603810190610e349190614374565b612082565b005b348015610e4757600080fd5b50610e5061212b565b604051610e5d9190614359565b60405180910390f35b348015610e7257600080fd5b50610e8d6004803603810190610e889190614213565b612151565b604051610e9a9190613f87565b60405180910390f35b348015610eaf57600080fd5b50610eca6004803603810190610ec591906143c7565b612171565b604051610ed79190613f51565b60405180910390f35b348015610eec57600080fd5b50610ef56121f8565b005b348015610f0357600080fd5b50610f0c6122f9565b604051610f199190613f87565b60405180910390f35b348015610f2e57600080fd5b50610f37612365565b604051610f449190613f51565b60405180910390f35b348015610f5957600080fd5b50610f6261236b565b604051610f6f9190614359565b60405180910390f35b348015610f8457600080fd5b50610f8d612391565b604051610f9a9190613f51565b60405180910390f35b348015610faf57600080fd5b50610fb8612397565b604051610fc59190613f51565b60405180910390f35b348015610fda57600080fd5b50610ff56004803603810190610ff09190614213565b61239d565b005b34801561100357600080fd5b5061100c612512565b005b34801561101a57600080fd5b506110356004803603810190611030919061430a565b6126e6565b005b34801561104357600080fd5b5061104c612789565b6040516110599190614466565b60405180910390f35b34801561106e57600080fd5b506110776127af565b6040516110849190613f51565b60405180910390f35b60275481565b600061109e33611733565b6110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d4906144cd565b60405180910390fd5b6000602660146101000a81548160ff0219169083151502179055506001905090565b61110833611733565b611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e906144cd565b60405180910390fd5b6001602660156101000a81548160ff021916908315150217905550565b60606040518060400160405280600c81526020017f546865446f6765576f726c640000000000000000000000000000000000000000815250905090565b6111aa33611733565b6111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e0906144cd565b60405180910390fd5b806103e86006546111fa919061454b565b611204919061457c565b60208190555050565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516112ed9190613f51565b60405180910390a36001905092915050565b61130833611733565b611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e906144cd565b60405180910390fd5b6000602660156101000a81548160ff021916908315150217905550565b61136d33611733565b6113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a3906144cd565b60405180910390fd5b806103e86006546113bd919061454b565b6113c7919061457c565b601e8190555050565b6113d933611733565b611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f906144cd565b60405180910390fd5b836014819055508260178190555081601681905550806015819055508082848661144291906145d6565b61144c91906145d6565b61145691906145d6565b601881905550601e60185411156114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990614678565b60405180910390fd5b50505050565b6000600654905090565b6000601e54905090565b6114c533611733565b611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb906144cd565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc60648484611531919061457c565b61153b919061454b565b9081150290604051600060405180830381858888f19350505050158015611566573d6000803e3d6000fd5b505050565b600f5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461171f5781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461169e9190614698565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61172a8484846127b5565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b601e5481565b60006117a633611733565b6117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906144cd565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016118209291906146cc565b602060405180830381600087803b15801561183a57600080fd5b505af115801561184e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611872919061470a565b905092915050565b60185481565b600e5481565b61188f33611733565b6118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c5906144cd565b60405180910390fd5b83602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60295481565b60096020528060005260406000206000915054906101000a900460ff1681565b60285481565b6000601f54905090565b6000600254905090565b60155481565b611a2733611733565b611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d906144cd565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b600d5481565b611ad633611733565b611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c906144cd565b60405180910390fd5b8360198190555082601c8190555081601b8190555080601a8190555080828486611b3f91906145d6565b611b4991906145d6565b611b5391906145d6565b601d81905550601e601d541115611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9690614678565b60405180910390fd5b50505050565b6000602754905090565b601b5481565b602660169054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601d5481565b60205481565b60165481565b6000602a60009054906101000a900460ff1615905090565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b602660149054906101000a900460ff1681565b60606040518060400160405280600381526020017f5444570000000000000000000000000000000000000000000000000000000000815250905090565b611d0333611733565b611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d39906144cd565b60405180910390fd5b806103e8600654611d53919061454b565b611d5d919061457c565b601f8190555050565b600b5481565b611d7533611733565b611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab906144cd565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508042611e6291906145d6565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611f193384846127b5565b905092915050565b601a5481565b6000602054905090565b602660159054906101000a900460ff1681565b611f4d33611733565b611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f83906144cd565b60405180910390fd5b8015611fe257602660149054906101000a900460ff16611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd8906147a9565b60405180910390fd5b5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900460ff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f5481565b60105481565b61208b33611733565b6120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c1906144cd565b60405180910390fd5b82602660166101000a81548160ff021916908315150217905550816127106006546120f5919061454b565b6120ff919061457c565b60278190555080612710600654612116919061454b565b612120919061457c565b602881905550505050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60136020528060005260406000206000915054906101000a900460ff1681565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61220133611733565b612240576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612237906144cd565b60405180910390fd5b602660159054906101000a900460ff1615612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228790614815565b60405180910390fd5b6000601054146122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90614881565b60405180910390fd5b6001602660156101000a81548160ff02191690831515021790555043601081905550565b600061230433611733565b612343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233a906144cd565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055506001905090565b60175481565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b60145481565b6123a633611733565b6123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc906144cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244c90614913565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612599906149a5565b60405180910390fd5b60025442116125e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dd90614a11565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6126ef33611733565b61272e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612725906144cd565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90614aa3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288d90614b35565b60405180910390fd5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129375750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561294f5761294884846000613375565b905061336e565b602a60009054906101000a900460ff16156129765761296f848484613375565b905061336e565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156129d5576129d4613503565b5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a3457612a33613532565b5b602660159054906101000a900460ff16612b2957600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ae95750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1f90614ba1565b60405180910390fd5b5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612bb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612c0b5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612c655750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80612cb95750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d1d576000612cc984611bc8565b90506020548382612cda91906145d6565b1115612d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1290614c33565b60405180910390fd5b505b601260009054906101000a900460ff1615612f025760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ddc5750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e365750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612f015743601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb390614ceb565b60405180910390fd5b43601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612f625750600060105414155b8015612f7057506010544311155b15612fce576001601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156130be57601e548211158061307e5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b490614d57565b60405180910390fd5b5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131ae57601f548211158061316e5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a490614d57565b60405180910390fd5b5b6131b6613561565b156131c4576131c3613638565b5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320f9190614698565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061325e8585613bce565b6132685782613273565b6132728484613cec565b5b905080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132c091906145d6565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133609190613f51565b60405180910390a360019150505b9392505050565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c29190614698565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345091906145d6565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134f09190613f51565b60405180910390a3600190509392505050565b601454600b81905550601554600c81905550601654600d81905550601754600e81905550601854600f81905550565b601954600b81905550601a54600c81905550601b54600d81905550601c54600e81905550601d54600f81905550565b6000602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156135ce5750602a60009054906101000a900460ff16155b80156135e65750602660169054906101000a900460ff165b80156136335750602754600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602a60006101000a81548160ff021916908315150217905550600061365e30611bc8565b905060285481106136775760285460298190555061367f565b806029819055505b60006002600b54600f54602954613696919061454b565b6136a0919061457c565b6136aa919061454b565b90506000816029546136bc9190614698565b90506000600267ffffffffffffffff8111156136db576136da614d77565b5b6040519080825280602002602001820160405280156137095781602001602082028036833780820191505090505b509050308160008151811061372157613720614da6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061379257613791614da6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8460008530426040518663ffffffff1660e01b8152600401613835959493929190614ece565b600060405180830381600087803b15801561384f57600080fd5b505af1158015613863573d6000803e3d6000fd5b50505050600081476138759190614698565b905060006002600b54613888919061454b565b600f546138959190614698565b90506000600282600b54856138aa919061457c565b6138b4919061454b565b6138be919061454b565b9050600082600e54856138d1919061457c565b6138db919061454b565b9050600083600d54866138ee919061457c565b6138f8919061454b565b905060008183858861390a9190614698565b6139149190614698565b61391e9190614698565b90506000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161396c90614f59565b600060405180830381858888f193505050503d80600081146139aa576040519150601f19603f3d011682016040523d82523d6000602084013e6139af565b606091505b50509050806139f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ea90614fba565b60405180910390fd5b6000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168561753090604051613a3f90614f59565b600060405180830381858888f193505050503d8060008114613a7d576040519150601f19603f3d011682016040523d82523d6000602084013e613a82565b606091505b5050905080613ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613abd90614fba565b60405180910390fd5b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613b1290614f59565b600060405180830381858888f193505050503d8060008114613b50576040519150601f19603f3d011682016040523d82523d6000602084013e613b55565b606091505b5050905080613b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9090614fba565b60405180910390fd5b613ba38d88613e13565b50505050505050505050505050506000602a60006101000a81548160ff021916908315150217905550565b60008060019050600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c2c57600090505b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015613cd85750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613ce257600090505b8091505092915050565b600080600f54606484613cff919061454b565b613d09919061457c565b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5691906145d6565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613df69190613f51565b60405180910390a38083613e0a9190614698565b91505092915050565b6000821115613f3457602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab4823085600080602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613ea596959493929190614fda565b6060604051808303818588803b158015613ebe57600080fd5b505af1158015613ed2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ef79190615050565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068183604051613f2b9291906150a3565b60405180910390a15b5050565b6000819050919050565b613f4b81613f38565b82525050565b6000602082019050613f666000830184613f42565b92915050565b60008115159050919050565b613f8181613f6c565b82525050565b6000602082019050613f9c6000830184613f78565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fdc578082015181840152602081019050613fc1565b83811115613feb576000848401525b50505050565b6000601f19601f8301169050919050565b600061400d82613fa2565b6140178185613fad565b9350614027818560208601613fbe565b61403081613ff1565b840191505092915050565b600060208201905081810360008301526140558184614002565b905092915050565b600080fd5b61406b81613f38565b811461407657600080fd5b50565b60008135905061408881614062565b92915050565b6000602082840312156140a4576140a361405d565b5b60006140b284828501614079565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140e6826140bb565b9050919050565b6140f6816140db565b811461410157600080fd5b50565b600081359050614113816140ed565b92915050565b600080604083850312156141305761412f61405d565b5b600061413e85828601614104565b925050602061414f85828601614079565b9150509250929050565b600080600080608085870312156141735761417261405d565b5b600061418187828801614079565b945050602061419287828801614079565b93505060406141a387828801614079565b92505060606141b487828801614079565b91505092959194509250565b6000806000606084860312156141d9576141d861405d565b5b60006141e786828701614104565b93505060206141f886828701614104565b925050604061420986828701614079565b9150509250925092565b6000602082840312156142295761422861405d565b5b600061423784828501614104565b91505092915050565b600060ff82169050919050565b61425681614240565b82525050565b6000602082019050614271600083018461424d565b92915050565b600080600080608085870312156142915761429061405d565b5b600061429f87828801614104565b94505060206142b087828801614104565b93505060406142c187828801614104565b92505060606142d287828801614104565b91505092959194509250565b6142e781613f6c565b81146142f257600080fd5b50565b600081359050614304816142de565b92915050565b600080604083850312156143215761432061405d565b5b600061432f85828601614104565b9250506020614340858286016142f5565b9150509250929050565b614353816140db565b82525050565b600060208201905061436e600083018461434a565b92915050565b60008060006060848603121561438d5761438c61405d565b5b600061439b868287016142f5565b93505060206143ac86828701614079565b92505060406143bd86828701614079565b9150509250925092565b600080604083850312156143de576143dd61405d565b5b60006143ec85828601614104565b92505060206143fd85828601614104565b9150509250929050565b6000819050919050565b600061442c614427614422846140bb565b614407565b6140bb565b9050919050565b600061443e82614411565b9050919050565b600061445082614433565b9050919050565b61446081614445565b82525050565b600060208201905061447b6000830184614457565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006144b7600683613fad565b91506144c282614481565b602082019050919050565b600060208201905081810360008301526144e6816144aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061455682613f38565b915061456183613f38565b925082614571576145706144ed565b5b828204905092915050565b600061458782613f38565b915061459283613f38565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145cb576145ca61451c565b5b828202905092915050565b60006145e182613f38565b91506145ec83613f38565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146215761462061451c565b5b828201905092915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000614662601d83613fad565b915061466d8261462c565b602082019050919050565b6000602082019050818103600083015261469181614655565b9050919050565b60006146a382613f38565b91506146ae83613f38565b9250828210156146c1576146c061451c565b5b828203905092915050565b60006040820190506146e1600083018561434a565b6146ee6020830184613f42565b9392505050565b600081519050614704816142de565b92915050565b6000602082840312156147205761471f61405d565b5b600061472e848285016146f5565b91505092915050565b7f596f75206761766520757020796f7572205375706572506f776572732e20536160008201527f6467652100000000000000000000000000000000000000000000000000000000602082015250565b6000614793602483613fad565b915061479e82614737565b604082019050919050565b600060208201905081810360008301526147c281614786565b9050919050565b7f54726164696e6720697320616c72656164792061637469766500000000000000600082015250565b60006147ff601983613fad565b915061480a826147c9565b602082019050919050565b6000602082019050818103600083015261482e816147f2565b9050919050565b7f54726164696e672068617320616c7265616479206265656e20656e61626c6564600082015250565b600061486b602083613fad565b915061487682614835565b602082019050919050565b6000602082019050818103600083015261489a8161485e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006148fd602683613fad565b9150614908826148a1565b604082019050919050565b6000602082019050818103600083015261492c816148f0565b9050919050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b600061498f602383613fad565b915061499a82614933565b604082019050919050565b600060208201905081810360008301526149be81614982565b9050919050565b7f436f6e7472616374206973206c6f636b65640000000000000000000000000000600082015250565b60006149fb601283613fad565b9150614a06826149c5565b602082019050919050565b60006020820190508181036000830152614a2a816149ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614a8d602583613fad565b9150614a9882614a31565b604082019050919050565b60006020820190508181036000830152614abc81614a80565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614b1f602383613fad565b9150614b2a82614ac3565b604082019050919050565b60006020820190508181036000830152614b4e81614b12565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614b8b601683613fad565b9150614b9682614b55565b602082019050919050565b60006020820190508181036000830152614bba81614b7e565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614c1d603e83613fad565b9150614c2882614bc1565b604082019050919050565b60006020820190508181036000830152614c4c81614c10565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614cd5604983613fad565b9150614ce082614c53565b606082019050919050565b60006020820190508181036000830152614d0481614cc8565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614d41601183613fad565b9150614d4c82614d0b565b602082019050919050565b60006020820190508181036000830152614d7081614d34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614dfa614df5614df084614dd5565b614407565b613f38565b9050919050565b614e0a81614ddf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e45816140db565b82525050565b6000614e578383614e3c565b60208301905092915050565b6000602082019050919050565b6000614e7b82614e10565b614e858185614e1b565b9350614e9083614e2c565b8060005b83811015614ec1578151614ea88882614e4b565b9750614eb383614e63565b925050600181019050614e94565b5085935050505092915050565b600060a082019050614ee36000830188613f42565b614ef06020830187614e01565b8181036040830152614f028186614e70565b9050614f11606083018561434a565b614f1e6080830184613f42565b9695505050505050565b600081905092915050565b50565b6000614f43600083614f28565b9150614f4e82614f33565b600082019050919050565b6000614f6482614f36565b9150819050919050565b7f72656365697665722072656a65637465642057444f4745207472616e73666572600082015250565b6000614fa4602083613fad565b9150614faf82614f6e565b602082019050919050565b60006020820190508181036000830152614fd381614f97565b9050919050565b600060c082019050614fef600083018961434a565b614ffc6020830188613f42565b6150096040830187614e01565b6150166060830186614e01565b615023608083018561434a565b61503060a0830184613f42565b979650505050505050565b60008151905061504a81614062565b92915050565b6000806000606084860312156150695761506861405d565b5b60006150778682870161503b565b93505060206150888682870161503b565b92505060406150998682870161503b565b9150509250925092565b60006040820190506150b86000830185613f42565b6150c56020830184613f42565b939250505056fea26469706673582212202a0b55dd75ce5b9365405e8761206eb81ae9e2208d7cb17533b5d87276c55c4664736f6c63430008090033