ETH Price: $2,864.43 (+6.46%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve196100732024-04-08 9:30:59213 days ago1712568659IN
0x55d28342...62F844aFd
0 ETH0.0008840118.90820537
Approve193436592024-03-01 23:37:35250 days ago1709336255IN
0x55d28342...62F844aFd
0 ETH0.0020717144.31192852
Approve192912272024-02-23 15:36:59258 days ago1708702619IN
0x55d28342...62F844aFd
0 ETH0.0030473465.17957029
Approve192843232024-02-22 16:25:59259 days ago1708619159IN
0x55d28342...62F844aFd
0 ETH0.0030351364.42248758
Approve192842132024-02-22 16:03:59259 days ago1708617839IN
0x55d28342...62F844aFd
0 ETH0.0032496768.97620844
Approve192842132024-02-22 16:03:59259 days ago1708617839IN
0x55d28342...62F844aFd
0 ETH0.0032496768.97620844
Approve192842082024-02-22 16:02:59259 days ago1708617779IN
0x55d28342...62F844aFd
0 ETH0.0027936159.29602261
Transfer192841622024-02-22 15:53:47259 days ago1708617227IN
0x55d28342...62F844aFd
0 ETH0.010004257.06289065
Transfer192841352024-02-22 15:48:23259 days ago1708616903IN
0x55d28342...62F844aFd
0 ETH0.0093633653.40756171
Transfer192840822024-02-22 15:37:35259 days ago1708616255IN
0x55d28342...62F844aFd
0 ETH0.0103824458.28544598
Transfer192840422024-02-22 15:29:35259 days ago1708615775IN
0x55d28342...62F844aFd
0 ETH0.0095367154.39262665
Transfer192840342024-02-22 15:27:59259 days ago1708615679IN
0x55d28342...62F844aFd
0 ETH0.0105576959.26925436
Transfer192840222024-02-22 15:25:35259 days ago1708615535IN
0x55d28342...62F844aFd
0 ETH0.010916561.28358611
Transfer192840082024-02-22 15:22:47259 days ago1708615367IN
0x55d28342...62F844aFd
0 ETH0.01141165.0826664
Transfer192819652024-02-22 8:26:59259 days ago1708590419IN
0x55d28342...62F844aFd
0 ETH0.0030665732.60167691
Multi Send Token...192819582024-02-22 8:25:35259 days ago1708590335IN
0x55d28342...62F844aFd
0 ETH0.0098141334.29202784
Multi Send Token...192819422024-02-22 8:22:23259 days ago1708590143IN
0x55d28342...62F844aFd
0 ETH0.0151548640.63336666
Multi Send Token...192819242024-02-22 8:18:47259 days ago1708589927IN
0x55d28342...62F844aFd
0 ETH0.02249538.3647234
Multi Send Token...192818782024-02-22 8:09:35259 days ago1708589375IN
0x55d28342...62F844aFd
0 ETH0.0381472335.8905826
Multi Send Token...192816982024-02-22 7:33:23259 days ago1708587203IN
0x55d28342...62F844aFd
0 ETH0.0821634235.53907239
Multi Send Token...192815712024-02-22 7:07:59259 days ago1708585679IN
0x55d28342...62F844aFd
0 ETH0.0680024334.07092515
Multi Send Token...192814702024-02-22 6:47:47259 days ago1708584467IN
0x55d28342...62F844aFd
0 ETH0.034552934.10621314
Multi Send Token...192814522024-02-22 6:43:59259 days ago1708584239IN
0x55d28342...62F844aFd
0 ETH0.0546871425.00590778
Multi Send Token...192812282024-02-22 5:58:35259 days ago1708581515IN
0x55d28342...62F844aFd
0 ETH0.0638067929.17494385
Multi Send Token...192812142024-02-22 5:55:23259 days ago1708581323IN
0x55d28342...62F844aFd
0 ETH0.0596040527.25373345
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PEPICOIN

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: Token.sol
// SPDX-License-Identifier: MIT

/* 

 _______  _______  _______  ___  
|       ||       ||       ||   | 
|    _  ||    ___||    _  ||   | 
|   |_| ||   |___ |   |_| ||   | 
|    ___||    ___||    ___||   | 
|   |    |   |___ |   |    |   | 
|___|    |_______||___|    |___| 

*/



pragma solidity ^0.8.21;

import "./IERC20.sol";
import "./SafeMath.sol";
import "./IDEXFactory.sol";
import "./IPancakePair.sol";
import "./IDEXRouter.sol";
import "./Ownable.sol";


//Swap Router Live Address: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

contract PEPICOIN is IERC20, Ownable {
    using SafeMath for uint256;
    
    address WETH;
    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO          = 0x0000000000000000000000000000000000000000;

    string _name = "PEPI";
    string _symbol = "PEPI";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**8 * 10**_decimals; 
    uint256 public _maxTxAmount = (_totalSupply * 1) / 100; // 1%
    uint256 public _maxWalletSize = (_totalSupply * 1) / 100; // 1%  

    mapping (address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) isCooldownExempt;    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
 
    uint256 liquidityFeeBuy = 0; 
    uint256 liquidityFeeSell = 0;

    uint256 TeamFeeBuy = 1;  
    uint256 TeamFeeSell = 0;  

    uint256 marketingFeeBuy = 2;   
    uint256 marketingFeeSell = 2;   

    uint256 reflectionFeeBuy = 0;   
    uint256 reflectionFeeSell = 1;   

    uint256 totalFeeBuy = marketingFeeBuy + liquidityFeeBuy + TeamFeeBuy + reflectionFeeBuy;     
    uint256 totalFeeSell = marketingFeeSell + liquidityFeeSell + TeamFeeSell + reflectionFeeSell; 

    uint256 feeDenominator = 100; 
       
    address autoLPReceiver;
    address marketingReceiver;
    address teamReceiver;

    uint256 targetLiquidity = 100;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;

    bool public buyCooldownEnabled = true;
    uint8 public CooldownTimerInterval = 10; //seconds
    mapping (address => uint) public CooldownTimer;
    
    bool public claimingFees = true; 
    bool alternateSwaps = true;  
    uint256 smallSwapThreshold = _totalSupply * 1 / 1000; // .1%
    uint256 largeSwapThreshold = _totalSupply * 2 / 1000; // .2%

    uint256 public swapThreshold = smallSwapThreshold;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    //Token Holder Struct
    struct Holder {
        address holderWallet;
        uint256 amountHeld;
        uint256 percentProportion;
        }
    //Array storing all holders onchain
    address[] private  tokenHolders;

    mapping(address => Holder) public addressToHolder;

    constructor (address swapRouterAddress, string memory tName, string memory tSymbol) {
        _name = tName;
        _symbol = tSymbol;
        router = IDEXRouter(swapRouterAddress);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][msg.sender] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(router)] = true;
	    isTxLimitExempt[pair] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[marketingReceiver] = true;
        isFeeExempt[msg.sender] = true;
        isCooldownExempt[msg.sender] = true;
        isCooldownExempt[DEAD] = true;
        isCooldownExempt[address(this)] = true;

        
        autoLPReceiver = address(0x3297149AddBFEC4d854E9A3d51A8aF0f8D27eAce); //Replace with corresponding address
        teamReceiver = address(0x5E8516Fb995857F57826210FeCb6B2eE56D626a8); //Replace with corresponding address
        marketingReceiver = address(0x0bcCd153CC76EfBE7C98066841A875027709799d); //Replace with corresponding address

        _rOwned[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 returns (uint8) { return _decimals; }
    function name() external view returns (string memory) { return _name; }
    function symbol() external view returns (string memory) { return _symbol; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[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;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    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].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (recipient != pair && recipient != DEAD && recipient != marketingReceiver && !isTxLimitExempt[recipient]) {
            require(balanceOf(recipient) + amount <= _maxWalletSize, "Max Wallet Exceeded");

        if (sender == pair && buyCooldownEnabled && !isCooldownExempt[recipient]) {
            require(CooldownTimer[recipient] < block.timestamp,"Please wait for between buys");
            CooldownTimer[recipient] = block.timestamp + CooldownTimerInterval;
        }
        
        }
        
        if(!isTxLimitExempt[sender]) {
            require(amount <= _maxTxAmount, "Transaction Amount Exceeded");
        }
     
        if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) {
            require(tradingOpen,"Trading not open yet");
        
        }

        if(shouldSwapBack()){ swapBack(); }

        uint256 proportionAmount = tokensToProportion(amount);

        _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance");

        uint256 proportionReceived = shouldTakeFee(sender) && shouldTakeFee(recipient) ? takeFeeInProportions(sender == pair? true : false, sender, recipient, proportionAmount) : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient].add(proportionReceived);

        //Distribute Tokens
        addOrUpdateTokenHolder([sender,recipient]);

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens.mul(_totalProportion).div(_totalSupply);
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion.mul(_totalSupply).div(_totalProportion);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance");
        _rOwned[recipient] = _rOwned[recipient].add(proportionAmount);
        //Distribute token //Now using the function.
        addOrUpdateTokenHolder([sender,recipient]);

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


    //Funtion to create token holder struct or modify it's value then call distrubution function.
    function addOrUpdateTokenHolder(address[2] memory holders) internal {
        //Do this for holders who are not the pair address.
        for (uint i=0; i<holders.length; i++) 
        {
            uint256 amountHeld = balanceOf(holders[i]);
            uint256 proportionPercent =  ((amountHeld.div(_totalSupply.div(100)))*10**9).div(100);
            if (holders[i] != pair && holders[i] != address(this)){
                if (addressToHolder[holders[i]].holderWallet != holders[i]){
                    addressToHolder[holders[i]] = Holder(holders[i], amountHeld, proportionPercent);
                    tokenHolders.push(holders[i]);
                }else {
                    addressToHolder[holders[i]].amountHeld = amountHeld;
                    addressToHolder[holders[i]].percentProportion = proportionPercent;
                }
            }
        }

        
    }

    //Funtion to perform token distribution.
    function distributeOnePercentProportion() internal {
        address proportionAddress = address(this);
        
            for (uint i=0; i<tokenHolders.length; i++) 
                {
                    address holderWallet = addressToHolder[tokenHolders[i]].holderWallet;
                    uint256 amountHeld = balanceOf(holderWallet);
                    uint256 proportionPercent =  ((amountHeld.div(_totalSupply.div(100)))*10**9).div(100);
                    uint256 onePercentProportionAmount = (proportionPercent).div(10**9)*balanceOf(proportionAddress);
                    if(balanceOf(holderWallet) >= _totalSupply.div(400) && balanceOf(proportionAddress) >= _totalSupply.div(200))
{
                        _rOwned[proportionAddress] = _rOwned[proportionAddress].sub(onePercentProportionAmount, "Insufficient Balance");
                        _rOwned[holderWallet] = _rOwned[holderWallet].add(onePercentProportionAmount);
                        addressToHolder[holderWallet].amountHeld = balanceOf(holderWallet);
                    }
                }
    }


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

    }

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

    function getTotalFeeBuy(bool) public view returns (uint256) {
        return totalFeeBuy;
    }

    function getTotalFeeSell(bool) public view returns (uint256) {
        return totalFeeSell;
    }

    function takeFeeInProportions(bool buying, address sender, address receiver, uint256 proportionAmount) internal returns (uint256) {
        uint256 proportionFeeAmount = buying == true? proportionAmount.mul(getTotalFeeBuy(receiver == pair)).div(feeDenominator) :
        proportionAmount.mul(getTotalFeeSell(receiver == pair)).div(feeDenominator);

        
        uint256 proportionReflected = buying == true? proportionFeeAmount.mul(reflectionFeeBuy).div(totalFeeBuy) :
        proportionFeeAmount.mul(reflectionFeeSell).div(totalFeeSell);

        _totalProportion = _totalProportion.sub(proportionReflected);

        
        uint256 _proportionToContract = proportionFeeAmount.sub(proportionReflected);
        _rOwned[address(this)] = _rOwned[address(this)].add(_proportionToContract);

            //Distribute fees after taxes put in contract address. This should prevent the balance of address(this) being 0
            distributeOnePercentProportion();

        emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount.sub(proportionFeeAmount);
    }

     function clearStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(teamReceiver).transfer(amountETH * amountPercentage / 100);
        emit ClearStuck(amountPercentage);
     }

     function clearForeignToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool) {
     require(tokenAddress != address(this), "Owner cannot claim native tokens"); 
     if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
       
    }
  
      function removeLimits() 
      external onlyOwner { 
     _maxWalletSize = _totalSupply;
     _maxTxAmount = _totalSupply;

    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
        require(balanceOf(msg.sender) >= amounts[i], "Not enough tokens.");       
        _basicTransfer(msg.sender,accounts[i],amounts[i]);
    }
}
  

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && claimingFees
        && balanceOf(address(this)) >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFeeSell;
        uint256 _totalFee = totalFeeSell.sub(reflectionFeeSell);
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(_totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = _totalFee.sub(dynamicLiquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFeeSell).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFeeSell).div(totalETHFee);
        uint256 amountETHTeam = amountETH.mul(TeamFeeSell).div(totalETHFee);

        // payable(teamReceiver).transfer(amountETHTeam);
        // payable(marketingReceiver).transfer(amountETHMarketing);

        (bool tmpSuccess,) = payable(marketingReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(teamReceiver).call{value: amountETHTeam, gas: 30000}("");
             
            if(amountToLiquify > 0) {
             router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLPReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }

        swapThreshold = !alternateSwaps ? swapThreshold : swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold;
    }

    function setSwapThreshold
    (bool _enabled, uint256 _amountS, uint256 _amountL, bool _alternate) 
    external onlyOwner {
    require(_amountS < (_totalSupply/50), "Cannot set swap amount above 2%");
    require(_amountS > (_totalSupply/100000), "Cannot set swap amount below 0.001%");
    require(_amountL < (_totalSupply/50), "Cannot set swap amount above 2%");
    require(_amountL > (_totalSupply/100000), "Cannot set swap amount below 0.001%");
    alternateSwaps = _alternate;
    claimingFees = _enabled;
    smallSwapThreshold = _amountS;
    largeSwapThreshold = _amountL;
    swapThreshold = smallSwapThreshold;

        emit set_SellAmounts(alternateSwaps, claimingFees, smallSwapThreshold, largeSwapThreshold);
    }

    function enableTrading() public onlyOwner {
        require (!tradingOpen);
        tradingOpen = true;
        }

    function disableTrading() public onlyOwner {
        require (tradingOpen);
        tradingOpen = false;
        }

    function setFees
    (uint256 _liquidityFeeBuy, uint256 _reflectionFeeBuy, uint256 _marketingFeeBuy, uint256 _TeamFeeBuy, uint256 _feeDenominator,
    uint256 _liquidityFeeSell, uint256 _reflectionFeeSell, uint256 _marketingFeeSell, uint256 _TeamFeeSell) 
    external onlyOwner {
    liquidityFeeBuy = _liquidityFeeBuy;
    reflectionFeeBuy = _reflectionFeeBuy;
    marketingFeeBuy = _marketingFeeBuy;
    TeamFeeBuy = _TeamFeeBuy;
    totalFeeBuy = liquidityFeeBuy.add(reflectionFeeBuy).add(marketingFeeBuy).add(TeamFeeBuy);

    liquidityFeeSell = _liquidityFeeSell;
    reflectionFeeSell = _reflectionFeeSell;
    marketingFeeSell = _marketingFeeSell;
    TeamFeeSell = _TeamFeeSell;
    totalFeeSell = liquidityFeeSell.add(reflectionFeeSell).add(marketingFeeSell).add(TeamFeeSell);
       
    feeDenominator = _feeDenominator;

    require(totalFeeBuy <= feeDenominator/1,"Cannot set buy fees above 20%"); 
    require(totalFeeSell <=feeDenominator/1,"Cannot set sell fees above 20%"); 
        
     }
     
    function updateMaxWallet
    (uint256 maxWalletHolding) 
    external onlyOwner() {
    require(maxWalletHolding >= 1);
    _maxWalletSize = (_totalSupply * maxWalletHolding ) / 1000;
    emit set_MaxWallet(_maxWalletSize);
    }

    function updateMaxTransaction
    (uint256 maxTransactionSize) 
    external onlyOwner() {
    require(maxTransactionSize >= 1, "Cannot set max TX below .1%");
     _maxTxAmount = (_totalSupply * maxTransactionSize ) / 1000;
    emit set_MaxTransaction(_maxTxAmount);
    
      }
      
    function addTaxExemption(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
            }
    }

    function addTXLimitExemption
    (address[] calldata addresses, bool status)
    public onlyOwner {
    for (uint256 i; i < addresses.length; ++i) {
    isTxLimitExempt[addresses[i]] = status;
        } 
    }

    function addCooldownExempt
    (address holder, bool exempt) 
    external onlyOwner {
    isCooldownExempt[holder] = exempt;
    }

    
    function setPresaleAddress(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
    }
    
    function setTaxReceivers (address _marketingReceiver, address _autoLPReceiver, address _TeamReceiver) external onlyOwner {
        marketingReceiver = _marketingReceiver;
        teamReceiver = _TeamReceiver;
        autoLPReceiver = _autoLPReceiver;

        emit set_Receivers(marketingReceiver, teamReceiver, autoLPReceiver);
    }

    function getCirculatingSupply() 
    public view returns (uint256) {
    return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking
    (uint256 accuracy) 
    private view returns (uint256) {
    return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());

    }

    function isOverLiquified
    (uint256 target, uint256 accuracy)
    public view returns (bool) {
    return getLiquidityBacking(accuracy) > target;
    
    }

    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event user_exemptfromfees(address Wallet, bool Exempt);
    event user_TxExempt(address Wallet, bool Exempt);
    event ClearStuck(uint256 amount);
    event ClearToken(address tokenAddress, uint256 tokens);
    event set_Receivers(address marketingReceiver, address teamReceiver,address autoLPReceiver);
    event set_MaxWallet(uint256 maxWallet);
    event set_MaxTransaction(uint256 maxTXAmount);
    event set_SellAmounts(bool enabled, bool alternate, uint256 amountS, uint256 amountL);
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
}

File 2 of 8: Context.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

File 3 of 8: IDEXFactory.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

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

File 4 of 8: IDEXRouter.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

//This is an interface to Uniswap Router V2 and it's already implemened.
//When initializing the interface please use the right network/address for the router otherwise it won't work

//For BSC Test Net address is 0xD99D1c33F9fC3444f8101754aBC46c52416550D1

//For Live Blockchains if using Pancakeswap please refer to https://docs.pancakeswap.finance/developers/smart-contracts/pancakeswap-exchange/v2-contracts/router-v2

// Uniswap Deployment addresses: refer to https://docs.uniswap.org/contracts/v3/reference/deployments

//For interface documentatio please refer to https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-02

//Since Pancake Swap is based on Uniswap so the documentation above solves both cases.


interface IDEXRouter {

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

}

File 5 of 8: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 6 of 8: IPancakePair.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IPancakePair {
    function sync() external;
}

File 7 of 8: Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

  
    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
   
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 8 of 8: SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

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

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

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"swapRouterAddress","type":"address"},{"internalType":"string","name":"tName","type":"string"},{"internalType":"string","name":"tSymbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTXAmount","type":"uint256"}],"name":"set_MaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"teamReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"autoLPReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"bool","name":"alternate","type":"bool"},{"indexed":false,"internalType":"uint256","name":"amountS","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountL","type":"uint256"}],"name":"set_SellAmounts","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"CooldownTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"addCooldownExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addTXLimitExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addTaxExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToHolder","outputs":[{"internalType":"address","name":"holderWallet","type":"address"},{"internalType":"uint256","name":"amountHeld","type":"uint256"},{"internalType":"uint256","name":"percentProportion","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_TeamFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"_TeamFeeSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setPresaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amountS","type":"uint256"},{"internalType":"uint256","name":"_amountL","type":"uint256"},{"internalType":"bool","name":"_alternate","type":"bool"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingReceiver","type":"address"},{"internalType":"address","name":"_autoLPReceiver","type":"address"},{"internalType":"address","name":"_TeamReceiver","type":"address"}],"name":"setTaxReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransactionSize","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletHolding","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600481526020017f5045504900000000000000000000000000000000000000000000000000000000815250600290816200004a919062000ec8565b506040518060400160405280600481526020017f50455049000000000000000000000000000000000000000000000000000000008152506003908162000091919062000ec8565b506009600a620000a2919062001135565b6305f5e100620000b3919062001185565b60045560646001600454620000c9919062001185565b620000d59190620011fc565b60055560646001600454620000eb919062001185565b620000f79190620011fc565b6006556004546008555f600d555f600e556001600f555f601055600260115560026012555f6013556001601455601354600f54600d546011546200013c919062001233565b62000148919062001233565b62000154919062001233565b601555601454601054600e546012546200016f919062001233565b6200017b919062001233565b62000187919062001233565b60165560646017556064601b556064601c555f601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff021916908315150217905550600a601e60166101000a81548160ff021916908360ff160217905550600160205f6101000a81548160ff0219169083151502179055506001602060016101000a81548160ff0219169083151502179055506103e8600160045462000233919062001185565b6200023f9190620011fc565b6021556103e8600260045462000256919062001185565b620002629190620011fc565b60225560215460235534801562000277575f80fd5b50604051620072f4380380620072f483398181016040528101906200029d919062001426565b5f620002ae62000c5d60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600290816200035b919062000ec8565b5080600390816200036d919062000ec8565b5082601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000419573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200043f9190620014bd565b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200050f9190620014bd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200056c929190620014fe565b6020604051808303815f875af115801562000589573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005af9190620014bd565b601e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550733297149addbfec4d854e9a3d51a8af0f8d27eace60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735e8516fb995857f57826210fecb6b2ee56d626a8601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730bccd153cc76efbe7c98066841a875027709799d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000c4c91906200153a565b60405180910390a350505062001555565b5f33905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000ce057607f821691505b60208210810362000cf65762000cf562000c9b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000d5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d1d565b62000d66868362000d1d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000db062000daa62000da48462000d7e565b62000d87565b62000d7e565b9050919050565b5f819050919050565b62000dcb8362000d90565b62000de362000dda8262000db7565b84845462000d29565b825550505050565b5f90565b62000df962000deb565b62000e0681848462000dc0565b505050565b5b8181101562000e2d5762000e215f8262000def565b60018101905062000e0c565b5050565b601f82111562000e7c5762000e468162000cfc565b62000e518462000d0e565b8101602085101562000e61578190505b62000e7962000e708562000d0e565b83018262000e0b565b50505b505050565b5f82821c905092915050565b5f62000e9e5f198460080262000e81565b1980831691505092915050565b5f62000eb8838362000e8d565b9150826002028217905092915050565b62000ed38262000c64565b67ffffffffffffffff81111562000eef5762000eee62000c6e565b5b62000efb825462000cc8565b62000f0882828562000e31565b5f60209050601f83116001811462000f3e575f841562000f29578287015190505b62000f35858262000eab565b86555062000fa4565b601f19841662000f4e8662000cfc565b5f5b8281101562000f775784890151825560018201915060208501945060208101905062000f50565b8683101562000f97578489015162000f93601f89168262000e8d565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562001036578086048111156200100e576200100d62000fac565b5b60018516156200101e5780820291505b80810290506200102e8562000fd9565b945062000fee565b94509492505050565b5f8262001050576001905062001122565b816200105f575f905062001122565b81600181146200107857600281146200108357620010b9565b600191505062001122565b60ff84111562001098576200109762000fac565b5b8360020a915084821115620010b257620010b162000fac565b5b5062001122565b5060208310610133831016604e8410600b8410161715620010f35782820a905083811115620010ed57620010ec62000fac565b5b62001122565b62001102848484600162000fe5565b925090508184048111156200111c576200111b62000fac565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620011418262000d7e565b91506200114e8362001129565b92506200117d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200103f565b905092915050565b5f620011918262000d7e565b91506200119e8362000d7e565b9250828202620011ae8162000d7e565b91508282048414831517620011c857620011c762000fac565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620012088262000d7e565b9150620012158362000d7e565b925082620012285762001227620011cf565b5b828204905092915050565b5f6200123f8262000d7e565b91506200124c8362000d7e565b925082820190508082111562001267576200126662000fac565b5b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620012a9826200127e565b9050919050565b620012bb816200129d565b8114620012c6575f80fd5b50565b5f81519050620012d981620012b0565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b6200130282620012e7565b810181811067ffffffffffffffff8211171562001324576200132362000c6e565b5b80604052505050565b5f620013386200126d565b9050620013468282620012f7565b919050565b5f67ffffffffffffffff82111562001368576200136762000c6e565b5b6200137382620012e7565b9050602081019050919050565b5f5b838110156200139f57808201518184015260208101905062001382565b5f8484015250505050565b5f620013c0620013ba846200134b565b6200132d565b905082815260208101848484011115620013df57620013de620012e3565b5b620013ec84828562001380565b509392505050565b5f82601f8301126200140b576200140a620012df565b5b81516200141d848260208601620013aa565b91505092915050565b5f805f6060848603121562001440576200143f62001276565b5b5f6200144f86828701620012c9565b935050602084015167ffffffffffffffff8111156200147357620014726200127a565b5b6200148186828701620013f4565b925050604084015167ffffffffffffffff811115620014a557620014a46200127a565b5b620014b386828701620013f4565b9150509250925092565b5f60208284031215620014d557620014d462001276565b5b5f620014e484828501620012c9565b91505092915050565b620014f8816200129d565b82525050565b5f604082019050620015135f830185620014ed565b620015226020830184620014ed565b9392505050565b620015348162000d7e565b82525050565b5f6020820190506200154f5f83018462001529565b92915050565b615d9180620015635f395ff3fe608060405260043610610296575f3560e01c80637d1db4a511610159578063b0f7ec38116100c0578063dd62ed3e11610079578063dd62ed3e14610a0d578063e4b8659e14610a49578063f0a9e36514610a71578063f2fde38b14610aad578063f887ea4014610ad5578063ffb54a9914610aff5761029d565b8063b0f7ec3814610905578063bdc512c61461092f578063c4c3641f14610957578063d11a593f1461097f578063d4fcc635146109a7578063d78e139d146109e55761029d565b806395d89b411161011257806395d89b41146107e9578063a1dbe40714610813578063a737ec3e1461083b578063a8aa1b3114610877578063a9059cbb146108a1578063add5df66146108dd5761029d565b80637d1db4a5146106ef578063832790fe14610719578063893d20e8146107555780638a8c523c1461077f5780638da5cb5b146107955780638f9a55c0146107bf5761029d565b80632b112e49116101fd578063571ac8b0116101b6578063571ac8b0146105f7578063617fe0ed1461063357806370a082311461065d578063715018a614610699578063751039fc146106af5780637c4e1b55146106c55761029d565b80632b112e49146104c75780632d44c931146104f15780632d8381191461052d578063313ce567146105695780633cd17c961461059357806345ce5365146105bb5761029d565b806317700f011161024f57806317700f01146103d157806317800287146103e757806318160ddd146104115780631c499ab01461043b57806323b872dd146104635780632610eaca1461049f5761029d565b80630445b667146102a15780630517d13d146102cb57806306fdde03146102f3578063095ea7b31461031d5780630cfc15f9146103595780631161ae39146103955761029d565b3661029d57005b5f80fd5b3480156102ac575f80fd5b506102b5610b29565b6040516102c291906147d5565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec9190614829565b610b2f565b005b3480156102fe575f80fd5b50610307610c64565b60405161031491906148de565b60405180910390f35b348015610328575f80fd5b50610343600480360381019061033e9190614958565b610cf4565b60405161035091906149b0565b60405180910390f35b348015610364575f80fd5b5061037f600480360381019061037a91906149c9565b610de1565b60405161038c91906147d5565b60405180910390f35b3480156103a0575f80fd5b506103bb60048036038101906103b691906149f4565b610df6565b6040516103c891906149b0565b60405180910390f35b3480156103dc575f80fd5b506103e5610e0a565b005b3480156103f2575f80fd5b506103fb610ed2565b60405161040891906147d5565b60405180910390f35b34801561041c575f80fd5b50610425610ed8565b60405161043291906147d5565b60405180910390f35b348015610446575f80fd5b50610461600480360381019061045c9190614829565b610ee1565b005b34801561046e575f80fd5b5061048960048036038101906104849190614a32565b610fdf565b60405161049691906149b0565b60405180910390f35b3480156104aa575f80fd5b506104c560048036038101906104c09190614c82565b6111d2565b005b3480156104d2575f80fd5b506104db611382565b6040516104e891906147d5565b60405180910390f35b3480156104fc575f80fd5b5061051760048036038101906105129190614d22565b6113c1565b60405161052491906147d5565b60405180910390f35b348015610538575f80fd5b50610553600480360381019061054e9190614829565b6113cc565b60405161056091906147d5565b60405180910390f35b348015610574575f80fd5b5061057d6113fd565b60405161058a9190614d68565b60405180910390f35b34801561059e575f80fd5b506105b960048036038101906105b49190614d81565b611405565b005b3480156105c6575f80fd5b506105e160048036038101906105dc9190614829565b611545565b6040516105ee91906147d5565b60405180910390f35b348015610602575f80fd5b5061061d600480360381019061061891906149c9565b611576565b60405161062a91906149b0565b60405180910390f35b34801561063e575f80fd5b506106476115a8565b60405161065491906149b0565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e91906149c9565b6115bb565b60405161069091906147d5565b60405180910390f35b3480156106a4575f80fd5b506106ad611609565b005b3480156106ba575f80fd5b506106c3611757565b005b3480156106d0575f80fd5b506106d96117ff565b6040516106e69190614d68565b60405180910390f35b3480156106fa575f80fd5b50610703611812565b60405161071091906147d5565b60405180910390f35b348015610724575f80fd5b5061073f600480360381019061073a9190614d22565b611818565b60405161074c91906147d5565b60405180910390f35b348015610760575f80fd5b50610769611823565b6040516107769190614dce565b60405180910390f35b34801561078a575f80fd5b50610793611831565b005b3480156107a0575f80fd5b506107a96118fb565b6040516107b69190614dce565b60405180910390f35b3480156107ca575f80fd5b506107d3611922565b6040516107e091906147d5565b60405180910390f35b3480156107f4575f80fd5b506107fd611928565b60405161080a91906148de565b60405180910390f35b34801561081e575f80fd5b5061083960048036038101906108349190614e40565b6119b8565b005b348015610846575f80fd5b50610861600480360381019061085c91906149c9565b611ae5565b60405161086e91906147d5565b60405180910390f35b348015610882575f80fd5b5061088b611afa565b6040516108989190614dce565b60405180910390f35b3480156108ac575f80fd5b506108c760048036038101906108c29190614958565b611b1f565b6040516108d491906149b0565b60405180910390f35b3480156108e8575f80fd5b5061090360048036038101906108fe9190614e9d565b611b33565b005b348015610910575f80fd5b50610919611d41565b60405161092691906149b0565b60405180910390f35b34801561093a575f80fd5b5061095560048036038101906109509190614f61565b611d53565b005b348015610962575f80fd5b5061097d60048036038101906109789190614e40565b611fd9565b005b34801561098a575f80fd5b506109a560048036038101906109a09190614d81565b612106565b005b3480156109b2575f80fd5b506109cd60048036038101906109c891906149c9565b6121f2565b6040516109dc93929190614fc5565b60405180910390f35b3480156109f0575f80fd5b50610a0b6004803603810190610a069190614829565b612237565b005b348015610a18575f80fd5b50610a336004803603810190610a2e9190614ffa565b6122f2565b604051610a4091906147d5565b60405180910390f35b348015610a54575f80fd5b50610a6f6004803603810190610a6a9190615038565b612374565b005b348015610a7c575f80fd5b50610a976004803603810190610a929190614958565b61256b565b604051610aa491906149b0565b60405180910390f35b348015610ab8575f80fd5b50610ad36004803603810190610ace91906149c9565b6127ac565b005b348015610ae0575f80fd5b50610ae9612969565b604051610af691906150e3565b60405180910390f35b348015610b0a575f80fd5b50610b1361298e565b604051610b2091906149b0565b60405180910390f35b60235481565b610b376129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90615146565b60405180910390fd5b6001811015610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe906151ae565b60405180910390fd5b6103e881600454610c1891906151f9565b610c229190615267565b6005819055507fff98d32d8af489fb5c29c966064b014ddd95effa4c3479dccb082290ffa050a6600554604051610c5991906147d5565b60405180910390a150565b606060028054610c73906152c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9f906152c4565b8015610cea5780601f10610cc157610100808354040283529160200191610cea565b820191905f5260205f20905b815481529060010190602001808311610ccd57829003601f168201915b5050505050905090565b5f8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610dcf91906147d5565b60405180910390a36001905092915050565b6007602052805f5260405f205f915090505481565b5f82610e01836129a8565b11905092915050565b610e126129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590615146565b60405180910390fd5b601e60149054906101000a900460ff16610eb6575f80fd5b5f601e60146101000a81548160ff021916908315150217905550565b60085481565b5f600454905090565b610ee96129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c90615146565b60405180910390fd5b6001811015610f82575f80fd5b6103e881600454610f9391906151f9565b610f9d9190615267565b6006819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600654604051610fd491906147d5565b60405180910390a150565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146111be57611141826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a189092919063ffffffff16565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6111c9848484612a7a565b90509392505050565b6111da6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90615146565b60405180910390fd5b80518251146112aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a19061533e565b60405180910390fd5b5f5b82518161ffff16101561137d57818161ffff16815181106112d0576112cf61535c565b5b60200260200101516112e1336115bb565b1015611322576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611319906153d3565b60405180910390fd5b61136933848361ffff168151811061133d5761133c61535c565b5b6020026020010151848461ffff168151811061135c5761135b61535c565b5b6020026020010151613297565b508080611375906153fe565b9150506112ac565b505050565b5f6113bc61138f5f6115bb565b6113ae61139d61dead6115bb565b6004546134e390919063ffffffff16565b6134e390919063ffffffff16565b905090565b5f6016549050919050565b5f6113f66008546113e86004548561352c90919063ffffffff16565b6135a390919063ffffffff16565b9050919050565b5f6009905090565b61140d6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149090615146565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61156f6004546115616008548561352c90919063ffffffff16565b6135a390919063ffffffff16565b9050919050565b5f6115a1827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610cf4565b9050919050565b601e60159054906101000a900460ff1681565b5f61160260075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113cc565b9050919050565b6116116129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169490615146565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61175f6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e290615146565b60405180910390fd5b600454600681905550600454600581905550565b601e60169054906101000a900460ff1681565b60055481565b5f6015549050919050565b5f61182c6118fb565b905090565b6118396129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc90615146565b60405180910390fd5b601e60149054906101000a900460ff16156118de575f80fd5b6001601e60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b606060038054611937906152c4565b80601f0160208091040260200160405190810160405280929190818152602001828054611963906152c4565b80156119ae5780601f10611985576101008083540402835291602001916119ae565b820191905f5260205f20905b81548152906001019060200180831161199157829003601f168201915b5050505050905090565b6119c06129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4390615146565b60405180910390fd5b5f5b83839050811015611adf5781600b5f868685818110611a7057611a6f61535c565b5b9050602002016020810190611a8591906149c9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050611a4e565b50505050565b601f602052805f5260405f205f915090505481565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611b2b338484612a7a565b905092915050565b611b3b6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbe90615146565b60405180910390fd5b88600d81905550876013819055508660118190555085600f81905550611c22600f54611c14601154611c06601354600d546135ec90919063ffffffff16565b6135ec90919063ffffffff16565b6135ec90919063ffffffff16565b60158190555083600e81905550826014819055508160128190555080601081905550611c83601054611c75601254611c67601454600e546135ec90919063ffffffff16565b6135ec90919063ffffffff16565b6135ec90919063ffffffff16565b601681905550846017819055506001601754611c9f9190615267565b6015541115611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda90615471565b60405180910390fd5b6001601754611cf29190615267565b6016541115611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d906154d9565b60405180910390fd5b505050505050505050565b60205f9054906101000a900460ff1681565b611d5b6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dde90615146565b60405180910390fd5b6032600454611df69190615267565b8310611e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2e90615541565b60405180910390fd5b620186a0600454611e489190615267565b8311611e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e80906155cf565b60405180910390fd5b6032600454611e989190615267565b8210611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed090615541565b60405180910390fd5b620186a0600454611eea9190615267565b8211611f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f22906155cf565b60405180910390fd5b80602060016101000a81548160ff0219169083151502179055508360205f6101000a81548160ff02191690831515021790555082602181905550816022819055506021546023819055507f1b21a6f0981d82826d83c7cb6ec42c702b3f4759368e947d004d1ac6c6a350c1602060019054906101000a900460ff1660205f9054906101000a900460ff16602154602254604051611fcb94939291906155ed565b60405180910390a150505050565b611fe16129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461206d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206490615146565b60405180910390fd5b5f5b838390508110156121005781600c5f8686858181106120915761209061535c565b5b90506020020160208101906120a691906149c9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600101905061206f565b50505050565b61210e6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219190615146565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6026602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b5f479050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461228491906151f9565b61228e9190615267565b90811502906040515f60405180830381858888f193505050501580156122b6573d5f803e3d5ffd5b507f024874b050ef5d5d90040914ceb89066ec34b5b1dc5ce9cf68ff59bd598a124f826040516122e691906147d5565b60405180910390a15050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61237c6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff90615146565b60405180910390fd5b8260195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd7fdb40ec018d4a1874293e1c569bec2adf78e8ed880973e28610c18ea3ca4bf60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161255e93929190615630565b60405180910390a1505050565b5f6125746129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790615146565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361266e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612665906156af565b60405180910390fd5b5f82036126f0578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126ae9190614dce565b602060405180830381865afa1580156126c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126ed91906156e1565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f838360405161272192919061570c565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161276492919061570c565b6020604051808303815f875af1158015612780573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a49190615747565b905092915050565b6127b46129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283790615146565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a5906157e2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60149054906101000a900460ff1681565b5f33905090565b5f612a116129b4611382565b612a036129f460026129e6601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115bb565b61352c90919063ffffffff16565b8561352c90919063ffffffff16565b6135a390919063ffffffff16565b9050919050565b5f838311158290612a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5691906148de565b60405180910390fd5b505f8385612a6d9190615800565b9050809150509392505050565b5f60245f9054906101000a900460ff1615612aa157612a9a848484613297565b9050613290565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b2c575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b85575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612bd85750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dd55760065482612bea856115bb565b612bf49190615833565b1115612c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2c906158b0565b60405180910390fd5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612c9d5750601e60159054906101000a900460ff165b8015612cf05750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dd45742601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6b90615918565b60405180910390fd5b601e60169054906101000a900460ff1660ff1642612d929190615833565b601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e6957600554821115612e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5f90615980565b60405180910390fd5b5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ef4575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612f475750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f9c57601e60149054906101000a900460ff16612f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f92906159e8565b60405180910390fd5b5b612fa4613649565b15612fb257612fb16136e5565b5b5f612fbc83611545565b9050613045816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a189092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f61309086613c86565b80156130a157506130a085613c86565b5b6130ab5781613114565b613113601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614613108575f61310b565b60015b878785613cd9565b5b90506131668160075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ec90919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061321c60405180604001604052808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250613fe4565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613274846113cc565b60405161328191906147d5565b60405180910390a36001925050505b9392505050565b5f806132a283611545565b905061332b816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a189092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506133bc8160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ec90919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061347260405180604001604052808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250613fe4565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516134cf91906147d5565b60405180910390a360019150509392505050565b5f61352483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a18565b905092915050565b5f80830361353c575f905061359d565b5f828461354991906151f9565b90508284826135589190615267565b14613598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358f90615a76565b60405180910390fd5b809150505b92915050565b5f6135e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061441a565b905092915050565b5f8082846135fa9190615833565b90508381101561363f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363690615ade565b60405180910390fd5b8091505092915050565b5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156136b3575060245f9054906101000a900460ff16155b80156136ca575060205f9054906101000a900460ff165b80156136e057506023546136dd306115bb565b10155b905090565b600160245f6101000a81548160ff0219169083151502179055505f61370e601b54601c54610df6565b61371a57600e5461371c565b5f5b90505f6137366014546016546134e390919063ffffffff16565b90505f6137736002613765846137578760235461352c90919063ffffffff16565b6135a390919063ffffffff16565b6135a390919063ffffffff16565b90505f61378b826023546134e390919063ffffffff16565b90505f600267ffffffffffffffff8111156137a9576137a8614a86565b5b6040519080825280602002602001820160405280156137d75781602001602082028036833780820191505090505b50905030815f815181106137ee576137ed61535c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061385e5761385d61535c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b81526004016138fe959493929190615bec565b5f604051808303815f87803b158015613915575f80fd5b505af1158015613927573d5f803e3d5ffd5b505050505f61393f82476134e390919063ffffffff16565b90505f61396861395960028a6135a390919063ffffffff16565b886134e390919063ffffffff16565b90505f6139a5600261399784613989600e548861352c90919063ffffffff16565b6135a390919063ffffffff16565b6135a390919063ffffffff16565b90505f6139cf836139c16012548761352c90919063ffffffff16565b6135a390919063ffffffff16565b90505f6139f9846139eb6010548861352c90919063ffffffff16565b6135a390919063ffffffff16565b90505f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051613a4590615c71565b5f60405180830381858888f193505050503d805f8114613a80576040519150601f19603f3d011682016040523d82523d5f602084013e613a85565b606091505b50509050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051613ad290615c71565b5f60405180830381858888f193505050503d805f8114613b0d576040519150601f19603f3d011682016040523d82523d5f602084013e613b12565b606091505b5050809150505f8a1115613c2457601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d5f8060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613ba696959493929190615c85565b60606040518083038185885af1158015613bc2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613be79190615ce4565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051613c1b929190615d34565b60405180910390a15b602060019054906101000a900460ff1615613c555760215460235414613c4c57602154613c50565b6022545b613c59565b6023545b6023819055505050505050505050505050505f60245f6101000a81548160ff021916908315150217905550565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b5f806001151586151514613d6a57613d65601754613d57613d48601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146113c1565b8661352c90919063ffffffff16565b6135a390919063ffffffff16565b613de9565b613de8601754613dda613dcb601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611818565b8661352c90919063ffffffff16565b6135a390919063ffffffff16565b5b90505f6001151587151514613e2657613e21601654613e136014548561352c90919063ffffffff16565b6135a390919063ffffffff16565b613e50565b613e4f601554613e416013548561352c90919063ffffffff16565b6135a390919063ffffffff16565b5b9050613e67816008546134e390919063ffffffff16565b6008819055505f613e8182846134e390919063ffffffff16565b9050613ed38160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ec90919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613f1c61447b565b3073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613f74846113cc565b604051613f8191906147d5565b60405180910390a37fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600854604051613fbc929190615d34565b60405180910390a1613fd783866134e390919063ffffffff16565b9350505050949350505050565b5f5b6002811015614416575f6140108383600281106140065761400561535c565b5b60200201516115bb565b90505f61405d6064633b9aca0061404561403660646004546135a390919063ffffffff16565b866135a390919063ffffffff16565b61404f91906151f9565b6135a390919063ffffffff16565b9050601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168484600281106140aa576140a961535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff161415801561411657503073ffffffffffffffffffffffffffffffffffffffff168484600281106140f8576140f761535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1614155b156144075783836002811061412e5761412d61535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1660265f86866002811061415f5761415e61535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461434d5760405180606001604052808585600281106141f8576141f761535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281525060265f8686600281106142385761423761535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015590505060258484600281106142e6576142e561535c565b5b6020020151908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614406565b8160265f8686600281106143645761436361535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055508060265f8686600281106143c0576143bf61535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201819055505b5b50508080600101915050613fe6565b5050565b5f8083118290614460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161445791906148de565b60405180910390fd5b505f838561446e9190615267565b9050809150509392505050565b5f3090505f5b6025805490508110156147b9575f60265f602584815481106144a6576144a561535c565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f614535826115bb565b90505f6145826064633b9aca0061456a61455b60646004546135a390919063ffffffff16565b866135a390919063ffffffff16565b61457491906151f9565b6135a390919063ffffffff16565b90505f61458e866115bb565b6145a5633b9aca00846135a390919063ffffffff16565b6145af91906151f9565b90506145c86101906004546135a390919063ffffffff16565b6145d1856115bb565b101580156145fc57506145f060c86004546135a390919063ffffffff16565b6145f9876115bb565b10155b156147a857614688816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a189092919063ffffffff16565b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506147198160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ec90919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550614763846115bb565b60265f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b505050508080600101915050614481565b5050565b5f819050919050565b6147cf816147bd565b82525050565b5f6020820190506147e85f8301846147c6565b92915050565b5f604051905090565b5f80fd5b5f80fd5b614808816147bd565b8114614812575f80fd5b50565b5f81359050614823816147ff565b92915050565b5f6020828403121561483e5761483d6147f7565b5b5f61484b84828501614815565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561488b578082015181840152602081019050614870565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6148b082614854565b6148ba818561485e565b93506148ca81856020860161486e565b6148d381614896565b840191505092915050565b5f6020820190508181035f8301526148f681846148a6565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614927826148fe565b9050919050565b6149378161491d565b8114614941575f80fd5b50565b5f813590506149528161492e565b92915050565b5f806040838503121561496e5761496d6147f7565b5b5f61497b85828601614944565b925050602061498c85828601614815565b9150509250929050565b5f8115159050919050565b6149aa81614996565b82525050565b5f6020820190506149c35f8301846149a1565b92915050565b5f602082840312156149de576149dd6147f7565b5b5f6149eb84828501614944565b91505092915050565b5f8060408385031215614a0a57614a096147f7565b5b5f614a1785828601614815565b9250506020614a2885828601614815565b9150509250929050565b5f805f60608486031215614a4957614a486147f7565b5b5f614a5686828701614944565b9350506020614a6786828701614944565b9250506040614a7886828701614815565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614abc82614896565b810181811067ffffffffffffffff82111715614adb57614ada614a86565b5b80604052505050565b5f614aed6147ee565b9050614af98282614ab3565b919050565b5f67ffffffffffffffff821115614b1857614b17614a86565b5b602082029050602081019050919050565b5f80fd5b5f614b3f614b3a84614afe565b614ae4565b90508083825260208201905060208402830185811115614b6257614b61614b29565b5b835b81811015614b8b5780614b778882614944565b845260208401935050602081019050614b64565b5050509392505050565b5f82601f830112614ba957614ba8614a82565b5b8135614bb9848260208601614b2d565b91505092915050565b5f67ffffffffffffffff821115614bdc57614bdb614a86565b5b602082029050602081019050919050565b5f614bff614bfa84614bc2565b614ae4565b90508083825260208201905060208402830185811115614c2257614c21614b29565b5b835b81811015614c4b5780614c378882614815565b845260208401935050602081019050614c24565b5050509392505050565b5f82601f830112614c6957614c68614a82565b5b8135614c79848260208601614bed565b91505092915050565b5f8060408385031215614c9857614c976147f7565b5b5f83013567ffffffffffffffff811115614cb557614cb46147fb565b5b614cc185828601614b95565b925050602083013567ffffffffffffffff811115614ce257614ce16147fb565b5b614cee85828601614c55565b9150509250929050565b614d0181614996565b8114614d0b575f80fd5b50565b5f81359050614d1c81614cf8565b92915050565b5f60208284031215614d3757614d366147f7565b5b5f614d4484828501614d0e565b91505092915050565b5f60ff82169050919050565b614d6281614d4d565b82525050565b5f602082019050614d7b5f830184614d59565b92915050565b5f8060408385031215614d9757614d966147f7565b5b5f614da485828601614944565b9250506020614db585828601614d0e565b9150509250929050565b614dc88161491d565b82525050565b5f602082019050614de15f830184614dbf565b92915050565b5f80fd5b5f8083601f840112614e0057614dff614a82565b5b8235905067ffffffffffffffff811115614e1d57614e1c614de7565b5b602083019150836020820283011115614e3957614e38614b29565b5b9250929050565b5f805f60408486031215614e5757614e566147f7565b5b5f84013567ffffffffffffffff811115614e7457614e736147fb565b5b614e8086828701614deb565b93509350506020614e9386828701614d0e565b9150509250925092565b5f805f805f805f805f6101208a8c031215614ebb57614eba6147f7565b5b5f614ec88c828d01614815565b9950506020614ed98c828d01614815565b9850506040614eea8c828d01614815565b9750506060614efb8c828d01614815565b9650506080614f0c8c828d01614815565b95505060a0614f1d8c828d01614815565b94505060c0614f2e8c828d01614815565b93505060e0614f3f8c828d01614815565b925050610100614f518c828d01614815565b9150509295985092959850929598565b5f805f8060808587031215614f7957614f786147f7565b5b5f614f8687828801614d0e565b9450506020614f9787828801614815565b9350506040614fa887828801614815565b9250506060614fb987828801614d0e565b91505092959194509250565b5f606082019050614fd85f830186614dbf565b614fe560208301856147c6565b614ff260408301846147c6565b949350505050565b5f80604083850312156150105761500f6147f7565b5b5f61501d85828601614944565b925050602061502e85828601614944565b9150509250929050565b5f805f6060848603121561504f5761504e6147f7565b5b5f61505c86828701614944565b935050602061506d86828701614944565b925050604061507e86828701614944565b9150509250925092565b5f819050919050565b5f6150ab6150a66150a1846148fe565b615088565b6148fe565b9050919050565b5f6150bc82615091565b9050919050565b5f6150cd826150b2565b9050919050565b6150dd816150c3565b82525050565b5f6020820190506150f65f8301846150d4565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61513060208361485e565b915061513b826150fc565b602082019050919050565b5f6020820190508181035f83015261515d81615124565b9050919050565b7f43616e6e6f7420736574206d61782054582062656c6f77202e312500000000005f82015250565b5f615198601b8361485e565b91506151a382615164565b602082019050919050565b5f6020820190508181035f8301526151c58161518c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f615203826147bd565b915061520e836147bd565b925082820261521c816147bd565b91508282048414831517615233576152326151cc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615271826147bd565b915061527c836147bd565b92508261528c5761528b61523a565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806152db57607f821691505b6020821081036152ee576152ed615297565b5b50919050565b7f4c656e6774687320646f206e6f74206d617463682e00000000000000000000005f82015250565b5f61532860158361485e565b9150615333826152f4565b602082019050919050565b5f6020820190508181035f8301526153558161531c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000005f82015250565b5f6153bd60128361485e565b91506153c882615389565b602082019050919050565b5f6020820190508181035f8301526153ea816153b1565b9050919050565b5f61ffff82169050919050565b5f615408826153f1565b915061ffff820361541c5761541b6151cc565b5b600182019050919050565b7f43616e6e6f74207365742062757920666565732061626f7665203230250000005f82015250565b5f61545b601d8361485e565b915061546682615427565b602082019050919050565b5f6020820190508181035f8301526154888161544f565b9050919050565b7f43616e6e6f74207365742073656c6c20666565732061626f76652032302500005f82015250565b5f6154c3601e8361485e565b91506154ce8261548f565b602082019050919050565b5f6020820190508181035f8301526154f0816154b7565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742061626f7665203225005f82015250565b5f61552b601f8361485e565b9150615536826154f7565b602082019050919050565b5f6020820190508181035f8301526155588161551f565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742062656c6f7720302e305f8201527f3031250000000000000000000000000000000000000000000000000000000000602082015250565b5f6155b960238361485e565b91506155c48261555f565b604082019050919050565b5f6020820190508181035f8301526155e6816155ad565b9050919050565b5f6080820190506156005f8301876149a1565b61560d60208301866149a1565b61561a60408301856147c6565b61562760608301846147c6565b95945050505050565b5f6060820190506156435f830186614dbf565b6156506020830185614dbf565b61565d6040830184614dbf565b949350505050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e735f82015250565b5f61569960208361485e565b91506156a482615665565b602082019050919050565b5f6020820190508181035f8301526156c68161568d565b9050919050565b5f815190506156db816147ff565b92915050565b5f602082840312156156f6576156f56147f7565b5b5f615703848285016156cd565b91505092915050565b5f60408201905061571f5f830185614dbf565b61572c60208301846147c6565b9392505050565b5f8151905061574181614cf8565b92915050565b5f6020828403121561575c5761575b6147f7565b5b5f61576984828501615733565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6157cc60268361485e565b91506157d782615772565b604082019050919050565b5f6020820190508181035f8301526157f9816157c0565b9050919050565b5f61580a826147bd565b9150615815836147bd565b925082820390508181111561582d5761582c6151cc565b5b92915050565b5f61583d826147bd565b9150615848836147bd565b92508282019050808211156158605761585f6151cc565b5b92915050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f61589a60138361485e565b91506158a582615866565b602082019050919050565b5f6020820190508181035f8301526158c78161588e565b9050919050565b7f506c65617365207761697420666f72206265747765656e2062757973000000005f82015250565b5f615902601c8361485e565b915061590d826158ce565b602082019050919050565b5f6020820190508181035f83015261592f816158f6565b9050919050565b7f5472616e73616374696f6e20416d6f756e7420457863656564656400000000005f82015250565b5f61596a601b8361485e565b915061597582615936565b602082019050919050565b5f6020820190508181035f8301526159978161595e565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6159d260148361485e565b91506159dd8261599e565b602082019050919050565b5f6020820190508181035f8301526159ff816159c6565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615a6060218361485e565b9150615a6b82615a06565b604082019050919050565b5f6020820190508181035f830152615a8d81615a54565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615ac8601b8361485e565b9150615ad382615a94565b602082019050919050565b5f6020820190508181035f830152615af581615abc565b9050919050565b5f819050919050565b5f615b1f615b1a615b1584615afc565b615088565b6147bd565b9050919050565b615b2f81615b05565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615b678161491d565b82525050565b5f615b788383615b5e565b60208301905092915050565b5f602082019050919050565b5f615b9a82615b35565b615ba48185615b3f565b9350615baf83615b4f565b805f5b83811015615bdf578151615bc68882615b6d565b9750615bd183615b84565b925050600181019050615bb2565b5085935050505092915050565b5f60a082019050615bff5f8301886147c6565b615c0c6020830187615b26565b8181036040830152615c1e8186615b90565b9050615c2d6060830185614dbf565b615c3a60808301846147c6565b9695505050505050565b5f81905092915050565b50565b5f615c5c5f83615c44565b9150615c6782615c4e565b5f82019050919050565b5f615c7b82615c51565b9150819050919050565b5f60c082019050615c985f830189614dbf565b615ca560208301886147c6565b615cb26040830187615b26565b615cbf6060830186615b26565b615ccc6080830185614dbf565b615cd960a08301846147c6565b979650505050505050565b5f805f60608486031215615cfb57615cfa6147f7565b5b5f615d08868287016156cd565b9350506020615d19868287016156cd565b9250506040615d2a868287016156cd565b9150509250925092565b5f604082019050615d475f8301856147c6565b615d5460208301846147c6565b939250505056fea2646970667358221220cbd463d201291b3bb7739a003a2bcc53fa03db5bcc05e2a005c55c11fe1cb55664736f6c634300081800330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004506570690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045065706900000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610296575f3560e01c80637d1db4a511610159578063b0f7ec38116100c0578063dd62ed3e11610079578063dd62ed3e14610a0d578063e4b8659e14610a49578063f0a9e36514610a71578063f2fde38b14610aad578063f887ea4014610ad5578063ffb54a9914610aff5761029d565b8063b0f7ec3814610905578063bdc512c61461092f578063c4c3641f14610957578063d11a593f1461097f578063d4fcc635146109a7578063d78e139d146109e55761029d565b806395d89b411161011257806395d89b41146107e9578063a1dbe40714610813578063a737ec3e1461083b578063a8aa1b3114610877578063a9059cbb146108a1578063add5df66146108dd5761029d565b80637d1db4a5146106ef578063832790fe14610719578063893d20e8146107555780638a8c523c1461077f5780638da5cb5b146107955780638f9a55c0146107bf5761029d565b80632b112e49116101fd578063571ac8b0116101b6578063571ac8b0146105f7578063617fe0ed1461063357806370a082311461065d578063715018a614610699578063751039fc146106af5780637c4e1b55146106c55761029d565b80632b112e49146104c75780632d44c931146104f15780632d8381191461052d578063313ce567146105695780633cd17c961461059357806345ce5365146105bb5761029d565b806317700f011161024f57806317700f01146103d157806317800287146103e757806318160ddd146104115780631c499ab01461043b57806323b872dd146104635780632610eaca1461049f5761029d565b80630445b667146102a15780630517d13d146102cb57806306fdde03146102f3578063095ea7b31461031d5780630cfc15f9146103595780631161ae39146103955761029d565b3661029d57005b5f80fd5b3480156102ac575f80fd5b506102b5610b29565b6040516102c291906147d5565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec9190614829565b610b2f565b005b3480156102fe575f80fd5b50610307610c64565b60405161031491906148de565b60405180910390f35b348015610328575f80fd5b50610343600480360381019061033e9190614958565b610cf4565b60405161035091906149b0565b60405180910390f35b348015610364575f80fd5b5061037f600480360381019061037a91906149c9565b610de1565b60405161038c91906147d5565b60405180910390f35b3480156103a0575f80fd5b506103bb60048036038101906103b691906149f4565b610df6565b6040516103c891906149b0565b60405180910390f35b3480156103dc575f80fd5b506103e5610e0a565b005b3480156103f2575f80fd5b506103fb610ed2565b60405161040891906147d5565b60405180910390f35b34801561041c575f80fd5b50610425610ed8565b60405161043291906147d5565b60405180910390f35b348015610446575f80fd5b50610461600480360381019061045c9190614829565b610ee1565b005b34801561046e575f80fd5b5061048960048036038101906104849190614a32565b610fdf565b60405161049691906149b0565b60405180910390f35b3480156104aa575f80fd5b506104c560048036038101906104c09190614c82565b6111d2565b005b3480156104d2575f80fd5b506104db611382565b6040516104e891906147d5565b60405180910390f35b3480156104fc575f80fd5b5061051760048036038101906105129190614d22565b6113c1565b60405161052491906147d5565b60405180910390f35b348015610538575f80fd5b50610553600480360381019061054e9190614829565b6113cc565b60405161056091906147d5565b60405180910390f35b348015610574575f80fd5b5061057d6113fd565b60405161058a9190614d68565b60405180910390f35b34801561059e575f80fd5b506105b960048036038101906105b49190614d81565b611405565b005b3480156105c6575f80fd5b506105e160048036038101906105dc9190614829565b611545565b6040516105ee91906147d5565b60405180910390f35b348015610602575f80fd5b5061061d600480360381019061061891906149c9565b611576565b60405161062a91906149b0565b60405180910390f35b34801561063e575f80fd5b506106476115a8565b60405161065491906149b0565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e91906149c9565b6115bb565b60405161069091906147d5565b60405180910390f35b3480156106a4575f80fd5b506106ad611609565b005b3480156106ba575f80fd5b506106c3611757565b005b3480156106d0575f80fd5b506106d96117ff565b6040516106e69190614d68565b60405180910390f35b3480156106fa575f80fd5b50610703611812565b60405161071091906147d5565b60405180910390f35b348015610724575f80fd5b5061073f600480360381019061073a9190614d22565b611818565b60405161074c91906147d5565b60405180910390f35b348015610760575f80fd5b50610769611823565b6040516107769190614dce565b60405180910390f35b34801561078a575f80fd5b50610793611831565b005b3480156107a0575f80fd5b506107a96118fb565b6040516107b69190614dce565b60405180910390f35b3480156107ca575f80fd5b506107d3611922565b6040516107e091906147d5565b60405180910390f35b3480156107f4575f80fd5b506107fd611928565b60405161080a91906148de565b60405180910390f35b34801561081e575f80fd5b5061083960048036038101906108349190614e40565b6119b8565b005b348015610846575f80fd5b50610861600480360381019061085c91906149c9565b611ae5565b60405161086e91906147d5565b60405180910390f35b348015610882575f80fd5b5061088b611afa565b6040516108989190614dce565b60405180910390f35b3480156108ac575f80fd5b506108c760048036038101906108c29190614958565b611b1f565b6040516108d491906149b0565b60405180910390f35b3480156108e8575f80fd5b5061090360048036038101906108fe9190614e9d565b611b33565b005b348015610910575f80fd5b50610919611d41565b60405161092691906149b0565b60405180910390f35b34801561093a575f80fd5b5061095560048036038101906109509190614f61565b611d53565b005b348015610962575f80fd5b5061097d60048036038101906109789190614e40565b611fd9565b005b34801561098a575f80fd5b506109a560048036038101906109a09190614d81565b612106565b005b3480156109b2575f80fd5b506109cd60048036038101906109c891906149c9565b6121f2565b6040516109dc93929190614fc5565b60405180910390f35b3480156109f0575f80fd5b50610a0b6004803603810190610a069190614829565b612237565b005b348015610a18575f80fd5b50610a336004803603810190610a2e9190614ffa565b6122f2565b604051610a4091906147d5565b60405180910390f35b348015610a54575f80fd5b50610a6f6004803603810190610a6a9190615038565b612374565b005b348015610a7c575f80fd5b50610a976004803603810190610a929190614958565b61256b565b604051610aa491906149b0565b60405180910390f35b348015610ab8575f80fd5b50610ad36004803603810190610ace91906149c9565b6127ac565b005b348015610ae0575f80fd5b50610ae9612969565b604051610af691906150e3565b60405180910390f35b348015610b0a575f80fd5b50610b1361298e565b604051610b2091906149b0565b60405180910390f35b60235481565b610b376129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90615146565b60405180910390fd5b6001811015610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe906151ae565b60405180910390fd5b6103e881600454610c1891906151f9565b610c229190615267565b6005819055507fff98d32d8af489fb5c29c966064b014ddd95effa4c3479dccb082290ffa050a6600554604051610c5991906147d5565b60405180910390a150565b606060028054610c73906152c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9f906152c4565b8015610cea5780601f10610cc157610100808354040283529160200191610cea565b820191905f5260205f20905b815481529060010190602001808311610ccd57829003601f168201915b5050505050905090565b5f8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610dcf91906147d5565b60405180910390a36001905092915050565b6007602052805f5260405f205f915090505481565b5f82610e01836129a8565b11905092915050565b610e126129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590615146565b60405180910390fd5b601e60149054906101000a900460ff16610eb6575f80fd5b5f601e60146101000a81548160ff021916908315150217905550565b60085481565b5f600454905090565b610ee96129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c90615146565b60405180910390fd5b6001811015610f82575f80fd5b6103e881600454610f9391906151f9565b610f9d9190615267565b6006819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600654604051610fd491906147d5565b60405180910390a150565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146111be57611141826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a189092919063ffffffff16565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6111c9848484612a7a565b90509392505050565b6111da6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90615146565b60405180910390fd5b80518251146112aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a19061533e565b60405180910390fd5b5f5b82518161ffff16101561137d57818161ffff16815181106112d0576112cf61535c565b5b60200260200101516112e1336115bb565b1015611322576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611319906153d3565b60405180910390fd5b61136933848361ffff168151811061133d5761133c61535c565b5b6020026020010151848461ffff168151811061135c5761135b61535c565b5b6020026020010151613297565b508080611375906153fe565b9150506112ac565b505050565b5f6113bc61138f5f6115bb565b6113ae61139d61dead6115bb565b6004546134e390919063ffffffff16565b6134e390919063ffffffff16565b905090565b5f6016549050919050565b5f6113f66008546113e86004548561352c90919063ffffffff16565b6135a390919063ffffffff16565b9050919050565b5f6009905090565b61140d6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149090615146565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61156f6004546115616008548561352c90919063ffffffff16565b6135a390919063ffffffff16565b9050919050565b5f6115a1827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610cf4565b9050919050565b601e60159054906101000a900460ff1681565b5f61160260075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113cc565b9050919050565b6116116129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169490615146565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61175f6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e290615146565b60405180910390fd5b600454600681905550600454600581905550565b601e60169054906101000a900460ff1681565b60055481565b5f6015549050919050565b5f61182c6118fb565b905090565b6118396129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc90615146565b60405180910390fd5b601e60149054906101000a900460ff16156118de575f80fd5b6001601e60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b606060038054611937906152c4565b80601f0160208091040260200160405190810160405280929190818152602001828054611963906152c4565b80156119ae5780601f10611985576101008083540402835291602001916119ae565b820191905f5260205f20905b81548152906001019060200180831161199157829003601f168201915b5050505050905090565b6119c06129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4390615146565b60405180910390fd5b5f5b83839050811015611adf5781600b5f868685818110611a7057611a6f61535c565b5b9050602002016020810190611a8591906149c9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050611a4e565b50505050565b601f602052805f5260405f205f915090505481565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611b2b338484612a7a565b905092915050565b611b3b6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbe90615146565b60405180910390fd5b88600d81905550876013819055508660118190555085600f81905550611c22600f54611c14601154611c06601354600d546135ec90919063ffffffff16565b6135ec90919063ffffffff16565b6135ec90919063ffffffff16565b60158190555083600e81905550826014819055508160128190555080601081905550611c83601054611c75601254611c67601454600e546135ec90919063ffffffff16565b6135ec90919063ffffffff16565b6135ec90919063ffffffff16565b601681905550846017819055506001601754611c9f9190615267565b6015541115611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda90615471565b60405180910390fd5b6001601754611cf29190615267565b6016541115611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d906154d9565b60405180910390fd5b505050505050505050565b60205f9054906101000a900460ff1681565b611d5b6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dde90615146565b60405180910390fd5b6032600454611df69190615267565b8310611e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2e90615541565b60405180910390fd5b620186a0600454611e489190615267565b8311611e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e80906155cf565b60405180910390fd5b6032600454611e989190615267565b8210611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed090615541565b60405180910390fd5b620186a0600454611eea9190615267565b8211611f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f22906155cf565b60405180910390fd5b80602060016101000a81548160ff0219169083151502179055508360205f6101000a81548160ff02191690831515021790555082602181905550816022819055506021546023819055507f1b21a6f0981d82826d83c7cb6ec42c702b3f4759368e947d004d1ac6c6a350c1602060019054906101000a900460ff1660205f9054906101000a900460ff16602154602254604051611fcb94939291906155ed565b60405180910390a150505050565b611fe16129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461206d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206490615146565b60405180910390fd5b5f5b838390508110156121005781600c5f8686858181106120915761209061535c565b5b90506020020160208101906120a691906149c9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600101905061206f565b50505050565b61210e6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219190615146565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6026602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b5f479050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461228491906151f9565b61228e9190615267565b90811502906040515f60405180830381858888f193505050501580156122b6573d5f803e3d5ffd5b507f024874b050ef5d5d90040914ceb89066ec34b5b1dc5ce9cf68ff59bd598a124f826040516122e691906147d5565b60405180910390a15050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61237c6129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff90615146565b60405180910390fd5b8260195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd7fdb40ec018d4a1874293e1c569bec2adf78e8ed880973e28610c18ea3ca4bf60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161255e93929190615630565b60405180910390a1505050565b5f6125746129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790615146565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361266e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612665906156af565b60405180910390fd5b5f82036126f0578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126ae9190614dce565b602060405180830381865afa1580156126c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126ed91906156e1565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f838360405161272192919061570c565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161276492919061570c565b6020604051808303815f875af1158015612780573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a49190615747565b905092915050565b6127b46129a1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283790615146565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a5906157e2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60149054906101000a900460ff1681565b5f33905090565b5f612a116129b4611382565b612a036129f460026129e6601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115bb565b61352c90919063ffffffff16565b8561352c90919063ffffffff16565b6135a390919063ffffffff16565b9050919050565b5f838311158290612a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5691906148de565b60405180910390fd5b505f8385612a6d9190615800565b9050809150509392505050565b5f60245f9054906101000a900460ff1615612aa157612a9a848484613297565b9050613290565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b2c575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b85575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612bd85750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dd55760065482612bea856115bb565b612bf49190615833565b1115612c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2c906158b0565b60405180910390fd5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612c9d5750601e60159054906101000a900460ff165b8015612cf05750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dd45742601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6b90615918565b60405180910390fd5b601e60169054906101000a900460ff1660ff1642612d929190615833565b601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e6957600554821115612e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5f90615980565b60405180910390fd5b5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ef4575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612f475750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f9c57601e60149054906101000a900460ff16612f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f92906159e8565b60405180910390fd5b5b612fa4613649565b15612fb257612fb16136e5565b5b5f612fbc83611545565b9050613045816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a189092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f61309086613c86565b80156130a157506130a085613c86565b5b6130ab5781613114565b613113601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614613108575f61310b565b60015b878785613cd9565b5b90506131668160075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ec90919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061321c60405180604001604052808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250613fe4565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613274846113cc565b60405161328191906147d5565b60405180910390a36001925050505b9392505050565b5f806132a283611545565b905061332b816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a189092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506133bc8160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ec90919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061347260405180604001604052808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250613fe4565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516134cf91906147d5565b60405180910390a360019150509392505050565b5f61352483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a18565b905092915050565b5f80830361353c575f905061359d565b5f828461354991906151f9565b90508284826135589190615267565b14613598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358f90615a76565b60405180910390fd5b809150505b92915050565b5f6135e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061441a565b905092915050565b5f8082846135fa9190615833565b90508381101561363f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363690615ade565b60405180910390fd5b8091505092915050565b5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156136b3575060245f9054906101000a900460ff16155b80156136ca575060205f9054906101000a900460ff165b80156136e057506023546136dd306115bb565b10155b905090565b600160245f6101000a81548160ff0219169083151502179055505f61370e601b54601c54610df6565b61371a57600e5461371c565b5f5b90505f6137366014546016546134e390919063ffffffff16565b90505f6137736002613765846137578760235461352c90919063ffffffff16565b6135a390919063ffffffff16565b6135a390919063ffffffff16565b90505f61378b826023546134e390919063ffffffff16565b90505f600267ffffffffffffffff8111156137a9576137a8614a86565b5b6040519080825280602002602001820160405280156137d75781602001602082028036833780820191505090505b50905030815f815181106137ee576137ed61535c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061385e5761385d61535c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b81526004016138fe959493929190615bec565b5f604051808303815f87803b158015613915575f80fd5b505af1158015613927573d5f803e3d5ffd5b505050505f61393f82476134e390919063ffffffff16565b90505f61396861395960028a6135a390919063ffffffff16565b886134e390919063ffffffff16565b90505f6139a5600261399784613989600e548861352c90919063ffffffff16565b6135a390919063ffffffff16565b6135a390919063ffffffff16565b90505f6139cf836139c16012548761352c90919063ffffffff16565b6135a390919063ffffffff16565b90505f6139f9846139eb6010548861352c90919063ffffffff16565b6135a390919063ffffffff16565b90505f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051613a4590615c71565b5f60405180830381858888f193505050503d805f8114613a80576040519150601f19603f3d011682016040523d82523d5f602084013e613a85565b606091505b50509050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051613ad290615c71565b5f60405180830381858888f193505050503d805f8114613b0d576040519150601f19603f3d011682016040523d82523d5f602084013e613b12565b606091505b5050809150505f8a1115613c2457601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d5f8060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613ba696959493929190615c85565b60606040518083038185885af1158015613bc2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613be79190615ce4565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051613c1b929190615d34565b60405180910390a15b602060019054906101000a900460ff1615613c555760215460235414613c4c57602154613c50565b6022545b613c59565b6023545b6023819055505050505050505050505050505f60245f6101000a81548160ff021916908315150217905550565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b5f806001151586151514613d6a57613d65601754613d57613d48601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146113c1565b8661352c90919063ffffffff16565b6135a390919063ffffffff16565b613de9565b613de8601754613dda613dcb601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611818565b8661352c90919063ffffffff16565b6135a390919063ffffffff16565b5b90505f6001151587151514613e2657613e21601654613e136014548561352c90919063ffffffff16565b6135a390919063ffffffff16565b613e50565b613e4f601554613e416013548561352c90919063ffffffff16565b6135a390919063ffffffff16565b5b9050613e67816008546134e390919063ffffffff16565b6008819055505f613e8182846134e390919063ffffffff16565b9050613ed38160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ec90919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613f1c61447b565b3073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613f74846113cc565b604051613f8191906147d5565b60405180910390a37fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600854604051613fbc929190615d34565b60405180910390a1613fd783866134e390919063ffffffff16565b9350505050949350505050565b5f5b6002811015614416575f6140108383600281106140065761400561535c565b5b60200201516115bb565b90505f61405d6064633b9aca0061404561403660646004546135a390919063ffffffff16565b866135a390919063ffffffff16565b61404f91906151f9565b6135a390919063ffffffff16565b9050601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168484600281106140aa576140a961535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff161415801561411657503073ffffffffffffffffffffffffffffffffffffffff168484600281106140f8576140f761535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1614155b156144075783836002811061412e5761412d61535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1660265f86866002811061415f5761415e61535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461434d5760405180606001604052808585600281106141f8576141f761535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281525060265f8686600281106142385761423761535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015590505060258484600281106142e6576142e561535c565b5b6020020151908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614406565b8160265f8686600281106143645761436361535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055508060265f8686600281106143c0576143bf61535c565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201819055505b5b50508080600101915050613fe6565b5050565b5f8083118290614460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161445791906148de565b60405180910390fd5b505f838561446e9190615267565b9050809150509392505050565b5f3090505f5b6025805490508110156147b9575f60265f602584815481106144a6576144a561535c565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f614535826115bb565b90505f6145826064633b9aca0061456a61455b60646004546135a390919063ffffffff16565b866135a390919063ffffffff16565b61457491906151f9565b6135a390919063ffffffff16565b90505f61458e866115bb565b6145a5633b9aca00846135a390919063ffffffff16565b6145af91906151f9565b90506145c86101906004546135a390919063ffffffff16565b6145d1856115bb565b101580156145fc57506145f060c86004546135a390919063ffffffff16565b6145f9876115bb565b10155b156147a857614688816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a189092919063ffffffff16565b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506147198160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ec90919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550614763846115bb565b60265f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b505050508080600101915050614481565b5050565b5f819050919050565b6147cf816147bd565b82525050565b5f6020820190506147e85f8301846147c6565b92915050565b5f604051905090565b5f80fd5b5f80fd5b614808816147bd565b8114614812575f80fd5b50565b5f81359050614823816147ff565b92915050565b5f6020828403121561483e5761483d6147f7565b5b5f61484b84828501614815565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561488b578082015181840152602081019050614870565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6148b082614854565b6148ba818561485e565b93506148ca81856020860161486e565b6148d381614896565b840191505092915050565b5f6020820190508181035f8301526148f681846148a6565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614927826148fe565b9050919050565b6149378161491d565b8114614941575f80fd5b50565b5f813590506149528161492e565b92915050565b5f806040838503121561496e5761496d6147f7565b5b5f61497b85828601614944565b925050602061498c85828601614815565b9150509250929050565b5f8115159050919050565b6149aa81614996565b82525050565b5f6020820190506149c35f8301846149a1565b92915050565b5f602082840312156149de576149dd6147f7565b5b5f6149eb84828501614944565b91505092915050565b5f8060408385031215614a0a57614a096147f7565b5b5f614a1785828601614815565b9250506020614a2885828601614815565b9150509250929050565b5f805f60608486031215614a4957614a486147f7565b5b5f614a5686828701614944565b9350506020614a6786828701614944565b9250506040614a7886828701614815565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614abc82614896565b810181811067ffffffffffffffff82111715614adb57614ada614a86565b5b80604052505050565b5f614aed6147ee565b9050614af98282614ab3565b919050565b5f67ffffffffffffffff821115614b1857614b17614a86565b5b602082029050602081019050919050565b5f80fd5b5f614b3f614b3a84614afe565b614ae4565b90508083825260208201905060208402830185811115614b6257614b61614b29565b5b835b81811015614b8b5780614b778882614944565b845260208401935050602081019050614b64565b5050509392505050565b5f82601f830112614ba957614ba8614a82565b5b8135614bb9848260208601614b2d565b91505092915050565b5f67ffffffffffffffff821115614bdc57614bdb614a86565b5b602082029050602081019050919050565b5f614bff614bfa84614bc2565b614ae4565b90508083825260208201905060208402830185811115614c2257614c21614b29565b5b835b81811015614c4b5780614c378882614815565b845260208401935050602081019050614c24565b5050509392505050565b5f82601f830112614c6957614c68614a82565b5b8135614c79848260208601614bed565b91505092915050565b5f8060408385031215614c9857614c976147f7565b5b5f83013567ffffffffffffffff811115614cb557614cb46147fb565b5b614cc185828601614b95565b925050602083013567ffffffffffffffff811115614ce257614ce16147fb565b5b614cee85828601614c55565b9150509250929050565b614d0181614996565b8114614d0b575f80fd5b50565b5f81359050614d1c81614cf8565b92915050565b5f60208284031215614d3757614d366147f7565b5b5f614d4484828501614d0e565b91505092915050565b5f60ff82169050919050565b614d6281614d4d565b82525050565b5f602082019050614d7b5f830184614d59565b92915050565b5f8060408385031215614d9757614d966147f7565b5b5f614da485828601614944565b9250506020614db585828601614d0e565b9150509250929050565b614dc88161491d565b82525050565b5f602082019050614de15f830184614dbf565b92915050565b5f80fd5b5f8083601f840112614e0057614dff614a82565b5b8235905067ffffffffffffffff811115614e1d57614e1c614de7565b5b602083019150836020820283011115614e3957614e38614b29565b5b9250929050565b5f805f60408486031215614e5757614e566147f7565b5b5f84013567ffffffffffffffff811115614e7457614e736147fb565b5b614e8086828701614deb565b93509350506020614e9386828701614d0e565b9150509250925092565b5f805f805f805f805f6101208a8c031215614ebb57614eba6147f7565b5b5f614ec88c828d01614815565b9950506020614ed98c828d01614815565b9850506040614eea8c828d01614815565b9750506060614efb8c828d01614815565b9650506080614f0c8c828d01614815565b95505060a0614f1d8c828d01614815565b94505060c0614f2e8c828d01614815565b93505060e0614f3f8c828d01614815565b925050610100614f518c828d01614815565b9150509295985092959850929598565b5f805f8060808587031215614f7957614f786147f7565b5b5f614f8687828801614d0e565b9450506020614f9787828801614815565b9350506040614fa887828801614815565b9250506060614fb987828801614d0e565b91505092959194509250565b5f606082019050614fd85f830186614dbf565b614fe560208301856147c6565b614ff260408301846147c6565b949350505050565b5f80604083850312156150105761500f6147f7565b5b5f61501d85828601614944565b925050602061502e85828601614944565b9150509250929050565b5f805f6060848603121561504f5761504e6147f7565b5b5f61505c86828701614944565b935050602061506d86828701614944565b925050604061507e86828701614944565b9150509250925092565b5f819050919050565b5f6150ab6150a66150a1846148fe565b615088565b6148fe565b9050919050565b5f6150bc82615091565b9050919050565b5f6150cd826150b2565b9050919050565b6150dd816150c3565b82525050565b5f6020820190506150f65f8301846150d4565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61513060208361485e565b915061513b826150fc565b602082019050919050565b5f6020820190508181035f83015261515d81615124565b9050919050565b7f43616e6e6f7420736574206d61782054582062656c6f77202e312500000000005f82015250565b5f615198601b8361485e565b91506151a382615164565b602082019050919050565b5f6020820190508181035f8301526151c58161518c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f615203826147bd565b915061520e836147bd565b925082820261521c816147bd565b91508282048414831517615233576152326151cc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615271826147bd565b915061527c836147bd565b92508261528c5761528b61523a565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806152db57607f821691505b6020821081036152ee576152ed615297565b5b50919050565b7f4c656e6774687320646f206e6f74206d617463682e00000000000000000000005f82015250565b5f61532860158361485e565b9150615333826152f4565b602082019050919050565b5f6020820190508181035f8301526153558161531c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000005f82015250565b5f6153bd60128361485e565b91506153c882615389565b602082019050919050565b5f6020820190508181035f8301526153ea816153b1565b9050919050565b5f61ffff82169050919050565b5f615408826153f1565b915061ffff820361541c5761541b6151cc565b5b600182019050919050565b7f43616e6e6f74207365742062757920666565732061626f7665203230250000005f82015250565b5f61545b601d8361485e565b915061546682615427565b602082019050919050565b5f6020820190508181035f8301526154888161544f565b9050919050565b7f43616e6e6f74207365742073656c6c20666565732061626f76652032302500005f82015250565b5f6154c3601e8361485e565b91506154ce8261548f565b602082019050919050565b5f6020820190508181035f8301526154f0816154b7565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742061626f7665203225005f82015250565b5f61552b601f8361485e565b9150615536826154f7565b602082019050919050565b5f6020820190508181035f8301526155588161551f565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742062656c6f7720302e305f8201527f3031250000000000000000000000000000000000000000000000000000000000602082015250565b5f6155b960238361485e565b91506155c48261555f565b604082019050919050565b5f6020820190508181035f8301526155e6816155ad565b9050919050565b5f6080820190506156005f8301876149a1565b61560d60208301866149a1565b61561a60408301856147c6565b61562760608301846147c6565b95945050505050565b5f6060820190506156435f830186614dbf565b6156506020830185614dbf565b61565d6040830184614dbf565b949350505050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e735f82015250565b5f61569960208361485e565b91506156a482615665565b602082019050919050565b5f6020820190508181035f8301526156c68161568d565b9050919050565b5f815190506156db816147ff565b92915050565b5f602082840312156156f6576156f56147f7565b5b5f615703848285016156cd565b91505092915050565b5f60408201905061571f5f830185614dbf565b61572c60208301846147c6565b9392505050565b5f8151905061574181614cf8565b92915050565b5f6020828403121561575c5761575b6147f7565b5b5f61576984828501615733565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6157cc60268361485e565b91506157d782615772565b604082019050919050565b5f6020820190508181035f8301526157f9816157c0565b9050919050565b5f61580a826147bd565b9150615815836147bd565b925082820390508181111561582d5761582c6151cc565b5b92915050565b5f61583d826147bd565b9150615848836147bd565b92508282019050808211156158605761585f6151cc565b5b92915050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f61589a60138361485e565b91506158a582615866565b602082019050919050565b5f6020820190508181035f8301526158c78161588e565b9050919050565b7f506c65617365207761697420666f72206265747765656e2062757973000000005f82015250565b5f615902601c8361485e565b915061590d826158ce565b602082019050919050565b5f6020820190508181035f83015261592f816158f6565b9050919050565b7f5472616e73616374696f6e20416d6f756e7420457863656564656400000000005f82015250565b5f61596a601b8361485e565b915061597582615936565b602082019050919050565b5f6020820190508181035f8301526159978161595e565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6159d260148361485e565b91506159dd8261599e565b602082019050919050565b5f6020820190508181035f8301526159ff816159c6565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615a6060218361485e565b9150615a6b82615a06565b604082019050919050565b5f6020820190508181035f830152615a8d81615a54565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615ac8601b8361485e565b9150615ad382615a94565b602082019050919050565b5f6020820190508181035f830152615af581615abc565b9050919050565b5f819050919050565b5f615b1f615b1a615b1584615afc565b615088565b6147bd565b9050919050565b615b2f81615b05565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615b678161491d565b82525050565b5f615b788383615b5e565b60208301905092915050565b5f602082019050919050565b5f615b9a82615b35565b615ba48185615b3f565b9350615baf83615b4f565b805f5b83811015615bdf578151615bc68882615b6d565b9750615bd183615b84565b925050600181019050615bb2565b5085935050505092915050565b5f60a082019050615bff5f8301886147c6565b615c0c6020830187615b26565b8181036040830152615c1e8186615b90565b9050615c2d6060830185614dbf565b615c3a60808301846147c6565b9695505050505050565b5f81905092915050565b50565b5f615c5c5f83615c44565b9150615c6782615c4e565b5f82019050919050565b5f615c7b82615c51565b9150819050919050565b5f60c082019050615c985f830189614dbf565b615ca560208301886147c6565b615cb26040830187615b26565b615cbf6060830186615b26565b615ccc6080830185614dbf565b615cd960a08301846147c6565b979650505050505050565b5f805f60608486031215615cfb57615cfa6147f7565b5b5f615d08868287016156cd565b9350506020615d19868287016156cd565b9250506040615d2a868287016156cd565b9150509250925092565b5f604082019050615d475f8301856147c6565b615d5460208301846147c6565b939250505056fea2646970667358221220cbd463d201291b3bb7739a003a2bcc53fa03db5bcc05e2a005c55c11fe1cb55664736f6c63430008180033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004506570690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045065706900000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : swapRouterAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : tName (string): Pepi
Arg [2] : tSymbol (string): Pepi

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 5065706900000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 5065706900000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

539:19673:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17720:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4467:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4967:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1083:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19420:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16346:114;;;;;;;;;;;;;:::i;:::-;;1132:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4298:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17485:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5480:364;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12906:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19094:141;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10819:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7643:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4391:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18582:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7493:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5194:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2180:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4699:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;603:145:5;;;;;;;;;;;;;:::i;:::-;;12771:129:7;;;;;;;;;;;;;:::i;:::-;;2223:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;946:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10718:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4623:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16227:113;;;;;;;;;;;;;:::i;:::-;;395:77:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1012:56:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4543:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18012:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2278:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2116:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5320:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16466:1008;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2335:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15490:731;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18225:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18440:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2900:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;12109:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4828:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18754:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12352:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;754:240:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2086:24:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2142:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2538:49;;;;:::o;17720:280::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17845:1:7::1;17823:18;:23;;17815:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17939:4;17916:18;17901:12;;:33;;;;:::i;:::-;17900:43;;;;:::i;:::-;17885:12;:58;;;;17954:32;17973:12;;17954:32;;;;;;:::i;:::-;;;;;;;;17720:280:::0;:::o;4467:71::-;4506:13;4530:5;4523:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4467:71;:::o;4967:221::-;5051:4;5102:6;5067:11;:23;5079:10;5067:23;;;;;;;;;;;;;;;:32;5091:7;5067:32;;;;;;;;;;;;;;;:41;;;;5144:7;5123:37;;5132:10;5123:37;;;5153:6;5123:37;;;;;;:::i;:::-;;;;;;;;5177:4;5170:11;;4967:221;;;;:::o;1083:43::-;;;;;;;;;;;;;;;;;:::o;19420:158::-;19509:4;19560:6;19528:29;19548:8;19528:19;:29::i;:::-;:38;19521:45;;19420:158;;;;:::o;16346:114::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16408:11:7::1;;;;;;;;;;;16399:21;;;::::0;::::1;;16444:5;16430:11;;:19;;;;;;;;;;;;;;;;;;16346:114::o:0;1132:46::-;;;;:::o;4298:88::-;4353:7;4371:12;;4364:19;;4298:88;:::o;17485:229::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17601:1:7::1;17581:16;:21;;17573:30;;;::::0;::::1;;17663:4;17642:16;17627:12;;:31;;;;:::i;:::-;17626:41;;;;:::i;:::-;17609:14;:58;;;;17678:29;17692:14;;17678:29;;;;;;:::i;:::-;;;;;;;;17485:229:::0;:::o;5480:364::-;5580:4;5634:17;5599:11;:19;5611:6;5599:19;;;;;;;;;;;;;;;:31;5619:10;5599:31;;;;;;;;;;;;;;;;:52;5596:184;;5700:69;5736:6;5700:69;;;;;;;;;;;;;;;;;:11;:19;5712:6;5700:19;;;;;;;;;;;;;;;:31;5720:10;5700:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;5666:11;:19;5678:6;5666:19;;;;;;;;;;;;;;;:31;5686:10;5666:31;;;;;;;;;;;;;;;:103;;;;5596:184;5797:40;5811:6;5819:9;5830:6;5797:13;:40::i;:::-;5790:47;;5480:364;;;;;:::o;12906:380::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13040:7:7::1;:14;13021:8;:15;:33;13013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13095:8;13090:194;13113:8;:15;13109:1;:19;;;13090:194;;;13178:7;13186:1;13178:10;;;;;;;;;;:::i;:::-;;;;;;;;13153:21;13163:10;13153:9;:21::i;:::-;:35;;13145:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13228:49;13243:10;13254:8;13263:1;13254:11;;;;;;;;;;:::i;:::-;;;;;;;;13266:7;13274:1;13266:10;;;;;;;;;;:::i;:::-;;;;;;;;13228:14;:49::i;:::-;;13130:3;;;;;:::i;:::-;;;;13090:194;;;;12906:380:::0;;:::o;19094:141::-;19152:7;19174:54;19212:15;751:42;19212:9;:15::i;:::-;19174:33;19191:15;670:42;19191:9;:15::i;:::-;19174:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;19167:61;;19094:141;:::o;10819:97::-;10871:7;10897:12;;10890:19;;10819:97;;;:::o;7643:153::-;7713:7;7739:50;7772:16;;7739:28;7754:12;;7739:10;:14;;:28;;;;:::i;:::-;:32;;:50;;;;:::i;:::-;7732:57;;7643:153;;;:::o;4391:71::-;4434:5;883:1;4443:16;;4391:71;:::o;18582:162::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18689:6:7::1;18667:11;:19;18679:6;18667:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18731:6;18705:15;:23;18721:6;18705:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18582:162:::0;;:::o;7493:144::-;7558:7;7584:46;7617:12;;7584:28;7595:16;;7584:6;:10;;:28;;;;:::i;:::-;:32;;:46;;;;:::i;:::-;7577:53;;7493:144;;;:::o;5194:120::-;5249:4;5272:35;5280:7;5289:17;5272:7;:35::i;:::-;5265:42;;5194:120;;;:::o;2180:37::-;;;;;;;;;;;;;:::o;4699:124::-;4765:7;4783:37;4803:7;:16;4811:7;4803:16;;;;;;;;;;;;;;;;4783:19;:37::i;:::-;4776:44;;4699:124;;;:::o;603:145:5:-;527:12;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;709:1:::1;672:40;;693:6;::::0;::::1;;;;;;;;672:40;;;;;;;;;;;;739:1;722:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;603:145::o:0;12771:129:7:-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12846:12:7::1;;12829:14;:29;;;;12880:12;;12865;:27;;;;12771:129::o:0;2223:39::-;;;;;;;;;;;;;:::o;946:54::-;;;;:::o;10718:95::-;10769:7;10795:11;;10788:18;;10718:95;;;:::o;4623:71::-;4666:7;4684;:5;:7::i;:::-;4677:14;;4623:71;:::o;16227:113::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16289:11:7::1;;;;;;;;;;;16288:12;16279:22;;;::::0;::::1;;16325:4;16311:11;;:18;;;;;;;;;;;;;;;;;;16227:113::o:0;395:77:5:-;433:7;459:6;;;;;;;;;;;452:13;;395:77;:::o;1012:56:7:-;;;;:::o;4543:75::-;4584:13;4608:7;4601:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4543:75;:::o;18012:207::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18112:9:7::1;18107:106;18127:9;;:16;;18123:1;:20;18107:106;;;18192:6;18164:11;:25;18176:9;;18186:1;18176:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18164:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18145:3;;;;;18107:106;;;;18012:207:::0;;;:::o;2278:46::-;;;;;;;;;;;;;;;;;:::o;2116:19::-;;;;;;;;;;;;;:::o;5320:154::-;5400:4;5423:44;5437:10;5449:9;5460:6;5423:13;:44::i;:::-;5416:51;;5320:154;;;;:::o;16466:1008::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16769:16:7::1;16751:15;:34;;;;16810:17;16791:16;:36;;;;16851:16;16833:15;:34;;;;16886:11;16873:10;:24;;;;16917:74;16980:10;;16917:58;16959:15;;16917:37;16937:16;;16917:15;;:19;;:37;;;;:::i;:::-;:41;;:58;;;;:::i;:::-;:62;;:74;;;;:::i;:::-;16903:11;:88;;;;17017:17;16998:16;:36;;;;17060:18;17040:17;:38;;;;17103:17;17084:16;:36;;;;17140:12;17126:11;:26;;;;17173:78;17239:11;;17173:61;17217:16;;17173:39;17194:17;;17173:16;;:20;;:39;;;;:::i;:::-;:43;;:61;;;;:::i;:::-;:65;;:78;;;;:::i;:::-;17158:12;:93;;;;17282:15;17265:14;:32;;;;17342:1;17327:14;;:16;;;;:::i;:::-;17312:11;;:31;;17304:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;17421:1;17406:14;;:16;;;;:::i;:::-;17391:12;;:31;;17383:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16466:1008:::0;;;;;;;;;:::o;2335:31::-;;;;;;;;;;;;;:::o;15490:731::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15652:2:7::1;15639:12;;:15;;;;:::i;:::-;15627:8;:28;15619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15730:6;15717:12;;:19;;;;:::i;:::-;15705:8;:32;15697:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;15816:2;15803:12;;:15;;;;:::i;:::-;15791:8;:28;15783:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15894:6;15881:12;;:19;;;;:::i;:::-;15869:8;:32;15861:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;15964:10;15947:14;;:27;;;;;;;;;;;;;;;;;;15995:8;15980:12;;:23;;;;;;;;;;;;;;;;;;16030:8;16009:18;:29;;;;16065:8;16044:18;:29;;;;16095:18;;16079:13;:34;;;;16129:85;16145:14;;;;;;;;;;;16161:12;;;;;;;;;;;16175:18;;16195;;16129:85;;;;;;;;;:::i;:::-;;;;;;;;15490:731:::0;;;;:::o;18225:209::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18334:9:7::1;18329:98;18349:9;;:16;;18345:1;:20;18329:98;;;18410:6;18378:15;:29;18394:9;;18404:1;18394:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18378:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;18367:3;;;;;18329:98;;;;18225:209:::0;;;:::o;18440:131::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18558:6:7::1;18531:16;:24;18548:6;18531:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18440:131:::0;;:::o;2900:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12109:236::-;12177:17;12197:21;12177:41;;12236:12;;;;;;;;;;;12228:30;;:66;12290:3;12271:16;12259:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;12228:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12309:28;12320:16;12309:28;;;;;;:::i;:::-;;;;;;;;12167:178;12109:236;:::o;4828:133::-;4912:7;4930:11;:19;4942:6;4930:19;;;;;;;;;;;;;;;:28;4950:7;4930:28;;;;;;;;;;;;;;;;4923:35;;4828:133;;;;:::o;18754:334::-;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18905:18:7::1;18885:17;;:38;;;;;;;;;;;;;;;;;;18948:13;18933:12;;:28;;;;;;;;;;;;;;;;;;18988:15;18971:14;;:32;;;;;;;;;;;;;;;;;;19019:62;19033:17;;;;;;;;;;;19052:12;;;;;;;;;;;19066:14;;;;;;;;;;;19019:62;;;;;;;;:::i;:::-;;;;;;;;18754:334:::0;;;:::o;12352:409::-;12445:4;527:12:5;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12490:4:7::1;12466:29;;:12;:29;;::::0;12458:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12553:1;12543:6;:11:::0;12540:94:::1;;12585:12;12578:30;;;12617:4;12578:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12569:54;;12540:94;12648:32;12659:12;12673:6;12648:32;;;;;;;:::i;:::-;;;;;;;;12704:12;12697:29;;;12727:10;12739:6;12697:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12690:56;;12352:409:::0;;;;:::o;754:240:5:-;527:12;:10;:12::i;:::-;517:22;;:6;;;;;;;;;;:22;;;509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;862:1:::1;842:22;;:8;:22;;::::0;834:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;951:8;922:38;;943:6;::::0;::::1;;;;;;;;922:38;;;;;;;;;;;;979:8;970:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;754:240:::0;:::o;2086:24:7:-;;;;;;;;;;;;;:::o;2142:31::-;;;;;;;;;;;;;:::o;90:105:0:-;135:15;177:10;162:26;;90:105;:::o;19241:173:7:-;19320:7;19342:64;19383:22;:20;:22::i;:::-;19342:36;19355:22;19375:1;19355:15;19365:4;;;;;;;;;;;19355:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;19342:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;19335:71;;19241:173;;;:::o;402:187:6:-;488:7;520:1;515;:6;;523:12;507:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;546:9;562:1;558;:5;;;;:::i;:::-;546:17;;581:1;574:8;;;402:187;;;;;:::o;5850:1637:7:-;5942:4;5961:6;;;;;;;;;;;5958:63;;;5977:41;5992:6;6000:9;6011:6;5977:14;:41::i;:::-;5970:48;;;;5958:63;6048:4;;;;;;;;;;;6035:17;;:9;:17;;;;:38;;;;;670:42;6056:17;;:9;:17;;;;6035:38;:72;;;;;6090:17;;;;;;;;;;;6077:30;;:9;:30;;;;6035:72;:103;;;;;6112:15;:26;6128:9;6112:26;;;;;;;;;;;;;;;;;;;;;;;;;6111:27;6035:103;6031:493;;;6195:14;;6185:6;6162:20;6172:9;6162;:20::i;:::-;:29;;;;:::i;:::-;:47;;6154:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6258:4;;;;;;;;;;;6248:14;;:6;:14;;;:36;;;;;6266:18;;;;;;;;;;;6248:36;:68;;;;;6289:16;:27;6306:9;6289:27;;;;;;;;;;;;;;;;;;;;;;;;;6288:28;6248:68;6244:261;;;6367:15;6340:13;:24;6354:9;6340:24;;;;;;;;;;;;;;;;:42;6332:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;6473:21;;;;;;;;;;;6455:39;;:15;:39;;;;:::i;:::-;6428:13;:24;6442:9;6428:24;;;;;;;;;;;;;;;:66;;;;6244:261;6031:493;6546:15;:23;6562:6;6546:23;;;;;;;;;;;;;;;;;;;;;;;;;6542:116;;6603:12;;6593:6;:22;;6585:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;6542:116;6690:4;;;;;;;;;;;6677:17;;:9;:17;;;;:38;;;;;670:42;6698:17;;:9;:17;;;;6677:38;:69;;;;;6720:15;:26;6736:9;6720:26;;;;;;;;;;;;;;;;;;;;;;;;;6719:27;6677:69;6673:152;;;6770:11;;;;;;;;;;;6762:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;6673:152;6838:16;:14;:16::i;:::-;6835:35;;;6857:10;:8;:10::i;:::-;6835:35;6880:24;6907:26;6926:6;6907:18;:26::i;:::-;6880:53;;6962:61;6982:16;6962:61;;;;;;;;;;;;;;;;;:7;:15;6970:6;6962:15;;;;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;6944:7;:15;6952:6;6944:15;;;;;;;;;;;;;;;:79;;;;7034:26;7063:21;7077:6;7063:13;:21::i;:::-;:49;;;;;7088:24;7102:9;7088:13;:24::i;:::-;7063:49;:158;;7205:16;7063:158;;;7115:87;7146:4;;;;;;;;;;;7136:14;;:6;:14;;;:28;;7159:5;7136:28;;;7152:4;7136:28;7166:6;7174:9;7185:16;7115:20;:87::i;:::-;7063:158;7034:187;;7252:42;7275:18;7252:7;:18;7260:9;7252:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;7231:7;:18;7239:9;7231:18;;;;;;;;;;;;;;;:63;;;;7333:42;;;;;;;;;7357:6;7333:42;;;;;;;;7364:9;7333:42;;;;;;;:22;:42::i;:::-;7408:9;7391:68;;7400:6;7391:68;;;7419:39;7439:18;7419:19;:39::i;:::-;7391:68;;;;;;:::i;:::-;;;;;;;;7476:4;7469:11;;;;5850:1637;;;;;;:::o;7802:506::-;7895:4;7911:24;7938:26;7957:6;7938:18;:26::i;:::-;7911:53;;7992:61;8012:16;7992:61;;;;;;;;;;;;;;;;;:7;:15;8000:6;7992:15;;;;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;7974:7;:15;7982:6;7974:15;;;;;;;;;;;;;;;:79;;;;8084:40;8107:16;8084:7;:18;8092:9;8084:18;;;;;;;;;;;;;;;;:22;;:40;;;;:::i;:::-;8063:7;:18;8071:9;8063:18;;;;;;;;;;;;;;;:61;;;;8187:42;;;;;;;;;8211:6;8187:42;;;;;;;;8218:9;8187:42;;;;;;;:22;:42::i;:::-;8262:9;8245:35;;8254:6;8245:35;;;8273:6;8245:35;;;;;;:::i;:::-;;;;;;;;8297:4;8290:11;;;7802:506;;;;;:::o;263:134:6:-;321:7;347:43;351:1;354;347:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;340:50;;263:134;;;;:::o;594:241::-;652:7;680:1;675;:6;671:45;;704:1;697:8;;;;671:45;726:9;742:1;738;:5;;;;:::i;:::-;726:17;;770:1;765;761;:5;;;;:::i;:::-;:10;753:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;827:1;820:8;;;594:241;;;;;:::o;840:130::-;898:7;924:39;928:1;931;924:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;917:46;;840:130;;;;:::o;82:176::-;140:7;159:9;175:1;171;:5;;;;:::i;:::-;159:17;;199:1;194;:6;;186:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;250:1;243:8;;;82:176;;;;:::o;13295:193:7:-;13344:4;13381;;;;;;;;;;;13367:18;;:10;:18;;;;:37;;;;;13398:6;;;;;;;;;;;13397:7;13367:37;:61;;;;;13416:12;;;;;;;;;;;13367:61;:114;;;;;13468:13;;13440:24;13458:4;13440:9;:24::i;:::-;:41;;13367:114;13360:121;;13295:193;:::o;13494:1990::-;2641:4;2632:6;;:13;;;;;;;;;;;;;;;;;;13542:27:::1;13572:60;13588:15;;13605:26;;13572:15;:60::i;:::-;:83;;13639:16;;13572:83;;;13635:1;13572:83;13542:113;;13665:17;13685:35;13702:17;;13685:12;;:16;;:35;;;;:::i;:::-;13665:55;;13730:23;13756:60;13814:1;13756:53;13799:9;13756:38;13774:19;13756:13;;:17;;:38;;;;:::i;:::-;:42;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;13730:86;;13826:20;13849:34;13867:15;13849:13;;:17;;:34;;;;:::i;:::-;13826:57;;13894:21;13932:1;13918:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13894:40;;13962:4;13944;13949:1;13944:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13987:4;;;;;;;;;;;13977;13982:1;13977:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;14002:21;14026;14002:45;;14058:6;;;;;;;;;;;:57;;;14129:12;14155:1;14170:4;14196;14215:15;14058:182;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14251:17;14271:40;14297:13;14271:21;:25;;:40;;;;:::i;:::-;14251:60;;14321:19;14343:41;14357:26;14381:1;14357:19;:23;;:26;;;;:::i;:::-;14343:9;:13;;:41;;;;:::i;:::-;14321:63;;14394:26;14423:55;14476:1;14423:48;14459:11;14423:31;14437:16;;14423:9;:13;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;:52;;:55;;;;:::i;:::-;14394:84;;14488:26;14517:48;14553:11;14517:31;14531:16;;14517:9;:13;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;14488:77;;14575:21;14599:43;14630:11;14599:26;14613:11;;14599:9;:13;;:26;;;;:::i;:::-;:30;;:43;;;;:::i;:::-;14575:67;;14781:15;14809:17;;;;;;;;;;;14801:31;;14840:18;14865:5;14801:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14780:95;;;14909:12;;;;;;;;;;;14901:26;;14935:13;14955:5;14901:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14885:80;;;;;15014:1;14996:15;:19;14993:347;;;15032:6;;;;;;;;;;;:22;;;15062:18;15107:4;15130:15;15163:1;15182::::0;15201:14:::1;;;;;;;;;;;15233:15;15032:230;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15281:48;15293:18;15313:15;15281:48;;;;;;;:::i;:::-;;;;;;;;14993:347;15367:14;;;;;;;;;;;15366:15;:111;;15417:18;;15400:13;;:35;:77;;15459:18;;15400:77;;;15438:18;;15400:77;15366:111;;;15384:13;;15366:111;15350:13;:127;;;;13532:1952;;;;;;;;;;;;2659:5:::0;2650:6;;:14;;;;;;;;;;;;;;;;;;13494:1990::o;10428:113::-;10490:4;10514:11;:19;10526:6;10514:19;;;;;;;;;;;;;;;;;;;;;;;;;10513:20;10506:27;;10428:113;;;:::o;10922:1180::-;11043:7;11062:27;11102:4;11092:14;;:6;:14;;;:176;;11193:75;11253:14;;11193:55;11214:33;11242:4;;;;;;;;;;;11230:16;;:8;:16;;;11214:15;:33::i;:::-;11193:16;:20;;:55;;;;:::i;:::-;:59;;:75;;;;:::i;:::-;11092:176;;;11108:74;11167:14;;11108:54;11129:32;11156:4;;;;;;;;;;;11144:16;;:8;:16;;;11129:14;:32::i;:::-;11108:16;:20;;:54;;;;:::i;:::-;:58;;:74;;;;:::i;:::-;11092:176;11062:206;;11288:27;11328:4;11318:14;;:6;:14;;;:145;;11403:60;11450:12;;11403:42;11427:17;;11403:19;:23;;:42;;;;:::i;:::-;:46;;:60;;;;:::i;:::-;11318:145;;;11334:58;11380:11;;11334:41;11358:16;;11334:19;:23;;:41;;;;:::i;:::-;:45;;:58;;;;:::i;:::-;11318:145;11288:175;;11493:41;11514:19;11493:16;;:20;;:41;;;;:::i;:::-;11474:16;:60;;;;11554:29;11586:44;11610:19;11586;:23;;:44;;;;:::i;:::-;11554:76;;11665:49;11692:21;11665:7;:22;11681:4;11665:22;;;;;;;;;;;;;;;;:26;;:49;;;;:::i;:::-;11640:7;:22;11656:4;11640:22;;;;;;;;;;;;;;;:74;;;;11853:32;:30;:32::i;:::-;11926:4;11901:75;;11910:6;11901:75;;;11933:42;11953:21;11933:19;:42::i;:::-;11901:75;;;;;;:::i;:::-;;;;;;;;11991:46;11999:19;12020:16;;11991:46;;;;;;;:::i;:::-;;;;;;;;12054:41;12075:19;12054:16;:20;;:41;;;;:::i;:::-;12047:48;;;;;10922:1180;;;;;;:::o;8413:880::-;8556:6;8551:726;8568:14;8566:1;:16;8551:726;;;8612:18;8633:21;8643:7;8651:1;8643:10;;;;;;;:::i;:::-;;;;;;8633:9;:21::i;:::-;8612:42;;8668:25;8697:56;8749:3;8738:5;8699:37;8714:21;8731:3;8714:12;;:16;;:21;;;;:::i;:::-;8699:10;:14;;:37;;;;:::i;:::-;8698:45;;;;:::i;:::-;8697:51;;:56;;;;:::i;:::-;8668:85;;8785:4;;;;;;;;;;;8771:18;;:7;8779:1;8771:10;;;;;;;:::i;:::-;;;;;;:18;;;;:49;;;;;8815:4;8793:27;;:7;8801:1;8793:10;;;;;;;:::i;:::-;;;;;;:27;;;;8771:49;8767:500;;;8887:7;8895:1;8887:10;;;;;;;:::i;:::-;;;;;;8843:54;;:15;:27;8859:7;8867:1;8859:10;;;;;;;:::i;:::-;;;;;;8843:27;;;;;;;;;;;;;;;:40;;;;;;;;;;;;:54;;;8839:414;;8950:49;;;;;;;;8957:7;8965:1;8957:10;;;;;;;:::i;:::-;;;;;;8950:49;;;;;;8969:10;8950:49;;;;8981:17;8950:49;;;8920:15;:27;8936:7;8944:1;8936:10;;;;;;;:::i;:::-;;;;;;8920:27;;;;;;;;;;;;;;;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9021:12;9039:7;9047:1;9039:10;;;;;;;:::i;:::-;;;;;;9021:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8839:414;;;9137:10;9096:15;:27;9112:7;9120:1;9112:10;;;;;;;:::i;:::-;;;;;;9096:27;;;;;;;;;;;;;;;:38;;:51;;;;9217:17;9169:15;:27;9185:7;9193:1;9185:10;;;;;;;:::i;:::-;;;;;;9169:27;;;;;;;;;;;;;;;:45;;:65;;;;8839:414;8767:500;8598:679;;8584:3;;;;;;;8551:726;;;;8413:880;:::o;975:185:6:-;1061:7;1092:1;1088;:5;1095:12;1080:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1118:9;1134:1;1130;:5;;;;:::i;:::-;1118:17;;1152:1;1145:8;;;975:185;;;;;:::o;9344:1077:7:-;9405:25;9441:4;9405:41;;9474:6;9469:946;9486:12;:19;;;;9484:1;:21;9469:946;;;9551:20;9574:15;:32;9590:12;9603:1;9590:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9574:32;;;;;;;;;;;;;;;:45;;;;;;;;;;;;9551:68;;9641:18;9662:23;9672:12;9662:9;:23::i;:::-;9641:44;;9707:25;9736:56;9788:3;9777:5;9738:37;9753:21;9770:3;9753:12;;:16;;:21;;;;:::i;:::-;9738:10;:14;;:37;;;;:::i;:::-;9737:45;;;;:::i;:::-;9736:51;;:56;;;;:::i;:::-;9707:85;;9814:34;9882:28;9892:17;9882:9;:28::i;:::-;9851:30;9875:5;9852:17;9851:23;;:30;;;;:::i;:::-;:59;;;;:::i;:::-;9814:96;;9962:21;9979:3;9962:12;;:16;;:21;;;;:::i;:::-;9935:23;9945:12;9935:9;:23::i;:::-;:48;;:105;;;;;10019:21;10036:3;10019:12;;:16;;:21;;;;:::i;:::-;9987:28;9997:17;9987:9;:28::i;:::-;:53;;9935:105;9932:465;;;10097:82;10128:26;10097:82;;;;;;;;;;;;;;;;;:7;:26;10105:17;10097:26;;;;;;;;;;;;;;;;:30;;:82;;;;;:::i;:::-;10068:7;:26;10076:17;10068:26;;;;;;;;;;;;;;;:111;;;;10229:53;10255:26;10229:7;:21;10237:12;10229:21;;;;;;;;;;;;;;;;:25;;:53;;;;:::i;:::-;10205:7;:21;10213:12;10205:21;;;;;;;;;;;;;;;:77;;;;10351:23;10361:12;10351:9;:23::i;:::-;10308:15;:29;10324:12;10308:29;;;;;;;;;;;;;;;:40;;:66;;;;9932:465;9529:886;;;;9507:3;;;;;;;9469:946;;;;9395:1026;9344:1077::o;7:77:8:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:75::-;475:6;508:2;502:9;492:19;;442:75;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:99::-;1429:6;1463:5;1457:12;1447:22;;1377:99;;;:::o;1482:169::-;1566:11;1600:6;1595:3;1588:19;1640:4;1635:3;1631:14;1616:29;;1482:169;;;;:::o;1657:246::-;1738:1;1748:113;1762:6;1759:1;1756:13;1748:113;;;1847:1;1842:3;1838:11;1832:18;1828:1;1823:3;1819:11;1812:39;1784:2;1781:1;1777:10;1772:15;;1748:113;;;1895:1;1886:6;1881:3;1877:16;1870:27;1719:184;1657:246;;;:::o;1909:102::-;1950:6;2001:2;1997:7;1992:2;1985:5;1981:14;1977:28;1967:38;;1909:102;;;:::o;2017:377::-;2105:3;2133:39;2166:5;2133:39;:::i;:::-;2188:71;2252:6;2247:3;2188:71;:::i;:::-;2181:78;;2268:65;2326:6;2321:3;2314:4;2307:5;2303:16;2268:65;:::i;:::-;2358:29;2380:6;2358:29;:::i;:::-;2353:3;2349:39;2342:46;;2109:285;2017:377;;;;:::o;2400:313::-;2513:4;2551:2;2540:9;2536:18;2528:26;;2600:9;2594:4;2590:20;2586:1;2575:9;2571:17;2564:47;2628:78;2701:4;2692:6;2628:78;:::i;:::-;2620:86;;2400:313;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:329::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:474::-;4536:6;4544;4593:2;4581:9;4572:7;4568:23;4564:32;4561:119;;;4599:79;;:::i;:::-;4561:119;4719:1;4744:53;4789:7;4780:6;4769:9;4765:22;4744:53;:::i;:::-;4734:63;;4690:117;4846:2;4872:53;4917:7;4908:6;4897:9;4893:22;4872:53;:::i;:::-;4862:63;;4817:118;4468:474;;;;;:::o;4948:619::-;5025:6;5033;5041;5090:2;5078:9;5069:7;5065:23;5061:32;5058:119;;;5096:79;;:::i;:::-;5058:119;5216:1;5241:53;5286:7;5277:6;5266:9;5262:22;5241:53;:::i;:::-;5231:63;;5187:117;5343:2;5369:53;5414:7;5405:6;5394:9;5390:22;5369:53;:::i;:::-;5359:63;;5314:118;5471:2;5497:53;5542:7;5533:6;5522:9;5518:22;5497:53;:::i;:::-;5487:63;;5442:118;4948:619;;;;;:::o;5573:117::-;5682:1;5679;5672:12;5696:180;5744:77;5741:1;5734:88;5841:4;5838:1;5831:15;5865:4;5862:1;5855:15;5882:281;5965:27;5987:4;5965:27;:::i;:::-;5957:6;5953:40;6095:6;6083:10;6080:22;6059:18;6047:10;6044:34;6041:62;6038:88;;;6106:18;;:::i;:::-;6038:88;6146:10;6142:2;6135:22;5925:238;5882:281;;:::o;6169:129::-;6203:6;6230:20;;:::i;:::-;6220:30;;6259:33;6287:4;6279:6;6259:33;:::i;:::-;6169:129;;;:::o;6304:311::-;6381:4;6471:18;6463:6;6460:30;6457:56;;;6493:18;;:::i;:::-;6457:56;6543:4;6535:6;6531:17;6523:25;;6603:4;6597;6593:15;6585:23;;6304:311;;;:::o;6621:117::-;6730:1;6727;6720:12;6761:710;6857:5;6882:81;6898:64;6955:6;6898:64;:::i;:::-;6882:81;:::i;:::-;6873:90;;6983:5;7012:6;7005:5;6998:21;7046:4;7039:5;7035:16;7028:23;;7099:4;7091:6;7087:17;7079:6;7075:30;7128:3;7120:6;7117:15;7114:122;;;7147:79;;:::i;:::-;7114:122;7262:6;7245:220;7279:6;7274:3;7271:15;7245:220;;;7354:3;7383:37;7416:3;7404:10;7383:37;:::i;:::-;7378:3;7371:50;7450:4;7445:3;7441:14;7434:21;;7321:144;7305:4;7300:3;7296:14;7289:21;;7245:220;;;7249:21;6863:608;;6761:710;;;;;:::o;7494:370::-;7565:5;7614:3;7607:4;7599:6;7595:17;7591:27;7581:122;;7622:79;;:::i;:::-;7581:122;7739:6;7726:20;7764:94;7854:3;7846:6;7839:4;7831:6;7827:17;7764:94;:::i;:::-;7755:103;;7571:293;7494:370;;;;:::o;7870:311::-;7947:4;8037:18;8029:6;8026:30;8023:56;;;8059:18;;:::i;:::-;8023:56;8109:4;8101:6;8097:17;8089:25;;8169:4;8163;8159:15;8151:23;;7870:311;;;:::o;8204:710::-;8300:5;8325:81;8341:64;8398:6;8341:64;:::i;:::-;8325:81;:::i;:::-;8316:90;;8426:5;8455:6;8448:5;8441:21;8489:4;8482:5;8478:16;8471:23;;8542:4;8534:6;8530:17;8522:6;8518:30;8571:3;8563:6;8560:15;8557:122;;;8590:79;;:::i;:::-;8557:122;8705:6;8688:220;8722:6;8717:3;8714:15;8688:220;;;8797:3;8826:37;8859:3;8847:10;8826:37;:::i;:::-;8821:3;8814:50;8893:4;8888:3;8884:14;8877:21;;8764:144;8748:4;8743:3;8739:14;8732:21;;8688:220;;;8692:21;8306:608;;8204:710;;;;;:::o;8937:370::-;9008:5;9057:3;9050:4;9042:6;9038:17;9034:27;9024:122;;9065:79;;:::i;:::-;9024:122;9182:6;9169:20;9207:94;9297:3;9289:6;9282:4;9274:6;9270:17;9207:94;:::i;:::-;9198:103;;9014:293;8937:370;;;;:::o;9313:894::-;9431:6;9439;9488:2;9476:9;9467:7;9463:23;9459:32;9456:119;;;9494:79;;:::i;:::-;9456:119;9642:1;9631:9;9627:17;9614:31;9672:18;9664:6;9661:30;9658:117;;;9694:79;;:::i;:::-;9658:117;9799:78;9869:7;9860:6;9849:9;9845:22;9799:78;:::i;:::-;9789:88;;9585:302;9954:2;9943:9;9939:18;9926:32;9985:18;9977:6;9974:30;9971:117;;;10007:79;;:::i;:::-;9971:117;10112:78;10182:7;10173:6;10162:9;10158:22;10112:78;:::i;:::-;10102:88;;9897:303;9313:894;;;;;:::o;10213:116::-;10283:21;10298:5;10283:21;:::i;:::-;10276:5;10273:32;10263:60;;10319:1;10316;10309:12;10263:60;10213:116;:::o;10335:133::-;10378:5;10416:6;10403:20;10394:29;;10432:30;10456:5;10432:30;:::i;:::-;10335:133;;;;:::o;10474:323::-;10530:6;10579:2;10567:9;10558:7;10554:23;10550:32;10547:119;;;10585:79;;:::i;:::-;10547:119;10705:1;10730:50;10772:7;10763:6;10752:9;10748:22;10730:50;:::i;:::-;10720:60;;10676:114;10474:323;;;;:::o;10803:86::-;10838:7;10878:4;10871:5;10867:16;10856:27;;10803:86;;;:::o;10895:112::-;10978:22;10994:5;10978:22;:::i;:::-;10973:3;10966:35;10895:112;;:::o;11013:214::-;11102:4;11140:2;11129:9;11125:18;11117:26;;11153:67;11217:1;11206:9;11202:17;11193:6;11153:67;:::i;:::-;11013:214;;;;:::o;11233:468::-;11298:6;11306;11355:2;11343:9;11334:7;11330:23;11326:32;11323:119;;;11361:79;;:::i;:::-;11323:119;11481:1;11506:53;11551:7;11542:6;11531:9;11527:22;11506:53;:::i;:::-;11496:63;;11452:117;11608:2;11634:50;11676:7;11667:6;11656:9;11652:22;11634:50;:::i;:::-;11624:60;;11579:115;11233:468;;;;;:::o;11707:118::-;11794:24;11812:5;11794:24;:::i;:::-;11789:3;11782:37;11707:118;;:::o;11831:222::-;11924:4;11962:2;11951:9;11947:18;11939:26;;11975:71;12043:1;12032:9;12028:17;12019:6;11975:71;:::i;:::-;11831:222;;;;:::o;12059:117::-;12168:1;12165;12158:12;12199:568;12272:8;12282:6;12332:3;12325:4;12317:6;12313:17;12309:27;12299:122;;12340:79;;:::i;:::-;12299:122;12453:6;12440:20;12430:30;;12483:18;12475:6;12472:30;12469:117;;;12505:79;;:::i;:::-;12469:117;12619:4;12611:6;12607:17;12595:29;;12673:3;12665:4;12657:6;12653:17;12643:8;12639:32;12636:41;12633:128;;;12680:79;;:::i;:::-;12633:128;12199:568;;;;;:::o;12773:698::-;12865:6;12873;12881;12930:2;12918:9;12909:7;12905:23;12901:32;12898:119;;;12936:79;;:::i;:::-;12898:119;13084:1;13073:9;13069:17;13056:31;13114:18;13106:6;13103:30;13100:117;;;13136:79;;:::i;:::-;13100:117;13249:80;13321:7;13312:6;13301:9;13297:22;13249:80;:::i;:::-;13231:98;;;;13027:312;13378:2;13404:50;13446:7;13437:6;13426:9;13422:22;13404:50;:::i;:::-;13394:60;;13349:115;12773:698;;;;;:::o;13477:1495::-;13608:6;13616;13624;13632;13640;13648;13656;13664;13672;13721:3;13709:9;13700:7;13696:23;13692:33;13689:120;;;13728:79;;:::i;:::-;13689:120;13848:1;13873:53;13918:7;13909:6;13898:9;13894:22;13873:53;:::i;:::-;13863:63;;13819:117;13975:2;14001:53;14046:7;14037:6;14026:9;14022:22;14001:53;:::i;:::-;13991:63;;13946:118;14103:2;14129:53;14174:7;14165:6;14154:9;14150:22;14129:53;:::i;:::-;14119:63;;14074:118;14231:2;14257:53;14302:7;14293:6;14282:9;14278:22;14257:53;:::i;:::-;14247:63;;14202:118;14359:3;14386:53;14431:7;14422:6;14411:9;14407:22;14386:53;:::i;:::-;14376:63;;14330:119;14488:3;14515:53;14560:7;14551:6;14540:9;14536:22;14515:53;:::i;:::-;14505:63;;14459:119;14617:3;14644:53;14689:7;14680:6;14669:9;14665:22;14644:53;:::i;:::-;14634:63;;14588:119;14746:3;14773:53;14818:7;14809:6;14798:9;14794:22;14773:53;:::i;:::-;14763:63;;14717:119;14875:3;14902:53;14947:7;14938:6;14927:9;14923:22;14902:53;:::i;:::-;14892:63;;14846:119;13477:1495;;;;;;;;;;;:::o;14978:753::-;15058:6;15066;15074;15082;15131:3;15119:9;15110:7;15106:23;15102:33;15099:120;;;15138:79;;:::i;:::-;15099:120;15258:1;15283:50;15325:7;15316:6;15305:9;15301:22;15283:50;:::i;:::-;15273:60;;15229:114;15382:2;15408:53;15453:7;15444:6;15433:9;15429:22;15408:53;:::i;:::-;15398:63;;15353:118;15510:2;15536:53;15581:7;15572:6;15561:9;15557:22;15536:53;:::i;:::-;15526:63;;15481:118;15638:2;15664:50;15706:7;15697:6;15686:9;15682:22;15664:50;:::i;:::-;15654:60;;15609:115;14978:753;;;;;;;:::o;15737:442::-;15886:4;15924:2;15913:9;15909:18;15901:26;;15937:71;16005:1;15994:9;15990:17;15981:6;15937:71;:::i;:::-;16018:72;16086:2;16075:9;16071:18;16062:6;16018:72;:::i;:::-;16100;16168:2;16157:9;16153:18;16144:6;16100:72;:::i;:::-;15737:442;;;;;;:::o;16185:474::-;16253:6;16261;16310:2;16298:9;16289:7;16285:23;16281:32;16278:119;;;16316:79;;:::i;:::-;16278:119;16436:1;16461:53;16506:7;16497:6;16486:9;16482:22;16461:53;:::i;:::-;16451:63;;16407:117;16563:2;16589:53;16634:7;16625:6;16614:9;16610:22;16589:53;:::i;:::-;16579:63;;16534:118;16185:474;;;;;:::o;16665:619::-;16742:6;16750;16758;16807:2;16795:9;16786:7;16782:23;16778:32;16775:119;;;16813:79;;:::i;:::-;16775:119;16933:1;16958:53;17003:7;16994:6;16983:9;16979:22;16958:53;:::i;:::-;16948:63;;16904:117;17060:2;17086:53;17131:7;17122:6;17111:9;17107:22;17086:53;:::i;:::-;17076:63;;17031:118;17188:2;17214:53;17259:7;17250:6;17239:9;17235:22;17214:53;:::i;:::-;17204:63;;17159:118;16665:619;;;;;:::o;17290:60::-;17318:3;17339:5;17332:12;;17290:60;;;:::o;17356:142::-;17406:9;17439:53;17457:34;17466:24;17484:5;17466:24;:::i;:::-;17457:34;:::i;:::-;17439:53;:::i;:::-;17426:66;;17356:142;;;:::o;17504:126::-;17554:9;17587:37;17618:5;17587:37;:::i;:::-;17574:50;;17504:126;;;:::o;17636:143::-;17703:9;17736:37;17767:5;17736:37;:::i;:::-;17723:50;;17636:143;;;:::o;17785:165::-;17889:54;17937:5;17889:54;:::i;:::-;17884:3;17877:67;17785:165;;:::o;17956:256::-;18066:4;18104:2;18093:9;18089:18;18081:26;;18117:88;18202:1;18191:9;18187:17;18178:6;18117:88;:::i;:::-;17956:256;;;;:::o;18218:182::-;18358:34;18354:1;18346:6;18342:14;18335:58;18218:182;:::o;18406:366::-;18548:3;18569:67;18633:2;18628:3;18569:67;:::i;:::-;18562:74;;18645:93;18734:3;18645:93;:::i;:::-;18763:2;18758:3;18754:12;18747:19;;18406:366;;;:::o;18778:419::-;18944:4;18982:2;18971:9;18967:18;18959:26;;19031:9;19025:4;19021:20;19017:1;19006:9;19002:17;18995:47;19059:131;19185:4;19059:131;:::i;:::-;19051:139;;18778:419;;;:::o;19203:177::-;19343:29;19339:1;19331:6;19327:14;19320:53;19203:177;:::o;19386:366::-;19528:3;19549:67;19613:2;19608:3;19549:67;:::i;:::-;19542:74;;19625:93;19714:3;19625:93;:::i;:::-;19743:2;19738:3;19734:12;19727:19;;19386:366;;;:::o;19758:419::-;19924:4;19962:2;19951:9;19947:18;19939:26;;20011:9;20005:4;20001:20;19997:1;19986:9;19982:17;19975:47;20039:131;20165:4;20039:131;:::i;:::-;20031:139;;19758:419;;;:::o;20183:180::-;20231:77;20228:1;20221:88;20328:4;20325:1;20318:15;20352:4;20349:1;20342:15;20369:410;20409:7;20432:20;20450:1;20432:20;:::i;:::-;20427:25;;20466:20;20484:1;20466:20;:::i;:::-;20461:25;;20521:1;20518;20514:9;20543:30;20561:11;20543:30;:::i;:::-;20532:41;;20722:1;20713:7;20709:15;20706:1;20703:22;20683:1;20676:9;20656:83;20633:139;;20752:18;;:::i;:::-;20633:139;20417:362;20369:410;;;;:::o;20785:180::-;20833:77;20830:1;20823:88;20930:4;20927:1;20920:15;20954:4;20951:1;20944:15;20971:185;21011:1;21028:20;21046:1;21028:20;:::i;:::-;21023:25;;21062:20;21080:1;21062:20;:::i;:::-;21057:25;;21101:1;21091:35;;21106:18;;:::i;:::-;21091:35;21148:1;21145;21141:9;21136:14;;20971:185;;;;:::o;21162:180::-;21210:77;21207:1;21200:88;21307:4;21304:1;21297:15;21331:4;21328:1;21321:15;21348:320;21392:6;21429:1;21423:4;21419:12;21409:22;;21476:1;21470:4;21466:12;21497:18;21487:81;;21553:4;21545:6;21541:17;21531:27;;21487:81;21615:2;21607:6;21604:14;21584:18;21581:38;21578:84;;21634:18;;:::i;:::-;21578:84;21399:269;21348:320;;;:::o;21674:171::-;21814:23;21810:1;21802:6;21798:14;21791:47;21674:171;:::o;21851:366::-;21993:3;22014:67;22078:2;22073:3;22014:67;:::i;:::-;22007:74;;22090:93;22179:3;22090:93;:::i;:::-;22208:2;22203:3;22199:12;22192:19;;21851:366;;;:::o;22223:419::-;22389:4;22427:2;22416:9;22412:18;22404:26;;22476:9;22470:4;22466:20;22462:1;22451:9;22447:17;22440:47;22504:131;22630:4;22504:131;:::i;:::-;22496:139;;22223:419;;;:::o;22648:180::-;22696:77;22693:1;22686:88;22793:4;22790:1;22783:15;22817:4;22814:1;22807:15;22834:168;22974:20;22970:1;22962:6;22958:14;22951:44;22834:168;:::o;23008:366::-;23150:3;23171:67;23235:2;23230:3;23171:67;:::i;:::-;23164:74;;23247:93;23336:3;23247:93;:::i;:::-;23365:2;23360:3;23356:12;23349:19;;23008:366;;;:::o;23380:419::-;23546:4;23584:2;23573:9;23569:18;23561:26;;23633:9;23627:4;23623:20;23619:1;23608:9;23604:17;23597:47;23661:131;23787:4;23661:131;:::i;:::-;23653:139;;23380:419;;;:::o;23805:89::-;23841:7;23881:6;23874:5;23870:18;23859:29;;23805:89;;;:::o;23900:171::-;23938:3;23961:23;23978:5;23961:23;:::i;:::-;23952:32;;24006:6;23999:5;23996:17;23993:43;;24016:18;;:::i;:::-;23993:43;24063:1;24056:5;24052:13;24045:20;;23900:171;;;:::o;24077:179::-;24217:31;24213:1;24205:6;24201:14;24194:55;24077:179;:::o;24262:366::-;24404:3;24425:67;24489:2;24484:3;24425:67;:::i;:::-;24418:74;;24501:93;24590:3;24501:93;:::i;:::-;24619:2;24614:3;24610:12;24603:19;;24262:366;;;:::o;24634:419::-;24800:4;24838:2;24827:9;24823:18;24815:26;;24887:9;24881:4;24877:20;24873:1;24862:9;24858:17;24851:47;24915:131;25041:4;24915:131;:::i;:::-;24907:139;;24634:419;;;:::o;25059:180::-;25199:32;25195:1;25187:6;25183:14;25176:56;25059:180;:::o;25245:366::-;25387:3;25408:67;25472:2;25467:3;25408:67;:::i;:::-;25401:74;;25484:93;25573:3;25484:93;:::i;:::-;25602:2;25597:3;25593:12;25586:19;;25245:366;;;:::o;25617:419::-;25783:4;25821:2;25810:9;25806:18;25798:26;;25870:9;25864:4;25860:20;25856:1;25845:9;25841:17;25834:47;25898:131;26024:4;25898:131;:::i;:::-;25890:139;;25617:419;;;:::o;26042:181::-;26182:33;26178:1;26170:6;26166:14;26159:57;26042:181;:::o;26229:366::-;26371:3;26392:67;26456:2;26451:3;26392:67;:::i;:::-;26385:74;;26468:93;26557:3;26468:93;:::i;:::-;26586:2;26581:3;26577:12;26570:19;;26229:366;;;:::o;26601:419::-;26767:4;26805:2;26794:9;26790:18;26782:26;;26854:9;26848:4;26844:20;26840:1;26829:9;26825:17;26818:47;26882:131;27008:4;26882:131;:::i;:::-;26874:139;;26601:419;;;:::o;27026:222::-;27166:34;27162:1;27154:6;27150:14;27143:58;27235:5;27230:2;27222:6;27218:15;27211:30;27026:222;:::o;27254:366::-;27396:3;27417:67;27481:2;27476:3;27417:67;:::i;:::-;27410:74;;27493:93;27582:3;27493:93;:::i;:::-;27611:2;27606:3;27602:12;27595:19;;27254:366;;;:::o;27626:419::-;27792:4;27830:2;27819:9;27815:18;27807:26;;27879:9;27873:4;27869:20;27865:1;27854:9;27850:17;27843:47;27907:131;28033:4;27907:131;:::i;:::-;27899:139;;27626:419;;;:::o;28051:529::-;28216:4;28254:3;28243:9;28239:19;28231:27;;28268:65;28330:1;28319:9;28315:17;28306:6;28268:65;:::i;:::-;28343:66;28405:2;28394:9;28390:18;28381:6;28343:66;:::i;:::-;28419:72;28487:2;28476:9;28472:18;28463:6;28419:72;:::i;:::-;28501;28569:2;28558:9;28554:18;28545:6;28501:72;:::i;:::-;28051:529;;;;;;;:::o;28586:442::-;28735:4;28773:2;28762:9;28758:18;28750:26;;28786:71;28854:1;28843:9;28839:17;28830:6;28786:71;:::i;:::-;28867:72;28935:2;28924:9;28920:18;28911:6;28867:72;:::i;:::-;28949;29017:2;29006:9;29002:18;28993:6;28949:72;:::i;:::-;28586:442;;;;;;:::o;29034:182::-;29174:34;29170:1;29162:6;29158:14;29151:58;29034:182;:::o;29222:366::-;29364:3;29385:67;29449:2;29444:3;29385:67;:::i;:::-;29378:74;;29461:93;29550:3;29461:93;:::i;:::-;29579:2;29574:3;29570:12;29563:19;;29222:366;;;:::o;29594:419::-;29760:4;29798:2;29787:9;29783:18;29775:26;;29847:9;29841:4;29837:20;29833:1;29822:9;29818:17;29811:47;29875:131;30001:4;29875:131;:::i;:::-;29867:139;;29594:419;;;:::o;30019:143::-;30076:5;30107:6;30101:13;30092:22;;30123:33;30150:5;30123:33;:::i;:::-;30019:143;;;;:::o;30168:351::-;30238:6;30287:2;30275:9;30266:7;30262:23;30258:32;30255:119;;;30293:79;;:::i;:::-;30255:119;30413:1;30438:64;30494:7;30485:6;30474:9;30470:22;30438:64;:::i;:::-;30428:74;;30384:128;30168:351;;;;:::o;30525:332::-;30646:4;30684:2;30673:9;30669:18;30661:26;;30697:71;30765:1;30754:9;30750:17;30741:6;30697:71;:::i;:::-;30778:72;30846:2;30835:9;30831:18;30822:6;30778:72;:::i;:::-;30525:332;;;;;:::o;30863:137::-;30917:5;30948:6;30942:13;30933:22;;30964:30;30988:5;30964:30;:::i;:::-;30863:137;;;;:::o;31006:345::-;31073:6;31122:2;31110:9;31101:7;31097:23;31093:32;31090:119;;;31128:79;;:::i;:::-;31090:119;31248:1;31273:61;31326:7;31317:6;31306:9;31302:22;31273:61;:::i;:::-;31263:71;;31219:125;31006:345;;;;:::o;31357:225::-;31497:34;31493:1;31485:6;31481:14;31474:58;31566:8;31561:2;31553:6;31549:15;31542:33;31357:225;:::o;31588:366::-;31730:3;31751:67;31815:2;31810:3;31751:67;:::i;:::-;31744:74;;31827:93;31916:3;31827:93;:::i;:::-;31945:2;31940:3;31936:12;31929:19;;31588:366;;;:::o;31960:419::-;32126:4;32164:2;32153:9;32149:18;32141:26;;32213:9;32207:4;32203:20;32199:1;32188:9;32184:17;32177:47;32241:131;32367:4;32241:131;:::i;:::-;32233:139;;31960:419;;;:::o;32385:194::-;32425:4;32445:20;32463:1;32445:20;:::i;:::-;32440:25;;32479:20;32497:1;32479:20;:::i;:::-;32474:25;;32523:1;32520;32516:9;32508:17;;32547:1;32541:4;32538:11;32535:37;;;32552:18;;:::i;:::-;32535:37;32385:194;;;;:::o;32585:191::-;32625:3;32644:20;32662:1;32644:20;:::i;:::-;32639:25;;32678:20;32696:1;32678:20;:::i;:::-;32673:25;;32721:1;32718;32714:9;32707:16;;32742:3;32739:1;32736:10;32733:36;;;32749:18;;:::i;:::-;32733:36;32585:191;;;;:::o;32782:169::-;32922:21;32918:1;32910:6;32906:14;32899:45;32782:169;:::o;32957:366::-;33099:3;33120:67;33184:2;33179:3;33120:67;:::i;:::-;33113:74;;33196:93;33285:3;33196:93;:::i;:::-;33314:2;33309:3;33305:12;33298:19;;32957:366;;;:::o;33329:419::-;33495:4;33533:2;33522:9;33518:18;33510:26;;33582:9;33576:4;33572:20;33568:1;33557:9;33553:17;33546:47;33610:131;33736:4;33610:131;:::i;:::-;33602:139;;33329:419;;;:::o;33754:178::-;33894:30;33890:1;33882:6;33878:14;33871:54;33754:178;:::o;33938:366::-;34080:3;34101:67;34165:2;34160:3;34101:67;:::i;:::-;34094:74;;34177:93;34266:3;34177:93;:::i;:::-;34295:2;34290:3;34286:12;34279:19;;33938:366;;;:::o;34310:419::-;34476:4;34514:2;34503:9;34499:18;34491:26;;34563:9;34557:4;34553:20;34549:1;34538:9;34534:17;34527:47;34591:131;34717:4;34591:131;:::i;:::-;34583:139;;34310:419;;;:::o;34735:177::-;34875:29;34871:1;34863:6;34859:14;34852:53;34735:177;:::o;34918:366::-;35060:3;35081:67;35145:2;35140:3;35081:67;:::i;:::-;35074:74;;35157:93;35246:3;35157:93;:::i;:::-;35275:2;35270:3;35266:12;35259:19;;34918:366;;;:::o;35290:419::-;35456:4;35494:2;35483:9;35479:18;35471:26;;35543:9;35537:4;35533:20;35529:1;35518:9;35514:17;35507:47;35571:131;35697:4;35571:131;:::i;:::-;35563:139;;35290:419;;;:::o;35715:170::-;35855:22;35851:1;35843:6;35839:14;35832:46;35715:170;:::o;35891:366::-;36033:3;36054:67;36118:2;36113:3;36054:67;:::i;:::-;36047:74;;36130:93;36219:3;36130:93;:::i;:::-;36248:2;36243:3;36239:12;36232:19;;35891:366;;;:::o;36263:419::-;36429:4;36467:2;36456:9;36452:18;36444:26;;36516:9;36510:4;36506:20;36502:1;36491:9;36487:17;36480:47;36544:131;36670:4;36544:131;:::i;:::-;36536:139;;36263:419;;;:::o;36688:220::-;36828:34;36824:1;36816:6;36812:14;36805:58;36897:3;36892:2;36884:6;36880:15;36873:28;36688:220;:::o;36914:366::-;37056:3;37077:67;37141:2;37136:3;37077:67;:::i;:::-;37070:74;;37153:93;37242:3;37153:93;:::i;:::-;37271:2;37266:3;37262:12;37255:19;;36914:366;;;:::o;37286:419::-;37452:4;37490:2;37479:9;37475:18;37467:26;;37539:9;37533:4;37529:20;37525:1;37514:9;37510:17;37503:47;37567:131;37693:4;37567:131;:::i;:::-;37559:139;;37286:419;;;:::o;37711:177::-;37851:29;37847:1;37839:6;37835:14;37828:53;37711:177;:::o;37894:366::-;38036:3;38057:67;38121:2;38116:3;38057:67;:::i;:::-;38050:74;;38133:93;38222:3;38133:93;:::i;:::-;38251:2;38246:3;38242:12;38235:19;;37894:366;;;:::o;38266:419::-;38432:4;38470:2;38459:9;38455:18;38447:26;;38519:9;38513:4;38509:20;38505:1;38494:9;38490:17;38483:47;38547:131;38673:4;38547:131;:::i;:::-;38539:139;;38266:419;;;:::o;38691:85::-;38736:7;38765:5;38754:16;;38691:85;;;:::o;38782:158::-;38840:9;38873:61;38891:42;38900:32;38926:5;38900:32;:::i;:::-;38891:42;:::i;:::-;38873:61;:::i;:::-;38860:74;;38782:158;;;:::o;38946:147::-;39041:45;39080:5;39041:45;:::i;:::-;39036:3;39029:58;38946:147;;:::o;39099:114::-;39166:6;39200:5;39194:12;39184:22;;39099:114;;;:::o;39219:184::-;39318:11;39352:6;39347:3;39340:19;39392:4;39387:3;39383:14;39368:29;;39219:184;;;;:::o;39409:132::-;39476:4;39499:3;39491:11;;39529:4;39524:3;39520:14;39512:22;;39409:132;;;:::o;39547:108::-;39624:24;39642:5;39624:24;:::i;:::-;39619:3;39612:37;39547:108;;:::o;39661:179::-;39730:10;39751:46;39793:3;39785:6;39751:46;:::i;:::-;39829:4;39824:3;39820:14;39806:28;;39661:179;;;;:::o;39846:113::-;39916:4;39948;39943:3;39939:14;39931:22;;39846:113;;;:::o;39995:732::-;40114:3;40143:54;40191:5;40143:54;:::i;:::-;40213:86;40292:6;40287:3;40213:86;:::i;:::-;40206:93;;40323:56;40373:5;40323:56;:::i;:::-;40402:7;40433:1;40418:284;40443:6;40440:1;40437:13;40418:284;;;40519:6;40513:13;40546:63;40605:3;40590:13;40546:63;:::i;:::-;40539:70;;40632:60;40685:6;40632:60;:::i;:::-;40622:70;;40478:224;40465:1;40462;40458:9;40453:14;;40418:284;;;40422:14;40718:3;40711:10;;40119:608;;;39995:732;;;;:::o;40733:831::-;40996:4;41034:3;41023:9;41019:19;41011:27;;41048:71;41116:1;41105:9;41101:17;41092:6;41048:71;:::i;:::-;41129:80;41205:2;41194:9;41190:18;41181:6;41129:80;:::i;:::-;41256:9;41250:4;41246:20;41241:2;41230:9;41226:18;41219:48;41284:108;41387:4;41378:6;41284:108;:::i;:::-;41276:116;;41402:72;41470:2;41459:9;41455:18;41446:6;41402:72;:::i;:::-;41484:73;41552:3;41541:9;41537:19;41528:6;41484:73;:::i;:::-;40733:831;;;;;;;;:::o;41570:147::-;41671:11;41708:3;41693:18;;41570:147;;;;:::o;41723:114::-;;:::o;41843:398::-;42002:3;42023:83;42104:1;42099:3;42023:83;:::i;:::-;42016:90;;42115:93;42204:3;42115:93;:::i;:::-;42233:1;42228:3;42224:11;42217:18;;41843:398;;;:::o;42247:379::-;42431:3;42453:147;42596:3;42453:147;:::i;:::-;42446:154;;42617:3;42610:10;;42247:379;;;:::o;42632:807::-;42881:4;42919:3;42908:9;42904:19;42896:27;;42933:71;43001:1;42990:9;42986:17;42977:6;42933:71;:::i;:::-;43014:72;43082:2;43071:9;43067:18;43058:6;43014:72;:::i;:::-;43096:80;43172:2;43161:9;43157:18;43148:6;43096:80;:::i;:::-;43186;43262:2;43251:9;43247:18;43238:6;43186:80;:::i;:::-;43276:73;43344:3;43333:9;43329:19;43320:6;43276:73;:::i;:::-;43359;43427:3;43416:9;43412:19;43403:6;43359:73;:::i;:::-;42632:807;;;;;;;;;:::o;43445:663::-;43533:6;43541;43549;43598:2;43586:9;43577:7;43573:23;43569:32;43566:119;;;43604:79;;:::i;:::-;43566:119;43724:1;43749:64;43805:7;43796:6;43785:9;43781:22;43749:64;:::i;:::-;43739:74;;43695:128;43862:2;43888:64;43944:7;43935:6;43924:9;43920:22;43888:64;:::i;:::-;43878:74;;43833:129;44001:2;44027:64;44083:7;44074:6;44063:9;44059:22;44027:64;:::i;:::-;44017:74;;43972:129;43445:663;;;;;:::o;44114:332::-;44235:4;44273:2;44262:9;44258:18;44250:26;;44286:71;44354:1;44343:9;44339:17;44330:6;44286:71;:::i;:::-;44367:72;44435:2;44424:9;44420:18;44411:6;44367:72;:::i;:::-;44114:332;;;;;:::o

Swarm Source

ipfs://cbd463d201291b3bb7739a003a2bcc53fa03db5bcc05e2a005c55c11fe1cb556

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.