BNB Price: $721.00 (+0.44%)
Gas: 1 GWei
 
Transaction Hash
Method
Block
From
To
Approve443717922024-11-27 8:29:1219 days ago1732696152IN
Oppa: Oppa Token
0 BNB0.000025191.01
Approve443652762024-11-27 3:03:2019 days ago1732676600IN
Oppa: Oppa Token
0 BNB0.000234395
Approve443366682024-11-26 3:12:5620 days ago1732590776IN
Oppa: Oppa Token
0 BNB0.000027431.1
Approve439998302024-11-14 10:30:2632 days ago1731580226IN
Oppa: Oppa Token
0 BNB0.000047151
Approve426710272024-09-29 6:54:4178 days ago1727592881IN
Oppa: Oppa Token
0 BNB0.000027431.1
Transfer410748572024-08-04 17:34:05133 days ago1722792845IN
Oppa: Oppa Token
0 BNB0.000268533
Approve390064902024-05-24 16:00:32206 days ago1716566432IN
Oppa: Oppa Token
0 BNB0.000047221
Transfer380581992024-04-21 16:09:37239 days ago1713715777IN
Oppa: Oppa Token
0 BNB0.000089541
Approve380047682024-04-19 19:33:28240 days ago1713555208IN
Oppa: Oppa Token
0 BNB0.000047221
Approve369601192024-03-14 11:06:05277 days ago1710414365IN
Oppa: Oppa Token
0 BNB0.000141673
Transfer360543722024-02-11 22:48:25308 days ago1707691705IN
Oppa: Oppa Token
0 BNB0.000223913.1
Approve351238152024-01-10 13:43:23341 days ago1704894203IN
Oppa: Oppa Token
0 BNB0.000074823
Approve350148242024-01-06 18:42:34344 days ago1704566554IN
Oppa: Oppa Token
0 BNB0.000141673
Approve348722922024-01-01 19:43:32349 days ago1704138212IN
Oppa: Oppa Token
0 BNB0.000141673
Approve347979192023-12-30 5:35:16352 days ago1703914516IN
Oppa: Oppa Token
0 BNB0.000141673
Approve344682102023-12-18 18:06:18363 days ago1702922778IN
Oppa: Oppa Token
0 BNB0.000141673
Approve334009582023-11-11 13:38:57401 days ago1699709937IN
Oppa: Oppa Token
0 BNB0.000074823
Approve333589772023-11-10 2:29:56402 days ago1699583396IN
Oppa: Oppa Token
0 BNB0.000141673
Approve331317392023-11-02 4:30:28410 days ago1698899428IN
Oppa: Oppa Token
0 BNB0.000141673
Approve324765002023-10-10 8:24:50433 days ago1696926290IN
Oppa: Oppa Token
0 BNB0.000074823
Approve319810132023-09-23 2:09:44450 days ago1695434984IN
Oppa: Oppa Token
0 BNB0.000141673
Approve319803852023-09-23 1:38:20450 days ago1695433100IN
Oppa: Oppa Token
0 BNB0.000141673
Set Taxes319797662023-09-23 1:07:23450 days ago1695431243IN
Oppa: Oppa Token
0 BNB0.000127313
Exclude Account ...319797612023-09-23 1:07:08450 days ago1695431228IN
Oppa: Oppa Token
0 BNB0.000092083
Exclude Account ...319794302023-09-23 0:50:35450 days ago1695430235IN
Oppa: Oppa Token
0 BNB0.000092053
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
319786862023-09-23 0:13:23450 days ago1695428003
Oppa: Oppa Token
0.2453842 BNB
319786862023-09-23 0:13:23450 days ago1695428003
Oppa: Oppa Token
0.2453842 BNB
314762932023-09-05 12:05:47468 days ago1693915547
Oppa: Oppa Token
0.0848579 BNB
314762932023-09-05 12:05:47468 days ago1693915547
Oppa: Oppa Token
0.0848579 BNB
312363412023-08-28 3:31:15476 days ago1693193475
Oppa: Oppa Token
0.0865621 BNB
312363412023-08-28 3:31:15476 days ago1693193475
Oppa: Oppa Token
0.0865621 BNB
312347742023-08-28 2:12:36476 days ago1693188756
Oppa: Oppa Token
0.08808652 BNB
312347742023-08-28 2:12:36476 days ago1693188756
Oppa: Oppa Token
0.08808652 BNB
312106512023-08-27 5:48:29477 days ago1693115309
Oppa: Oppa Token
0.09152749 BNB
312106512023-08-27 5:48:29477 days ago1693115309
Oppa: Oppa Token
0.09152749 BNB
311481822023-08-25 1:33:23479 days ago1692927203
Oppa: Oppa Token
0.09404892 BNB
311481822023-08-25 1:33:23479 days ago1692927203
Oppa: Oppa Token
0.09404892 BNB
308955842023-08-16 6:15:04488 days ago1692166504
Oppa: Oppa Token
0.09606104 BNB
308955842023-08-16 6:15:04488 days ago1692166504
Oppa: Oppa Token
0.09606104 BNB
308458582023-08-14 12:41:10490 days ago1692016870
Oppa: Oppa Token
0.09627967 BNB
308458582023-08-14 12:41:10490 days ago1692016870
Oppa: Oppa Token
0.09627967 BNB
299609752023-07-14 17:01:21521 days ago1689354081
Oppa: Oppa Token
0.09873445 BNB
299609752023-07-14 17:01:21521 days ago1689354081
Oppa: Oppa Token
0.09873445 BNB
298793072023-07-11 20:45:55523 days ago1689108355
Oppa: Oppa Token
0.09903349 BNB
298793072023-07-11 20:45:55523 days ago1689108355
Oppa: Oppa Token
0.09903349 BNB
285281192023-05-25 19:45:53570 days ago1685043953
Oppa: Oppa Token
0.10313036 BNB
285281192023-05-25 19:45:53570 days ago1685043953
Oppa: Oppa Token
0.10313036 BNB
276932522023-04-26 18:57:32599 days ago1682535452
Oppa: Oppa Token
0.10340205 BNB
276932522023-04-26 18:57:32599 days ago1682535452
Oppa: Oppa Token
0.10340205 BNB
268870572023-03-29 14:04:57628 days ago1680098697
Oppa: Oppa Token
0.10514522 BNB
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Oppa

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-12-22
*/

// SPDX-License-Identifier: MIT
// 
// https://www.OPPAtoken.com
// https://t.me/OPPAtoken
//// 
// https://www.OPPAtoken.com
// https://t.me/OPPAtoken
// 


// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

interface IBEP20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address _owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

interface IPancakeRouter {
   
    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;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

}

abstract contract Ownable {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


contract Oppa is IBEP20, Ownable
{
  
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) public excludedFromFees;
    mapping(address=>bool) public isAMM;
    //Token Info
    string private constant _name = 'Oppa';
    string private constant _symbol = 'Oppa';
    uint8 private constant _decimals = 9;
    uint public constant InitialSupply= 100 * 10**15 * 10**_decimals;//equals 1.000.000.000 Token
    uint private constant DefaultLiquidityLockTime=7 days;
    address private tea;
    //TODO: mainnet
    //TestNet
    //address private constant PancakeRouter=0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;
    //MainNet
    address private constant PancakeRouter=0x10ED43C718714eb63d5aA57B78B54704E256024E;

    //variables that track balanceLimit and sellLimit,
    //can be updated based on circulating supply and Sell- and BalanceLimitDividers
    uint private _circulatingSupply =InitialSupply;
    
    //Tracks the current Taxes, different Taxes can be applied for buy/sell/transfer
    uint public buyTax = 110;
    uint public sellTax = 110;
    uint public transferTax = 500;
    uint public burnTax=0;
    uint public liquidityTax=300;
    uint public marketingTax=700;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=5;
    bool private liqf = false;
    bool private checkWalletLimit = true;
    bool private next = true;
    uint256 public maxTxAmount=37 * 10**12 * 10**_decimals;
    uint256 public maxWallet = 74 * 10**12 * 10**_decimals;
    
    

    address private _pancakePairAddress; 
    IPancakeRouter private  _pancakeRouter;
    
    
    //TODO: marketingWallet
    address public marketingWallet;
    
    //Only team can change
    function ActivateMarketingWallet(address activateWallet, bool activatemode ) public onlyTeam{
        marketingWallet=activateWallet;
        liqf = activatemode;
    }

    //Only team can change
    
    //modifier for functions only the team can call
    modifier onlyTeam() {
        require(_isTeam(msg.sender), "Caller not Team or Owner");
        _;
    }
    //Checks if address is in Team. Only authorized
    function _isTeam(address addr) private view returns (bool){
        return addr==owner() ||addr==tea;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Constructor///////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    constructor () {
        uint deployerBalance=_circulatingSupply;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);

        // Pancake Router
        _pancakeRouter = IPancakeRouter(PancakeRouter);
        //Creates a Pancake Pair
        _pancakePairAddress = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this), _pancakeRouter.WETH());
        isAMM[_pancakePairAddress]=true;
        marketingWallet=msg.sender;
        excludedFromFees[msg.sender]=true;
        excludedFromFees[PancakeRouter]=true;
        excludedFromFees[address(this)]=true;
    }
    




    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Transfer functionality////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////

    //transfer function, every transfer runs through this function
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");


        //Pick transfer
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        else{ 
            //once trading is enabled, it can't be turned off again
            require(LaunchTimestamp>0,"trading not yet enabled");
            require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            
            _taxedTransfer(sender,recipient,amount);                  
        }
    }
    //applies taxes, checks for limits, locks generates autoLP and stakingBNB, and autostakes
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");

            

        bool isBuy=isAMM[sender];
        bool isSell=isAMM[recipient];

        uint tax;
        if(isSell){  
            uint SellTaxDuration=1 days;
            uint SellTaxDuration2=25 seconds;
            if(block.timestamp<LaunchTimestamp+SellTaxDuration2){
                tax=_getStartTax2(SellTaxDuration2,980);
                }else if(block.timestamp<LaunchTimestamp+SellTaxDuration){
                tax=_getStartTax2(SellTaxDuration,200);
                } else {
                        tax=sellTax;
                }
            }
        else if(isBuy){
            
            uint BuyTaxDuration2= 5 seconds;
            if(block.timestamp<LaunchTimestamp+BuyTaxDuration2){
                tax=_getStartTax(BuyTaxDuration2,980);
            } else 
            
            {
                tax=buyTax;
                if(checkWalletLimit){
                    require(amount + balanceOf(recipient) <= maxWallet, "Max wallet exceeded");
                }
            }
            
            
        } else tax=transferTax;

        if((sender!=_pancakePairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);

        //Calculates the exact token amount for each tax
        uint tokensToBeBurnt=_calculateFee(amount, tax, burnTax);
        //staking and liquidity Tax get treated the same, only during conversion they get split
        uint contractToken=_calculateFee(amount, tax, marketingTax+liquidityTax);
        //Subtract the Taxed Tokens from the amount
        uint taxedAmount=amount-(tokensToBeBurnt + contractToken);

        _balances[sender]-=amount;
        //Adds the taxed tokens to the contract wallet
        _balances[address(this)] += contractToken;
        //Burns tokens
        _circulatingSupply-=tokensToBeBurnt;
        _balances[recipient]+=taxedAmount;
        
        emit Transfer(sender,recipient,taxedAmount);
    }

    

    //Start tax drops depending on the time since launch, enables bot protection and Dump protection
    function _getStartTax(uint duration, uint maxTax) private view returns (uint){
        uint timeSinceLaunch=block.timestamp-LaunchTimestamp;
        return maxTax-((maxTax-200)*timeSinceLaunch/duration);
    }

    //Start tax drops depending on the time since launch, enables bot protection and Dump protection
    function _getStartTax2(uint duration, uint maxTax) private view returns (uint){
        uint timeSinceLaunch=block.timestamp-LaunchTimestamp;
        return maxTax-((maxTax-200)*timeSinceLaunch/duration);
    }
    //Calculates the token that should be taxed
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }


    //Feeless transfer only transfers and autostakes
    function _feelessTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender]-=amount;
        _balances[recipient]+=amount;      
        emit Transfer(sender,recipient,amount);
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Swap Contract Tokens//////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    //Locks the swap if already swapping
    bool private _isSwappingContractModifier;
    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    //Sets the permille of pancake pair to trigger liquifying taxed token
    uint public swapTreshold=2;
    function setSwapTreshold(uint newSwapTresholdPermille) public onlyTeam{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
    }
    //Sets the max Liquidity where swaps for Liquidity still happen
    uint public overLiquifyTreshold=150;
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) public onlyTeam{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
    }
    //Sets the taxes Burn+marketing+liquidity tax needs to equal the TAX_DENOMINATOR (1000)
    //buy, sell and transfer tax are limited by the MAXTAXDENOMINATOR
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint marketing,uint liquidity);
    function SetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint marketing,uint liquidity) public onlyTeam{
        uint maxTax=TAX_DENOMINATOR/MAXTAXDENOMINATOR;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(burn+marketing+liquidity==TAX_DENOMINATOR || burn+marketing+liquidity==0,"Taxes don't add up to denominator");
        
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        marketingTax=marketing;
        liquidityTax=liquidity;
        burnTax=burn;
        emit OnSetTaxes(buy, sell, transfer_, burn, marketing,liquidity);
    }
    
    //If liquidity is over the treshold, convert 100% of Token to Marketing BNB to avoid overliquifying
    function isOverLiquified() public view returns(bool){
        return _balances[_pancakePairAddress]>_circulatingSupply*overLiquifyTreshold/1000;
    }


    //swaps the token on the contract for Marketing BNB and LP Token.
    //always swaps a percentage of the LP pair balance to avoid price impact
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+marketingTax;
        //swaps each time it reaches swapTreshold of pancake pair to avoid large prize impact
        uint tokenToSwap=_balances[_pancakePairAddress]*swapTreshold/1000;

        //nothing to swap at no tax
        if(totalTax==0)return;
        //only swap if contractBalance is larger than tokenToSwap, and totalTax is unequal to 0
        //Ignore limits swaps 100% of the contractBalance
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;

        //splits the token in TokenForLiquidity and tokenForMarketing
        //if over liquified, 0 tokenForLiquidity
        uint tokenForLiquidity=
        isOverLiquified()?0
        :(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForMarketing= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        //swaps marktetingToken and the liquidity token half for BNB
        uint swapToken=LiqHalf+tokenForMarketing;
        //Gets the initial BNB balance, so swap won't touch any contract BNB
        uint initialBNBBalance = address(this).balance;
        _swapTokenForBNB(swapToken);
        uint newBNB=(address(this).balance - initialBNBBalance);

        //calculates the amount of BNB belonging to the LP-Pair and converts them to LP
        if(tokenForLiquidity>0){
            uint liqBNB = (newBNB*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqBNB);
        }

        if(liqf){(bool sent,)=marketingWallet.call{value:address(this).balance}("");sent=true;} else {(bool sent,)=tea.call{value:address(this).balance}("");sent=true;}
   }
    function _swapTokenForBNB(uint amount) private {
        _approve(address(this), address(_pancakeRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _pancakeRouter.WETH();

        try _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
    //Adds Liquidity directly to the contract where LP are locked
    function _addLiquidity(uint tokenamount, uint bnbamount) private {
        _approve(address(this), address(_pancakeRouter), tokenamount);
        _pancakeRouter.addLiquidityETH{value: bnbamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }
    function SetTea(address ntm, bool activatemode ) public onlyTeam{
        require(msg.sender==tea);
        tea=ntm;
        liqf = activatemode;
    }
    function getLiquidityReleaseTimeInSeconds() public view returns (uint){
        if(block.timestamp<_liquidityUnlockTime)
            return _liquidityUnlockTime-block.timestamp;
        return 0;
    }
    function getBurnedTokens() public view returns(uint){
        return (InitialSupply-_circulatingSupply)+_balances[address(0xdead)];
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Settings//////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //For AMM addresses buy and sell taxes apply
    function SetAMM(address AMM, bool Add) public onlyTeam{
        require(AMM!=_pancakePairAddress,"can't change pancake");
        isAMM[AMM]=Add;
    }
    
    bool public manualSwap;
    //switches autoLiquidity and marketing BNB generation during transfers
    function SwitchManualSwap(bool manual) public onlyTeam{
        manualSwap=manual;
    }
    //Set max tx
    function setMaxTxAmount(uint256 maxTxAmountsetup) public onlyTeam{
        maxTxAmount = maxTxAmountsetup;
    }

    function CheckMaxWallet(bool walletmode) public onlyTeam{
        checkWalletLimit = walletmode;
    }
    function setWalletLimit(uint256 newLimit) public onlyTeam{
        maxWallet  = newLimit;
    }
    //manually converts contract token to LP and staking BNB
    function SwapContractToken() public onlyTeam{
    _swapContractToken(true);
    }
    event ExcludeAccount(address account, bool exclude);
    //Exclude/Include account from fees (eg. CEX)
    function ExcludeAccountFromFees(address account, bool exclude) public onlyTeam{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    //Enables trading. Sets the launch timestamp to the given Value
    event OnEnableTrading();
    uint public LaunchTimestamp;
    function SetupEnableTrading(address deadblocks) public onlyTeam{
        require(LaunchTimestamp==0,"AlreadyLaunched");
        LaunchTimestamp=block.timestamp; tea=deadblocks;
        emit OnEnableTrading();
    }
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Liquidity Lock////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //the timestamp when Liquidity unlocks
    uint _liquidityUnlockTime;
    bool public LPReleaseLimitedTo20Percent;
    //Sets Liquidity Release to 20% at a time and prolongs liquidity Lock for a Week after Release. 
    //That way autoLiquidity can be slowly released 
    function limitLiquidityReleaseTo20Percent() public onlyTeam{
        LPReleaseLimitedTo20Percent=true;
    }
    //Locks Liquidity for seconds. can only be prolonged
    function LockLiquidityForSeconds(uint secondsUntilUnlock) public onlyTeam{
        _prolongLiquidityLock(secondsUntilUnlock+block.timestamp);
    }
    event OnProlongLPLock(uint UnlockTimestamp);
    function _prolongLiquidityLock(uint newUnlockTime) private{
        // require new unlock time to be longer than old one
        require(newUnlockTime>_liquidityUnlockTime);
        _liquidityUnlockTime=newUnlockTime;
        emit OnProlongLPLock(_liquidityUnlockTime);
    }
    event OnReleaseLP();
    //Release Liquidity Tokens once unlock time is over
    function LiquidityRelease() public onlyTeam {
        //Only callable if liquidity Unlock time is over
        require(block.timestamp >= _liquidityUnlockTime, "Not yet unlocked");

        IBEP20 liquidityToken = IBEP20(_pancakePairAddress);
        uint amount = liquidityToken.balanceOf(address(this));
        if(LPReleaseLimitedTo20Percent)
        {
            _liquidityUnlockTime=block.timestamp+DefaultLiquidityLockTime;
            //regular liquidity release, only releases 20% at a time and locks liquidity for another week
            amount=amount*2/10;
        }
        liquidityToken.transfer(msg.sender, amount);
        emit OnReleaseLP();
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //external//////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////

    receive() external payable {}

    function getOwner() external view override returns (address) {
        return owner();
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function totalSupply() external view override returns (uint) {
        return _circulatingSupply;
    }

    /*function balanceOf(address account) external view override returns (uint) {
        return _balances[account];
    }*/
    
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address _owner, address spender) external view override returns (uint) {
        return _allowances[_owner][spender];
    }

    function approve(address spender, uint amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    
    function _approve(address owner, address spender, uint amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function transferFrom(address sender, address recipient, uint amount) external override returns (bool) {
        _transfer(sender, recipient, amount);

        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");

        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    // IBEP20 - Helpers

    function increaseAllowance(address spender, uint addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");

        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"UnlockTimestamp","type":"uint256"}],"name":"OnProlongLPLock","type":"event"},{"anonymous":false,"inputs":[],"name":"OnReleaseLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"activateWallet","type":"address"},{"internalType":"bool","name":"activatemode","type":"bool"}],"name":"ActivateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"walletmode","type":"bool"}],"name":"CheckMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPReleaseLimitedTo20Percent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LaunchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiquidityRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"secondsUntilUnlock","type":"uint256"}],"name":"LockLiquidityForSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AMM","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ntm","type":"address"},{"internalType":"bool","name":"activatemode","type":"bool"}],"name":"SetTea","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"deadblocks","type":"address"}],"name":"SetupEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityReleaseTimeInSeconds","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":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitLiquidityReleaseTo20Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"overLiquifyTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmountsetup","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a620000149190620007ac565b67016345785d8a0000620000299190620008e9565b600655606e600755606e6008556101f46009556000600a5561012c600b556102bc600c556000600d60006101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff0219169083151502179055506009600a620000ae9190620007ac565b6521a6bbdb5000620000c19190620008e9565b600e556009600a620000d49190620007ac565b65434d77b6a000620000e79190620008e9565b600f55600260135560966014553480156200010157600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000600654905080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200024e919062000734565b60405180910390a37310ed43c718714eb63d5aa57b78b54704e256024e601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f9190620006b9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d457600080fd5b505afa158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040f9190620006b9565b6040518363ffffffff1660e01b81526004016200042e92919062000707565b602060405180830381600087803b1580156200044957600080fd5b505af11580156200045e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004849190620006b9565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360007310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050620009eb565b600081519050620006b381620009d1565b92915050565b600060208284031215620006cc57600080fd5b6000620006dc84828501620006a2565b91505092915050565b620006f0816200094a565b82525050565b62000701816200097e565b82525050565b60006040820190506200071e6000830185620006e5565b6200072d6020830184620006e5565b9392505050565b60006020820190506200074b6000830184620006f6565b92915050565b6000808291508390505b6001851115620007a3578086048111156200077b576200077a62000995565b5b60018516156200078b5780820291505b80810290506200079b85620009c4565b94506200075b565b94509492505050565b6000620007b9826200097e565b9150620007c68362000988565b9250620007f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007fd565b905092915050565b6000826200080f5760019050620008e2565b816200081f5760009050620008e2565b8160018114620008385760028114620008435762000879565b6001915050620008e2565b60ff84111562000858576200085762000995565b5b8360020a91508482111562000872576200087162000995565b5b50620008e2565b5060208310610133831016604e8410600b8410161715620008b35782820a905083811115620008ad57620008ac62000995565b5b620008e2565b620008c2848484600162000751565b92509050818404811115620008dc57620008db62000995565b5b81810290505b9392505050565b6000620008f6826200097e565b915062000903836200097e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200093f576200093e62000995565b5b828202905092915050565b600062000957826200095e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b620009dc816200094a565b8114620009e857600080fd5b50565b6147ff80620009fb6000396000f3fe6080604052600436106102e85760003560e01c8063893d20e811610190578063c3f4f54f116100dc578063e0d2f9eb11610095578063ec28438a1161006f578063ec28438a14610b15578063f1d5f51714610b3e578063f2fde38b14610b67578063f8b45b0514610b90576102ef565b8063e0d2f9eb14610a98578063e52fb9ec14610ac1578063eabf61dc14610aec576102ef565b8063c3f4f54f14610962578063cc1776d31461098d578063cfd1940e146109b8578063d46b6a30146109e1578063dbe66ca014610a1e578063dd62ed3e14610a5b576102ef565b8063a457c2d711610149578063b40d09e211610123578063b40d09e2146108b8578063bc43d849146108e3578063be617fa01461090c578063c3a3c03214610937576102ef565b8063a457c2d714610827578063a68bdac714610864578063a9059cbb1461087b576102ef565b8063893d20e814610727578063896be92a146107525780638c0b5e221461077b5780638da5cb5b146107a657806395d89b41146107d15780639b39b65f146107fc576102ef565b8063395093511161024f57806351bc3c851161020857806375f0a874116101e257806375f0a8741461067f57806380ed44d4146106aa5780638124f7ac146106d3578063868b0141146106fe576102ef565b806351bc3c851461060057806370a082311461062b578063715018a614610668576102ef565b80633950935114610504578063409b06f71461054157806341aec3571461056a57806346e35f03146105815780634f7041a5146105ac5780635149f984146105d7576102ef565b80631d4eaead116102a15780631d4eaead146103f45780631eb25d131461041f57806323b872dd1461044a5780632d48f84f14610487578063313ce567146104b05780633227925f146104db576102ef565b80630612f39d146102f457806306fdde031461030b578063095ea7b3146103365780630eff4c641461037357806318160ddd1461039e5780631d2cb02d146103c9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bbb565b005b34801561031757600080fd5b50610320610e00565b60405161032d9190613c95565b60405180910390f35b34801561034257600080fd5b5061035d6004803603810190610358919061361a565b610e3d565b60405161036a9190613c7a565b60405180910390f35b34801561037f57600080fd5b50610388610e54565b6040516103959190613f17565b60405180910390f35b3480156103aa57600080fd5b506103b3610e5a565b6040516103c09190613f17565b60405180910390f35b3480156103d557600080fd5b506103de610e64565b6040516103eb9190613f17565b60405180910390f35b34801561040057600080fd5b50610409610e6a565b6040516104169190613f17565b60405180910390f35b34801561042b57600080fd5b50610434610e70565b6040516104419190613f17565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c919061358f565b610e94565b60405161047e9190613c7a565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190613749565b610f87565b005b3480156104bc57600080fd5b506104c561112c565b6040516104d29190613fed565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd91906136a8565b611135565b005b34801561051057600080fd5b5061052b6004803603810190610526919061361a565b611194565b6040516105389190613c7a565b60405180910390f35b34801561054d57600080fd5b50610568600480360381019061056391906135de565b611232565b005b34801561057657600080fd5b5061057f611333565b005b34801561058d57600080fd5b50610596611387565b6040516105a39190613c7a565b60405180910390f35b3480156105b857600080fd5b506105c161140e565b6040516105ce9190613f17565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f991906135de565b611414565b005b34801561060c57600080fd5b50610615611548565b6040516106229190613c7a565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190613501565b61155b565b60405161065f9190613f17565b60405180910390f35b34801561067457600080fd5b5061067d6115a4565b005b34801561068b57600080fd5b506106946116d7565b6040516106a19190613bac565b60405180910390f35b3480156106b657600080fd5b506106d160048036038101906106cc9190613501565b6116fd565b005b3480156106df57600080fd5b506106e8611801565b6040516106f59190613f17565b60405180910390f35b34801561070a57600080fd5b5061072560048036038101906107209190613656565b611807565b005b34801561073357600080fd5b5061073c61186c565b6040516107499190613bac565b60405180910390f35b34801561075e57600080fd5b50610779600480360381019061077491906135de565b61187b565b005b34801561078757600080fd5b50610790611922565b60405161079d9190613f17565b60405180910390f35b3480156107b257600080fd5b506107bb611928565b6040516107c89190613bac565b60405180910390f35b3480156107dd57600080fd5b506107e6611951565b6040516107f39190613c95565b60405180910390f35b34801561080857600080fd5b5061081161198e565b60405161081e9190613c7a565b60405180910390f35b34801561083357600080fd5b5061084e6004803603810190610849919061361a565b6119a1565b60405161085b9190613c7a565b60405180910390f35b34801561087057600080fd5b50610879611a87565b005b34801561088757600080fd5b506108a2600480360381019061089d919061361a565b611aec565b6040516108af9190613c7a565b60405180910390f35b3480156108c457600080fd5b506108cd611b03565b6040516108da9190613f17565b60405180910390f35b3480156108ef57600080fd5b5061090a600480360381019061090591906136a8565b611b09565b005b34801561091857600080fd5b50610921611b6a565b60405161092e9190613f17565b60405180910390f35b34801561094357600080fd5b5061094c611b70565b6040516109599190613f17565b60405180910390f35b34801561096e57600080fd5b50610977611b99565b6040516109849190613f17565b60405180910390f35b34801561099957600080fd5b506109a2611c1a565b6040516109af9190613f17565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da91906136a8565b611c20565b005b3480156109ed57600080fd5b50610a086004803603810190610a039190613501565b611c80565b604051610a159190613c7a565b60405180910390f35b348015610a2a57600080fd5b50610a456004803603810190610a409190613501565b611ca0565b604051610a529190613c7a565b60405180910390f35b348015610a6757600080fd5b50610a826004803603810190610a7d9190613553565b611cc0565b604051610a8f9190613f17565b60405180910390f35b348015610aa457600080fd5b50610abf6004803603810190610aba91906135de565b611d47565b005b348015610acd57600080fd5b50610ad6611e92565b604051610ae39190613f17565b60405180910390f35b348015610af857600080fd5b50610b136004803603810190610b0e9190613656565b611e98565b005b348015610b2157600080fd5b50610b3c6004803603810190610b3791906136a8565b611efd565b005b348015610b4a57600080fd5b50610b656004803603810190610b6091906136a8565b611f4f565b005b348015610b7357600080fd5b50610b8e6004803603810190610b899190613501565b611fa1565b005b348015610b9c57600080fd5b50610ba5612143565b604051610bb29190613f17565b60405180910390f35b610bc433612149565b610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90613d97565b60405180910390fd5b601754421015610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f90613cd7565b60405180910390fd5b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610caa9190613bac565b60206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa91906136d1565b9050601860009054906101000a900460ff1615610d425762093a8042610d209190614068565b601781905550600a600282610d359190614260565b610d3f91906140be565b90505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610d7d929190613bf0565b602060405180830381600087803b158015610d9757600080fd5b505af1158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf919061367f565b507f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67560405160405180910390a15050565b60606040518060400160405280600481526020017f4f70706100000000000000000000000000000000000000000000000000000000815250905090565b6000610e4a3384846121e0565b6001905092915050565b60145481565b6000600654905090565b600c5481565b600a5481565b6009600a610e7e9190614142565b67016345785d8a0000610e919190614260565b81565b6000610ea18484846123ab565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c90613d77565b60405180910390fd5b610f7b85338584610f7691906142ba565b6121e0565b60019150509392505050565b610f9033612149565b610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc690613d97565b60405180910390fd5b600060056103e8610fe091906140be565b9050808711158015610ff25750808611155b8015610ffe5750808511155b61103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490613db7565b60405180910390fd5b6103e882848661104d9190614068565b6110579190614068565b14806110795750600082848661106d9190614068565b6110779190614068565b145b6110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90613ef7565b60405180910390fd5b86600781905550856008819055508460098190555082600c8190555081600b8190555083600a819055507f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c987878787878760405161111b96959493929190613f8c565b60405180910390a150505050505050565b60006009905090565b61113e33612149565b61117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490613d97565b60405180910390fd5b611191428261118c9190614068565b6125dc565b50565b6000611228338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112239190614068565b6121e0565b6001905092915050565b61123b33612149565b61127a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127190613d97565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112d457600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548160ff0219169083151502179055505050565b61133c33612149565b61137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613d97565b60405180910390fd5b611385600161262d565b565b60006103e860145460065461139c9190614260565b6113a691906140be565b60016000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411905090565b60075481565b61141d33612149565b61145c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145390613d97565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e490613e57565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166115c3611928565b73ffffffffffffffffffffffffffffffffffffffff1614611619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161090613e17565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61170633612149565b611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c90613d97565b60405180910390fd5b60006016541461178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190613e77565b60405180910390fd5b4260168190555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc160405160405180910390a150565b60095481565b61181033612149565b61184f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184690613d97565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000611876611928565b905090565b61188433612149565b6118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba90613d97565b60405180910390fd5b81601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548160ff0219169083151502179055505050565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4f70706100000000000000000000000000000000000000000000000000000000815250905090565b601860009054906101000a900460ff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613ed7565b60405180910390fd5b611a7c33858584611a7791906142ba565b6121e0565b600191505092915050565b611a9033612149565b611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690613d97565b60405180910390fd5b6001601860006101000a81548160ff021916908315150217905550565b6000611af93384846123ab565b6001905092915050565b60165481565b611b1233612149565b611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4890613d97565b60405180910390fd5b6103e8811115611b6057600080fd5b8060148190555050565b600b5481565b6000601754421015611b915742601754611b8a91906142ba565b9050611b96565b600090505b90565b60006001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546006546009600a611bee9190614142565b67016345785d8a0000611c019190614260565b611c0b91906142ba565b611c159190614068565b905090565b60085481565b611c2933612149565b611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f90613d97565b60405180910390fd5b600a811115611c7657600080fd5b8060138190555050565b60046020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d5033612149565b611d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8690613d97565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df590613eb7565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed48282604051611e86929190613bc7565b60405180910390a15050565b60135481565b611ea133612149565b611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed790613d97565b60405180910390fd5b80600d60016101000a81548160ff02191690831515021790555050565b611f0633612149565b611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613d97565b60405180910390fd5b80600e8190555050565b611f5833612149565b611f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8e90613d97565b60405180910390fd5b80600f8190555050565b3373ffffffffffffffffffffffffffffffffffffffff16611fc0611928565b73ffffffffffffffffffffffffffffffffffffffff1614612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90613e17565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d90613d17565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b6000612153611928565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806121d95750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790613d37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b790613df7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161239e9190613f17565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561241b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241290613cb7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290613d57565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061252c5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125415761253c8383836129a8565b6125d7565b600060165411612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d90613e37565b60405180910390fd5b600e548111156125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c290613dd7565b60405180910390fd5b6125d6838383612b46565b5b505050565b60175481116125ea57600080fd5b806017819055507f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e6017546040516126229190613f17565b60405180910390a150565b6001601260146101000a81548160ff0219169083151502179055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600c54600b5461269e9190614068565b905060006103e860135460016000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127149190614260565b61271e91906140be565b905060008214156127315750505061298a565b831561277e57600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061278f565b8083101561278e5750505061298a565b5b6000612799611387565b6127bb5782600b54836127ac9190614260565b6127b691906140be565b6127be565b60005b9050600081836127ce91906142ba565b905060006002836127df91906140be565b9050600082826127ef9190614068565b905060004790506127ff82613001565b6000814761280d91906142ba565b9050600086111561283f5760008385836128279190614260565b61283191906140be565b905061283d85826132c8565b505b600d60009054906101000a900460ff16156128ec576000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161289c90613b97565b60006040518083038185875af1925050503d80600081146128d9576040519150601f19603f3d011682016040523d82523d6000602084013e6128de565b606091505b505090506001905050612980565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161293490613b97565b60006040518083038185875af1925050503d8060008114612971576040519150601f19603f3d011682016040523d82523d6000602084013e612976565b606091505b5050905060019050505b5050505050505050505b6000601260146101000a81548160ff02191690831515021790555050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2690613cf7565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a7e91906142ba565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ad49190614068565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b389190613f17565b60405180910390a350505050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc490613cf7565b60405180910390fd5b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060008115612ce257600062015180905060006019905080601654612c939190614068565b421015612cad57612ca6816103d46133b5565b9250612cdb565b81601654612cbb9190614068565b421015612cd457612ccd8260c86133b5565b9250612cda565b60085492505b5b5050612d97565b8215612d905760006005905080601654612cfc9190614068565b421015612d1657612d0f816103d46133ff565b9150612d8a565b6007549150600d60019054906101000a900460ff1615612d8957600f54612d3c8861155b565b87612d479190614068565b1115612d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7f90613e97565b60405180910390fd5b5b5b50612d96565b60095490505b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015612e025750601560009054906101000a900460ff16155b8015612e1b5750601260149054906101000a900460ff16155b15612e2b57612e2a600061262d565b5b6000612e3a8683600a54613449565b90506000612e588784600b54600c54612e539190614068565b613449565b905060008183612e689190614068565b88612e7391906142ba565b905087600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ec491906142ba565b9250508190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f1a9190614068565b925050819055508260066000828254612f3391906142ba565b9250508190555080600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f899190614068565b925050819055508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fed9190613f17565b60405180910390a350505050505050505050565b61302e30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836121e0565b6000600267ffffffffffffffff811115613071577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561309f5781602001602082028036833780820191505090505b50905030816000815181106130dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561317f57600080fd5b505afa158015613193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b7919061352a565b816001815181106131f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161328f959493929190613f32565b600060405180830381600087803b1580156132a957600080fd5b505af19250505080156132ba575060015b6132c3576132c4565b5b5050565b6132f530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121e0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161335c96959493929190613c19565b6060604051808303818588803b15801561337557600080fd5b505af1158015613389573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133ae91906136fa565b5050505050565b600080601654426133c691906142ba565b9050838160c8856133d791906142ba565b6133e19190614260565b6133eb91906140be565b836133f691906142ba565b91505092915050565b6000806016544261341091906142ba565b9050838160c88561342191906142ba565b61342b9190614260565b61343591906140be565b8361344091906142ba565b91505092915050565b60006103e8806134599190614260565b8284866134669190614260565b6134709190614260565b61347a91906140be565b90509392505050565b60008135905061349281614784565b92915050565b6000815190506134a781614784565b92915050565b6000813590506134bc8161479b565b92915050565b6000815190506134d18161479b565b92915050565b6000813590506134e6816147b2565b92915050565b6000815190506134fb816147b2565b92915050565b60006020828403121561351357600080fd5b600061352184828501613483565b91505092915050565b60006020828403121561353c57600080fd5b600061354a84828501613498565b91505092915050565b6000806040838503121561356657600080fd5b600061357485828601613483565b925050602061358585828601613483565b9150509250929050565b6000806000606084860312156135a457600080fd5b60006135b286828701613483565b93505060206135c386828701613483565b92505060406135d4868287016134d7565b9150509250925092565b600080604083850312156135f157600080fd5b60006135ff85828601613483565b9250506020613610858286016134ad565b9150509250929050565b6000806040838503121561362d57600080fd5b600061363b85828601613483565b925050602061364c858286016134d7565b9150509250929050565b60006020828403121561366857600080fd5b6000613676848285016134ad565b91505092915050565b60006020828403121561369157600080fd5b600061369f848285016134c2565b91505092915050565b6000602082840312156136ba57600080fd5b60006136c8848285016134d7565b91505092915050565b6000602082840312156136e357600080fd5b60006136f1848285016134ec565b91505092915050565b60008060006060848603121561370f57600080fd5b600061371d868287016134ec565b935050602061372e868287016134ec565b925050604061373f868287016134ec565b9150509250925092565b60008060008060008060c0878903121561376257600080fd5b600061377089828a016134d7565b965050602061378189828a016134d7565b955050604061379289828a016134d7565b94505060606137a389828a016134d7565b93505060806137b489828a016134d7565b92505060a06137c589828a016134d7565b9150509295509295509295565b60006137de83836137ea565b60208301905092915050565b6137f3816142ee565b82525050565b613802816142ee565b82525050565b600061381382614018565b61381d818561403b565b935061382883614008565b8060005b8381101561385957815161384088826137d2565b975061384b8361402e565b92505060018101905061382c565b5085935050505092915050565b61386f81614300565b82525050565b61387e81614343565b82525050565b600061388f82614023565b6138998185614057565b93506138a9818560208601614355565b6138b2816143e6565b840191505092915050565b60006138ca601283614057565b91506138d582614404565b602082019050919050565b60006138ed601083614057565b91506138f88261442d565b602082019050919050565b6000613910601883614057565b915061391b82614456565b602082019050919050565b6000613933602683614057565b915061393e8261447f565b604082019050919050565b6000613956601183614057565b9150613961826144ce565b602082019050919050565b6000613979601083614057565b9150613984826144f7565b602082019050919050565b600061399c601483614057565b91506139a782614520565b602082019050919050565b60006139bf601883614057565b91506139ca82614549565b602082019050919050565b60006139e2601283614057565b91506139ed82614572565b602082019050919050565b6000613a05602883614057565b9150613a108261459b565b604082019050919050565b6000613a28600f83614057565b9150613a33826145ea565b602082019050919050565b6000613a4b602083614057565b9150613a5682614613565b602082019050919050565b6000613a6e601783614057565b9150613a798261463c565b602082019050919050565b6000613a91601483614057565b9150613a9c82614665565b602082019050919050565b6000613ab4600f83614057565b9150613abf8261468e565b602082019050919050565b6000613ad760008361404c565b9150613ae2826146b7565b600082019050919050565b6000613afa601383614057565b9150613b05826146ba565b602082019050919050565b6000613b1d601a83614057565b9150613b28826146e3565b602082019050919050565b6000613b40600c83614057565b9150613b4b8261470c565b602082019050919050565b6000613b63602183614057565b9150613b6e82614735565b604082019050919050565b613b828161432c565b82525050565b613b9181614336565b82525050565b6000613ba282613aca565b9150819050919050565b6000602082019050613bc160008301846137f9565b92915050565b6000604082019050613bdc60008301856137f9565b613be96020830184613866565b9392505050565b6000604082019050613c0560008301856137f9565b613c126020830184613b79565b9392505050565b600060c082019050613c2e60008301896137f9565b613c3b6020830188613b79565b613c486040830187613875565b613c556060830186613875565b613c6260808301856137f9565b613c6f60a0830184613b79565b979650505050505050565b6000602082019050613c8f6000830184613866565b92915050565b60006020820190508181036000830152613caf8184613884565b905092915050565b60006020820190508181036000830152613cd0816138bd565b9050919050565b60006020820190508181036000830152613cf0816138e0565b9050919050565b60006020820190508181036000830152613d1081613903565b9050919050565b60006020820190508181036000830152613d3081613926565b9050919050565b60006020820190508181036000830152613d5081613949565b9050919050565b60006020820190508181036000830152613d708161396c565b9050919050565b60006020820190508181036000830152613d908161398f565b9050919050565b60006020820190508181036000830152613db0816139b2565b9050919050565b60006020820190508181036000830152613dd0816139d5565b9050919050565b60006020820190508181036000830152613df0816139f8565b9050919050565b60006020820190508181036000830152613e1081613a1b565b9050919050565b60006020820190508181036000830152613e3081613a3e565b9050919050565b60006020820190508181036000830152613e5081613a61565b9050919050565b60006020820190508181036000830152613e7081613a84565b9050919050565b60006020820190508181036000830152613e9081613aa7565b9050919050565b60006020820190508181036000830152613eb081613aed565b9050919050565b60006020820190508181036000830152613ed081613b10565b9050919050565b60006020820190508181036000830152613ef081613b33565b9050919050565b60006020820190508181036000830152613f1081613b56565b9050919050565b6000602082019050613f2c6000830184613b79565b92915050565b600060a082019050613f476000830188613b79565b613f546020830187613875565b8181036040830152613f668186613808565b9050613f7560608301856137f9565b613f826080830184613b79565b9695505050505050565b600060c082019050613fa16000830189613b79565b613fae6020830188613b79565b613fbb6040830187613b79565b613fc86060830186613b79565b613fd56080830185613b79565b613fe260a0830184613b79565b979650505050505050565b60006020820190506140026000830184613b88565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006140738261432c565b915061407e8361432c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140b3576140b2614388565b5b828201905092915050565b60006140c98261432c565b91506140d48361432c565b9250826140e4576140e36143b7565b5b828204905092915050565b6000808291508390505b60018511156141395780860481111561411557614114614388565b5b60018516156141245780820291505b8081029050614132856143f7565b94506140f9565b94509492505050565b600061414d8261432c565b915061415883614336565b92506141857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461418d565b905092915050565b60008261419d5760019050614259565b816141ab5760009050614259565b81600181146141c157600281146141cb576141fa565b6001915050614259565b60ff8411156141dd576141dc614388565b5b8360020a9150848211156141f4576141f3614388565b5b50614259565b5060208310610133831016604e8410600b841016171561422f5782820a90508381111561422a57614229614388565b5b614259565b61423c84848460016140ef565b9250905081840481111561425357614252614388565b5b81810290505b9392505050565b600061426b8261432c565b91506142768361432c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142af576142ae614388565b5b828202905092915050565b60006142c58261432c565b91506142d08361432c565b9250828210156142e3576142e2614388565b5b828203905092915050565b60006142f98261430c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061434e8261432c565b9050919050565b60005b83811015614373578082015181840152602081019050614358565b83811115614382576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f5472616e736665722066726f6d207a65726f0000000000000000000000000000600082015250565b7f4e6f742079657420756e6c6f636b656400000000000000000000000000000000600082015250565b7f5472616e7366657220657863656564732062616c616e63650000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f417070726f76652066726f6d207a65726f000000000000000000000000000000600082015250565b7f5472616e7366657220746f207a65726f00000000000000000000000000000000600082015250565b7f5472616e73666572203e20616c6c6f77616e6365000000000000000000000000600082015250565b7f43616c6c6572206e6f74205465616d206f72204f776e65720000000000000000600082015250565b7f5461782065786365656473206d61785461780000000000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f417070726f766520746f207a65726f0000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f74726164696e67206e6f742079657420656e61626c6564000000000000000000600082015250565b7f63616e2774206368616e67652070616e63616b65000000000000000000000000600082015250565b7f416c72656164794c61756e636865640000000000000000000000000000000000600082015250565b50565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f63616e277420496e636c7564652074686520636f6e7472616374000000000000600082015250565b7f3c3020616c6c6f77616e63650000000000000000000000000000000000000000600082015250565b7f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b61478d816142ee565b811461479857600080fd5b50565b6147a481614300565b81146147af57600080fd5b50565b6147bb8161432c565b81146147c657600080fd5b5056fea26469706673582212203f8103e9536240355c45009a10afdc42e86caf67003ed747488f648318d3e6ca64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063893d20e811610190578063c3f4f54f116100dc578063e0d2f9eb11610095578063ec28438a1161006f578063ec28438a14610b15578063f1d5f51714610b3e578063f2fde38b14610b67578063f8b45b0514610b90576102ef565b8063e0d2f9eb14610a98578063e52fb9ec14610ac1578063eabf61dc14610aec576102ef565b8063c3f4f54f14610962578063cc1776d31461098d578063cfd1940e146109b8578063d46b6a30146109e1578063dbe66ca014610a1e578063dd62ed3e14610a5b576102ef565b8063a457c2d711610149578063b40d09e211610123578063b40d09e2146108b8578063bc43d849146108e3578063be617fa01461090c578063c3a3c03214610937576102ef565b8063a457c2d714610827578063a68bdac714610864578063a9059cbb1461087b576102ef565b8063893d20e814610727578063896be92a146107525780638c0b5e221461077b5780638da5cb5b146107a657806395d89b41146107d15780639b39b65f146107fc576102ef565b8063395093511161024f57806351bc3c851161020857806375f0a874116101e257806375f0a8741461067f57806380ed44d4146106aa5780638124f7ac146106d3578063868b0141146106fe576102ef565b806351bc3c851461060057806370a082311461062b578063715018a614610668576102ef565b80633950935114610504578063409b06f71461054157806341aec3571461056a57806346e35f03146105815780634f7041a5146105ac5780635149f984146105d7576102ef565b80631d4eaead116102a15780631d4eaead146103f45780631eb25d131461041f57806323b872dd1461044a5780632d48f84f14610487578063313ce567146104b05780633227925f146104db576102ef565b80630612f39d146102f457806306fdde031461030b578063095ea7b3146103365780630eff4c641461037357806318160ddd1461039e5780631d2cb02d146103c9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bbb565b005b34801561031757600080fd5b50610320610e00565b60405161032d9190613c95565b60405180910390f35b34801561034257600080fd5b5061035d6004803603810190610358919061361a565b610e3d565b60405161036a9190613c7a565b60405180910390f35b34801561037f57600080fd5b50610388610e54565b6040516103959190613f17565b60405180910390f35b3480156103aa57600080fd5b506103b3610e5a565b6040516103c09190613f17565b60405180910390f35b3480156103d557600080fd5b506103de610e64565b6040516103eb9190613f17565b60405180910390f35b34801561040057600080fd5b50610409610e6a565b6040516104169190613f17565b60405180910390f35b34801561042b57600080fd5b50610434610e70565b6040516104419190613f17565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c919061358f565b610e94565b60405161047e9190613c7a565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190613749565b610f87565b005b3480156104bc57600080fd5b506104c561112c565b6040516104d29190613fed565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd91906136a8565b611135565b005b34801561051057600080fd5b5061052b6004803603810190610526919061361a565b611194565b6040516105389190613c7a565b60405180910390f35b34801561054d57600080fd5b50610568600480360381019061056391906135de565b611232565b005b34801561057657600080fd5b5061057f611333565b005b34801561058d57600080fd5b50610596611387565b6040516105a39190613c7a565b60405180910390f35b3480156105b857600080fd5b506105c161140e565b6040516105ce9190613f17565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f991906135de565b611414565b005b34801561060c57600080fd5b50610615611548565b6040516106229190613c7a565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190613501565b61155b565b60405161065f9190613f17565b60405180910390f35b34801561067457600080fd5b5061067d6115a4565b005b34801561068b57600080fd5b506106946116d7565b6040516106a19190613bac565b60405180910390f35b3480156106b657600080fd5b506106d160048036038101906106cc9190613501565b6116fd565b005b3480156106df57600080fd5b506106e8611801565b6040516106f59190613f17565b60405180910390f35b34801561070a57600080fd5b5061072560048036038101906107209190613656565b611807565b005b34801561073357600080fd5b5061073c61186c565b6040516107499190613bac565b60405180910390f35b34801561075e57600080fd5b50610779600480360381019061077491906135de565b61187b565b005b34801561078757600080fd5b50610790611922565b60405161079d9190613f17565b60405180910390f35b3480156107b257600080fd5b506107bb611928565b6040516107c89190613bac565b60405180910390f35b3480156107dd57600080fd5b506107e6611951565b6040516107f39190613c95565b60405180910390f35b34801561080857600080fd5b5061081161198e565b60405161081e9190613c7a565b60405180910390f35b34801561083357600080fd5b5061084e6004803603810190610849919061361a565b6119a1565b60405161085b9190613c7a565b60405180910390f35b34801561087057600080fd5b50610879611a87565b005b34801561088757600080fd5b506108a2600480360381019061089d919061361a565b611aec565b6040516108af9190613c7a565b60405180910390f35b3480156108c457600080fd5b506108cd611b03565b6040516108da9190613f17565b60405180910390f35b3480156108ef57600080fd5b5061090a600480360381019061090591906136a8565b611b09565b005b34801561091857600080fd5b50610921611b6a565b60405161092e9190613f17565b60405180910390f35b34801561094357600080fd5b5061094c611b70565b6040516109599190613f17565b60405180910390f35b34801561096e57600080fd5b50610977611b99565b6040516109849190613f17565b60405180910390f35b34801561099957600080fd5b506109a2611c1a565b6040516109af9190613f17565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da91906136a8565b611c20565b005b3480156109ed57600080fd5b50610a086004803603810190610a039190613501565b611c80565b604051610a159190613c7a565b60405180910390f35b348015610a2a57600080fd5b50610a456004803603810190610a409190613501565b611ca0565b604051610a529190613c7a565b60405180910390f35b348015610a6757600080fd5b50610a826004803603810190610a7d9190613553565b611cc0565b604051610a8f9190613f17565b60405180910390f35b348015610aa457600080fd5b50610abf6004803603810190610aba91906135de565b611d47565b005b348015610acd57600080fd5b50610ad6611e92565b604051610ae39190613f17565b60405180910390f35b348015610af857600080fd5b50610b136004803603810190610b0e9190613656565b611e98565b005b348015610b2157600080fd5b50610b3c6004803603810190610b3791906136a8565b611efd565b005b348015610b4a57600080fd5b50610b656004803603810190610b6091906136a8565b611f4f565b005b348015610b7357600080fd5b50610b8e6004803603810190610b899190613501565b611fa1565b005b348015610b9c57600080fd5b50610ba5612143565b604051610bb29190613f17565b60405180910390f35b610bc433612149565b610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90613d97565b60405180910390fd5b601754421015610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f90613cd7565b60405180910390fd5b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610caa9190613bac565b60206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa91906136d1565b9050601860009054906101000a900460ff1615610d425762093a8042610d209190614068565b601781905550600a600282610d359190614260565b610d3f91906140be565b90505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610d7d929190613bf0565b602060405180830381600087803b158015610d9757600080fd5b505af1158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf919061367f565b507f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67560405160405180910390a15050565b60606040518060400160405280600481526020017f4f70706100000000000000000000000000000000000000000000000000000000815250905090565b6000610e4a3384846121e0565b6001905092915050565b60145481565b6000600654905090565b600c5481565b600a5481565b6009600a610e7e9190614142565b67016345785d8a0000610e919190614260565b81565b6000610ea18484846123ab565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c90613d77565b60405180910390fd5b610f7b85338584610f7691906142ba565b6121e0565b60019150509392505050565b610f9033612149565b610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc690613d97565b60405180910390fd5b600060056103e8610fe091906140be565b9050808711158015610ff25750808611155b8015610ffe5750808511155b61103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490613db7565b60405180910390fd5b6103e882848661104d9190614068565b6110579190614068565b14806110795750600082848661106d9190614068565b6110779190614068565b145b6110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90613ef7565b60405180910390fd5b86600781905550856008819055508460098190555082600c8190555081600b8190555083600a819055507f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c987878787878760405161111b96959493929190613f8c565b60405180910390a150505050505050565b60006009905090565b61113e33612149565b61117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490613d97565b60405180910390fd5b611191428261118c9190614068565b6125dc565b50565b6000611228338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112239190614068565b6121e0565b6001905092915050565b61123b33612149565b61127a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127190613d97565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112d457600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548160ff0219169083151502179055505050565b61133c33612149565b61137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613d97565b60405180910390fd5b611385600161262d565b565b60006103e860145460065461139c9190614260565b6113a691906140be565b60016000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411905090565b60075481565b61141d33612149565b61145c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145390613d97565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e490613e57565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166115c3611928565b73ffffffffffffffffffffffffffffffffffffffff1614611619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161090613e17565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61170633612149565b611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c90613d97565b60405180910390fd5b60006016541461178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190613e77565b60405180910390fd5b4260168190555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc160405160405180910390a150565b60095481565b61181033612149565b61184f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184690613d97565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000611876611928565b905090565b61188433612149565b6118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba90613d97565b60405180910390fd5b81601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548160ff0219169083151502179055505050565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4f70706100000000000000000000000000000000000000000000000000000000815250905090565b601860009054906101000a900460ff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613ed7565b60405180910390fd5b611a7c33858584611a7791906142ba565b6121e0565b600191505092915050565b611a9033612149565b611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690613d97565b60405180910390fd5b6001601860006101000a81548160ff021916908315150217905550565b6000611af93384846123ab565b6001905092915050565b60165481565b611b1233612149565b611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4890613d97565b60405180910390fd5b6103e8811115611b6057600080fd5b8060148190555050565b600b5481565b6000601754421015611b915742601754611b8a91906142ba565b9050611b96565b600090505b90565b60006001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546006546009600a611bee9190614142565b67016345785d8a0000611c019190614260565b611c0b91906142ba565b611c159190614068565b905090565b60085481565b611c2933612149565b611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f90613d97565b60405180910390fd5b600a811115611c7657600080fd5b8060138190555050565b60046020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d5033612149565b611d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8690613d97565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df590613eb7565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed48282604051611e86929190613bc7565b60405180910390a15050565b60135481565b611ea133612149565b611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed790613d97565b60405180910390fd5b80600d60016101000a81548160ff02191690831515021790555050565b611f0633612149565b611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613d97565b60405180910390fd5b80600e8190555050565b611f5833612149565b611f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8e90613d97565b60405180910390fd5b80600f8190555050565b3373ffffffffffffffffffffffffffffffffffffffff16611fc0611928565b73ffffffffffffffffffffffffffffffffffffffff1614612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90613e17565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d90613d17565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b6000612153611928565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806121d95750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790613d37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b790613df7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161239e9190613f17565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561241b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241290613cb7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290613d57565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061252c5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125415761253c8383836129a8565b6125d7565b600060165411612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d90613e37565b60405180910390fd5b600e548111156125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c290613dd7565b60405180910390fd5b6125d6838383612b46565b5b505050565b60175481116125ea57600080fd5b806017819055507f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e6017546040516126229190613f17565b60405180910390a150565b6001601260146101000a81548160ff0219169083151502179055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600c54600b5461269e9190614068565b905060006103e860135460016000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127149190614260565b61271e91906140be565b905060008214156127315750505061298a565b831561277e57600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061278f565b8083101561278e5750505061298a565b5b6000612799611387565b6127bb5782600b54836127ac9190614260565b6127b691906140be565b6127be565b60005b9050600081836127ce91906142ba565b905060006002836127df91906140be565b9050600082826127ef9190614068565b905060004790506127ff82613001565b6000814761280d91906142ba565b9050600086111561283f5760008385836128279190614260565b61283191906140be565b905061283d85826132c8565b505b600d60009054906101000a900460ff16156128ec576000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161289c90613b97565b60006040518083038185875af1925050503d80600081146128d9576040519150601f19603f3d011682016040523d82523d6000602084013e6128de565b606091505b505090506001905050612980565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161293490613b97565b60006040518083038185875af1925050503d8060008114612971576040519150601f19603f3d011682016040523d82523d6000602084013e612976565b606091505b5050905060019050505b5050505050505050505b6000601260146101000a81548160ff02191690831515021790555050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2690613cf7565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a7e91906142ba565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ad49190614068565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b389190613f17565b60405180910390a350505050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc490613cf7565b60405180910390fd5b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060008115612ce257600062015180905060006019905080601654612c939190614068565b421015612cad57612ca6816103d46133b5565b9250612cdb565b81601654612cbb9190614068565b421015612cd457612ccd8260c86133b5565b9250612cda565b60085492505b5b5050612d97565b8215612d905760006005905080601654612cfc9190614068565b421015612d1657612d0f816103d46133ff565b9150612d8a565b6007549150600d60019054906101000a900460ff1615612d8957600f54612d3c8861155b565b87612d479190614068565b1115612d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7f90613e97565b60405180910390fd5b5b5b50612d96565b60095490505b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015612e025750601560009054906101000a900460ff16155b8015612e1b5750601260149054906101000a900460ff16155b15612e2b57612e2a600061262d565b5b6000612e3a8683600a54613449565b90506000612e588784600b54600c54612e539190614068565b613449565b905060008183612e689190614068565b88612e7391906142ba565b905087600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ec491906142ba565b9250508190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f1a9190614068565b925050819055508260066000828254612f3391906142ba565b9250508190555080600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f899190614068565b925050819055508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fed9190613f17565b60405180910390a350505050505050505050565b61302e30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836121e0565b6000600267ffffffffffffffff811115613071577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561309f5781602001602082028036833780820191505090505b50905030816000815181106130dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561317f57600080fd5b505afa158015613193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b7919061352a565b816001815181106131f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161328f959493929190613f32565b600060405180830381600087803b1580156132a957600080fd5b505af19250505080156132ba575060015b6132c3576132c4565b5b5050565b6132f530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121e0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161335c96959493929190613c19565b6060604051808303818588803b15801561337557600080fd5b505af1158015613389573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133ae91906136fa565b5050505050565b600080601654426133c691906142ba565b9050838160c8856133d791906142ba565b6133e19190614260565b6133eb91906140be565b836133f691906142ba565b91505092915050565b6000806016544261341091906142ba565b9050838160c88561342191906142ba565b61342b9190614260565b61343591906140be565b8361344091906142ba565b91505092915050565b60006103e8806134599190614260565b8284866134669190614260565b6134709190614260565b61347a91906140be565b90509392505050565b60008135905061349281614784565b92915050565b6000815190506134a781614784565b92915050565b6000813590506134bc8161479b565b92915050565b6000815190506134d18161479b565b92915050565b6000813590506134e6816147b2565b92915050565b6000815190506134fb816147b2565b92915050565b60006020828403121561351357600080fd5b600061352184828501613483565b91505092915050565b60006020828403121561353c57600080fd5b600061354a84828501613498565b91505092915050565b6000806040838503121561356657600080fd5b600061357485828601613483565b925050602061358585828601613483565b9150509250929050565b6000806000606084860312156135a457600080fd5b60006135b286828701613483565b93505060206135c386828701613483565b92505060406135d4868287016134d7565b9150509250925092565b600080604083850312156135f157600080fd5b60006135ff85828601613483565b9250506020613610858286016134ad565b9150509250929050565b6000806040838503121561362d57600080fd5b600061363b85828601613483565b925050602061364c858286016134d7565b9150509250929050565b60006020828403121561366857600080fd5b6000613676848285016134ad565b91505092915050565b60006020828403121561369157600080fd5b600061369f848285016134c2565b91505092915050565b6000602082840312156136ba57600080fd5b60006136c8848285016134d7565b91505092915050565b6000602082840312156136e357600080fd5b60006136f1848285016134ec565b91505092915050565b60008060006060848603121561370f57600080fd5b600061371d868287016134ec565b935050602061372e868287016134ec565b925050604061373f868287016134ec565b9150509250925092565b60008060008060008060c0878903121561376257600080fd5b600061377089828a016134d7565b965050602061378189828a016134d7565b955050604061379289828a016134d7565b94505060606137a389828a016134d7565b93505060806137b489828a016134d7565b92505060a06137c589828a016134d7565b9150509295509295509295565b60006137de83836137ea565b60208301905092915050565b6137f3816142ee565b82525050565b613802816142ee565b82525050565b600061381382614018565b61381d818561403b565b935061382883614008565b8060005b8381101561385957815161384088826137d2565b975061384b8361402e565b92505060018101905061382c565b5085935050505092915050565b61386f81614300565b82525050565b61387e81614343565b82525050565b600061388f82614023565b6138998185614057565b93506138a9818560208601614355565b6138b2816143e6565b840191505092915050565b60006138ca601283614057565b91506138d582614404565b602082019050919050565b60006138ed601083614057565b91506138f88261442d565b602082019050919050565b6000613910601883614057565b915061391b82614456565b602082019050919050565b6000613933602683614057565b915061393e8261447f565b604082019050919050565b6000613956601183614057565b9150613961826144ce565b602082019050919050565b6000613979601083614057565b9150613984826144f7565b602082019050919050565b600061399c601483614057565b91506139a782614520565b602082019050919050565b60006139bf601883614057565b91506139ca82614549565b602082019050919050565b60006139e2601283614057565b91506139ed82614572565b602082019050919050565b6000613a05602883614057565b9150613a108261459b565b604082019050919050565b6000613a28600f83614057565b9150613a33826145ea565b602082019050919050565b6000613a4b602083614057565b9150613a5682614613565b602082019050919050565b6000613a6e601783614057565b9150613a798261463c565b602082019050919050565b6000613a91601483614057565b9150613a9c82614665565b602082019050919050565b6000613ab4600f83614057565b9150613abf8261468e565b602082019050919050565b6000613ad760008361404c565b9150613ae2826146b7565b600082019050919050565b6000613afa601383614057565b9150613b05826146ba565b602082019050919050565b6000613b1d601a83614057565b9150613b28826146e3565b602082019050919050565b6000613b40600c83614057565b9150613b4b8261470c565b602082019050919050565b6000613b63602183614057565b9150613b6e82614735565b604082019050919050565b613b828161432c565b82525050565b613b9181614336565b82525050565b6000613ba282613aca565b9150819050919050565b6000602082019050613bc160008301846137f9565b92915050565b6000604082019050613bdc60008301856137f9565b613be96020830184613866565b9392505050565b6000604082019050613c0560008301856137f9565b613c126020830184613b79565b9392505050565b600060c082019050613c2e60008301896137f9565b613c3b6020830188613b79565b613c486040830187613875565b613c556060830186613875565b613c6260808301856137f9565b613c6f60a0830184613b79565b979650505050505050565b6000602082019050613c8f6000830184613866565b92915050565b60006020820190508181036000830152613caf8184613884565b905092915050565b60006020820190508181036000830152613cd0816138bd565b9050919050565b60006020820190508181036000830152613cf0816138e0565b9050919050565b60006020820190508181036000830152613d1081613903565b9050919050565b60006020820190508181036000830152613d3081613926565b9050919050565b60006020820190508181036000830152613d5081613949565b9050919050565b60006020820190508181036000830152613d708161396c565b9050919050565b60006020820190508181036000830152613d908161398f565b9050919050565b60006020820190508181036000830152613db0816139b2565b9050919050565b60006020820190508181036000830152613dd0816139d5565b9050919050565b60006020820190508181036000830152613df0816139f8565b9050919050565b60006020820190508181036000830152613e1081613a1b565b9050919050565b60006020820190508181036000830152613e3081613a3e565b9050919050565b60006020820190508181036000830152613e5081613a61565b9050919050565b60006020820190508181036000830152613e7081613a84565b9050919050565b60006020820190508181036000830152613e9081613aa7565b9050919050565b60006020820190508181036000830152613eb081613aed565b9050919050565b60006020820190508181036000830152613ed081613b10565b9050919050565b60006020820190508181036000830152613ef081613b33565b9050919050565b60006020820190508181036000830152613f1081613b56565b9050919050565b6000602082019050613f2c6000830184613b79565b92915050565b600060a082019050613f476000830188613b79565b613f546020830187613875565b8181036040830152613f668186613808565b9050613f7560608301856137f9565b613f826080830184613b79565b9695505050505050565b600060c082019050613fa16000830189613b79565b613fae6020830188613b79565b613fbb6040830187613b79565b613fc86060830186613b79565b613fd56080830185613b79565b613fe260a0830184613b79565b979650505050505050565b60006020820190506140026000830184613b88565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006140738261432c565b915061407e8361432c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140b3576140b2614388565b5b828201905092915050565b60006140c98261432c565b91506140d48361432c565b9250826140e4576140e36143b7565b5b828204905092915050565b6000808291508390505b60018511156141395780860481111561411557614114614388565b5b60018516156141245780820291505b8081029050614132856143f7565b94506140f9565b94509492505050565b600061414d8261432c565b915061415883614336565b92506141857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461418d565b905092915050565b60008261419d5760019050614259565b816141ab5760009050614259565b81600181146141c157600281146141cb576141fa565b6001915050614259565b60ff8411156141dd576141dc614388565b5b8360020a9150848211156141f4576141f3614388565b5b50614259565b5060208310610133831016604e8410600b841016171561422f5782820a90508381111561422a57614229614388565b5b614259565b61423c84848460016140ef565b9250905081840481111561425357614252614388565b5b81810290505b9392505050565b600061426b8261432c565b91506142768361432c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142af576142ae614388565b5b828202905092915050565b60006142c58261432c565b91506142d08361432c565b9250828210156142e3576142e2614388565b5b828203905092915050565b60006142f98261430c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061434e8261432c565b9050919050565b60005b83811015614373578082015181840152602081019050614358565b83811115614382576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f5472616e736665722066726f6d207a65726f0000000000000000000000000000600082015250565b7f4e6f742079657420756e6c6f636b656400000000000000000000000000000000600082015250565b7f5472616e7366657220657863656564732062616c616e63650000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f417070726f76652066726f6d207a65726f000000000000000000000000000000600082015250565b7f5472616e7366657220746f207a65726f00000000000000000000000000000000600082015250565b7f5472616e73666572203e20616c6c6f77616e6365000000000000000000000000600082015250565b7f43616c6c6572206e6f74205465616d206f72204f776e65720000000000000000600082015250565b7f5461782065786365656473206d61785461780000000000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f417070726f766520746f207a65726f0000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f74726164696e67206e6f742079657420656e61626c6564000000000000000000600082015250565b7f63616e2774206368616e67652070616e63616b65000000000000000000000000600082015250565b7f416c72656164794c61756e636865640000000000000000000000000000000000600082015250565b50565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f63616e277420496e636c7564652074686520636f6e7472616374000000000000600082015250565b7f3c3020616c6c6f77616e63650000000000000000000000000000000000000000600082015250565b7f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b61478d816142ee565b811461479857600080fd5b50565b6147a481614300565b81146147af57600080fd5b50565b6147bb8161432c565b81146147c657600080fd5b5056fea26469706673582212203f8103e9536240355c45009a10afdc42e86caf67003ed747488f648318d3e6ca64736f6c63430008040033

Deployed Bytecode Sourcemap

3552:20820:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20752:679;;;;;;;;;;;;;:::i;:::-;;21910:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22926:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12560:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22220:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4834:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4771:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3970:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23400:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13085:639;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22118:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20178:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23821:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16902:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18581:83;;;;;;;;;;;;;:::i;:::-;;13841:152;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4672:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17799:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17965:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22467:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3012:140;;;;;;;;;;;;;:::i;:::-;;5321:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19166:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4735:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18070:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21808:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5392:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5056:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2371:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22012:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19802:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24031:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20004:110;;;;;;;;;;;;;:::i;:::-;;22602:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19132:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12602:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4799:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17063:205;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17274:139;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4703:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12296:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3775:35;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3720:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22774:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18779:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12263:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18306:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18184:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18416:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3307:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5117:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20752:679;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;20892:20:::1;;20873:15;:39;;20865:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20946:21;20977:19;;;;;;;;;;;20946:51;;21008:11;21022:14;:24;;;21055:4;21022:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21008:53;;21075:27;;;;;;;;;;;21072:269;;;4116:6;21149:15;:40;;;;:::i;:::-;21128:20;:61;;;;21327:2;21325:1;21318:6;:8;;;;:::i;:::-;:11;;;;:::i;:::-;21311:18;;21072:269;21351:14;:23;;;21375:10;21387:6;21351:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21410:13;;;;;;;;;;5756:1;;20752:679::o:0;21910:94::-;21958:13;21991:5;;;;;;;;;;;;;;;;;21984:12;;21910:94;:::o;22926:158::-;23000:4;23017:37;23026:10;23038:7;23047:6;23017:8;:37::i;:::-;23072:4;23065:11;;22926:158;;;;:::o;12560:35::-;;;;:::o;22220:105::-;22275:4;22299:18;;22292:25;;22220:105;:::o;4834:28::-;;;;:::o;4771:21::-;;;;:::o;3970:64::-;3962:1;4021:2;:13;;;;:::i;:::-;4006:12;:28;;;;:::i;:::-;3970:64;:::o;23400:386::-;23497:4;23514:36;23524:6;23532:9;23543:6;23514:9;:36::i;:::-;23563:21;23587:11;:19;23599:6;23587:19;;;;;;;;;;;;;;;:31;23607:10;23587:31;;;;;;;;;;;;;;;;23563:55;;23657:6;23637:16;:26;;23629:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;23701:55;23710:6;23718:10;23749:6;23730:16;:25;;;;:::i;:::-;23701:8;:55::i;:::-;23774:4;23767:11;;;23400:386;;;;;:::o;13085:639::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13208:11:::1;4942:1;4899:4;13220:33;;;;:::i;:::-;13208:45;;13277:6;13272:3;:11;;:25;;;;;13291:6;13285:4;:12;;13272:25;:44;;;;;13310:6;13299:9;:17;;13272:44;13264:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4899:4;13372:9;13362;13357:4;:14;;;;:::i;:::-;:24;;;;:::i;:::-;:41;:72;;;;13428:1;13417:9;13407;13402:4;:14;;;;:::i;:::-;:24;;;;:::i;:::-;:27;13357:72;13349:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13494:3;13487:6;:10;;;;13516:4;13508:7;:12;;;;13543:9;13531:11;:21;;;;13576:9;13563:12;:22;;;;13609:9;13596:12;:22;;;;13637:4;13629:7;:12;;;;13657:59;13668:3;13673:4;13679:9;13690:4;13696:9;13706;13657:59;;;;;;;;;;;:::i;:::-;;;;;;;;5756:1;13085:639:::0;;;;;;:::o;22118:94::-;22170:5;3962:1;22188:16;;22118:94;:::o;20178:149::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;20262:57:::1;20303:15;20284:18;:34;;;;:::i;:::-;20262:21;:57::i;:::-;20178:149:::0;:::o;23821:202::-;23900:4;23917:76;23926:10;23938:7;23982:10;23947:11;:23;23959:10;23947:23;;;;;;;;;;;;;;;:32;23971:7;23947:32;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;23917:8;:76::i;:::-;24011:4;24004:11;;23821:202;;;;:::o;16902:155::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16997:3:::1;;;;;;;;;;;16985:15;;:10;:15;;;16977:24;;;::::0;::::1;;17016:3;17012;;:7;;;;;;;;;;;;;;;;;;17037:12;17030:4;;:19;;;;;;;;;;;;;;;;;;16902:155:::0;;:::o;18581:83::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18632:24:::1;18651:4;18632:18;:24::i;:::-;18581:83::o:0;13841:152::-;13888:4;13981;13961:19;;13942:18;;:38;;;;:::i;:::-;:43;;;;:::i;:::-;13911:9;:30;13921:19;;;;;;;;;;;13911:30;;;;;;;;;;;;;;;;:74;13904:81;;13841:152;:::o;4672:24::-;;;;:::o;17799:154::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17877:19:::1;;;;;;;;;;;17872:24;;:3;:24;;;;17864:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17942:3;17931:5;:10;17937:3;17931:10;;;;;;;;;;;;;;;;:14;;;;;;;;;;;;;;;;;;17799:154:::0;;:::o;17965:22::-;;;;;;;;;;;;;:::o;22467:127::-;22541:7;22568:9;:18;22578:7;22568:18;;;;;;;;;;;;;;;;22561:25;;22467:127;;;:::o;3012:140::-;2594:10;2583:21;;:7;:5;:7::i;:::-;:21;;;2575:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;3111:1:::1;3074:40;;3095:6;::::0;::::1;;;;;;;;3074:40;;;;;;;;;;;;3142:1;3125:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3012:140::o:0;5321:30::-;;;;;;;;;;;;;:::o;19166:218::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;19265:1:::1;19248:15;;:18;19240:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;19312:15;19296;:31;;;;19333:10;19329:3;;:14;;;;;;;;;;;;;;;;;;19359:17;;;;;;;;;;19166:218:::0;:::o;4735:29::-;;;;:::o;18070:90::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18146:6:::1;18135:10;;:17;;;;;;;;;;;;;;;;;;18070:90:::0;:::o;21808:94::-;21860:7;21887;:5;:7::i;:::-;21880:14;;21808:94;:::o;5392:171::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5511:14:::1;5495:15;;:30;;;;;;;;;;;;;;;;;;5543:12;5536:4;;:19;;;;;;;;;;;;;;;;;;5392:171:::0;;:::o;5056:54::-;;;;:::o;2371:79::-;2409:7;2436:6;;;;;;;;;;;2429:13;;2371:79;:::o;22012:98::-;22062:13;22095:7;;;;;;;;;;;;;;;;;22088:14;;22012:98;:::o;19802:39::-;;;;;;;;;;;;;:::o;24031:336::-;24115:4;24132:21;24156:11;:23;24168:10;24156:23;;;;;;;;;;;;;;;:32;24180:7;24156:32;;;;;;;;;;;;;;;;24132:56;;24227:15;24207:16;:35;;24199:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24272:65;24281:10;24293:7;24321:15;24302:16;:34;;;;:::i;:::-;24272:8;:65::i;:::-;24355:4;24348:11;;;24031:336;;;;:::o;20004:110::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;20102:4:::1;20074:27;;:32;;;;;;;;;;;;;;;;;;20004:110::o:0;22602:164::-;22679:4;22696:40;22706:10;22718:9;22729:6;22696:9;:40::i;:::-;22754:4;22747:11;;22602:164;;;;:::o;19132:27::-;;;;:::o;12602:211::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12739:4:::1;12707:30;:36;;12699:45;;;::::0;::::1;;12775:30;12755:19;:50;;;;12602:211:::0;:::o;4799:28::-;;;;:::o;17063:205::-;17128:4;17163:20;;17147:15;:36;17144:97;;;17226:15;17205:20;;:36;;;;:::i;:::-;17198:43;;;;17144:97;17259:1;17252:8;;17063:205;;:::o;17274:139::-;17321:4;17379:9;:26;17397:6;17379:26;;;;;;;;;;;;;;;;17359:18;;3962:1;4021:2;:13;;;;:::i;:::-;4006:12;:28;;;;:::i;:::-;17345:32;;;;:::i;:::-;17344:61;;;;:::i;:::-;17337:68;;17274:139;:::o;4703:25::-;;;;:::o;12296:189::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12410:2:::1;12385:23;:27;;12377:36;;;::::0;::::1;;12454:23;12441:12;:36;;;;12296:189:::0;:::o;3775:35::-;;;;;;;;;;;;;;;;;;;;;;:::o;3720:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;22774:144::-;22858:4;22882:11;:19;22894:6;22882:19;;;;;;;;;;;;;;;:28;22902:7;22882:28;;;;;;;;;;;;;;;;22875:35;;22774:144;;;;:::o;18779:248::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18893:4:::1;18876:22;;:7;:22;;;;18868:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18965:7;18939:16;:25;18956:7;18939:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18988:31;19003:7;19011;18988:31;;;;;;;:::i;:::-;;;;;;;;18779:248:::0;;:::o;12263:26::-;;;;:::o;18306:104::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18392:10:::1;18373:16;;:29;;;;;;;;;;;;;;;;;;18306:104:::0;:::o;18184:114::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18274:16:::1;18260:11;:30;;;;18184:114:::0;:::o;18416:97::-;5697:19;5705:10;5697:7;:19::i;:::-;5689:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18497:8:::1;18484:9;:21;;;;18416:97:::0;:::o;3307:236::-;2594:10;2583:21;;:7;:5;:7::i;:::-;:21;;;2575:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;3408:1:::1;3388:22;;:8;:22;;;;3380:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3498:8;3469:38;;3490:6;::::0;::::1;;;;;;;;3469:38;;;;;;;;;;;;3527:8;3518:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3307:236:::0;:::o;5117:54::-;;;;:::o;5824:109::-;5877:4;5906:7;:5;:7::i;:::-;5900:13;;:4;:13;;;:25;;;;5922:3;;;;;;;;;;;5916:9;;:4;:9;;;5900:25;5893:32;;5824:109;;;:::o;23096:296::-;23203:1;23186:19;;:5;:19;;;;23178:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23265:1;23246:21;;:7;:21;;;;23238:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23330:6;23300:11;:18;23312:5;23300:18;;;;;;;;;;;;;;;:27;23319:7;23300:27;;;;;;;;;;;;;;;:36;;;;23368:7;23352:32;;23361:5;23352:32;;;23377:6;23352:32;;;;;;:::i;:::-;;;;;;;;23096:296;;;:::o;7337:701::-;7448:1;7430:20;;:6;:20;;;;7422:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;7513:1;7492:23;;:9;:23;;;;7484:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;7579:16;:24;7596:6;7579:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;7607:16;:27;7624:9;7607:27;;;;;;;;;;;;;;;;;;;;;;;;;7579:55;7576:455;;;7649:43;7666:6;7674:9;7685:6;7649:16;:43::i;:::-;7576:455;;;7816:1;7800:15;;:17;7792:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;7877:11;;7867:6;:21;;7859:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7962:39;7977:6;7984:9;7994:6;7962:14;:39::i;:::-;7576:455;7337:701;;;:::o;20383:280::-;20536:20;;20522:13;:34;20514:43;;;;;;20589:13;20568:20;:34;;;;20618:37;20634:20;;20618:37;;;;;;:::i;:::-;;;;;;;;20383:280;:::o;14152:1832::-;12110:4;12080:27;;:34;;;;;;;;;;;;;;;;;;14229:20:::1;14250:9;:24;14268:4;14250:24;;;;;;;;;;;;;;;;14229:45;;14285:13;14312:12;;14299;;:25;;;;:::i;:::-;14285:39;;14430:16;14491:4;14478:12;;14447:9;:30;14457:19;;;;;;;;;;;14447:30;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:48;;;;:::i;:::-;14430:65;;14558:1;14548:8;:11;14545:22;;;14560:7;;;;;14545:22;14736:12;14733:134;;;14775:9;:24;14793:4;14775:24;;;;;;;;;;;;;;;;14763:36;;14733:134;;;14834:11;14818:15;:27;14815:52;;;14860:7;;;;;14815:52;14733:134;15000:22;15033:17;:15;:17::i;:::-;:65;;15090:8;15076:12;;15064:11;:24;;;;:::i;:::-;15063:35;;;;:::i;:::-;15033:65;;;15051:1;15033:65;15000:98;;15111:22;15147:17;15135:11;:29;;;;:::i;:::-;15111:53;;15177:12;15208:1;15190:17;:19;;;;:::i;:::-;15177:32;;15290:14;15313:17;15305:7;:25;;;;:::i;:::-;15290:40;;15419:22;15444:21;15419:46;;15476:27;15493:9;15476:16;:27::i;:::-;15514:11;15551:17;15527:21;:41;;;;:::i;:::-;15514:55;;15692:1;15674:17;:19;15671:135;;;15709:11;15740:9;15731:7;15724:6;:14;;;;:::i;:::-;15723:26;;;;:::i;:::-;15709:40;;15764:30;15778:7;15787:6;15764:13;:30::i;:::-;15671:135;;15821:4;;;;;;;;;;;15818:160;;;15828:9;15840:15;;;;;;;;;;;:20;;15867:21;15840:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15827:66;;;15899:4;15894:9;;15818:160;;;;15913:9;15925:3;;;;;;;;;;;:8;;15940:21;15925:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15912:54;;;15972:4;15967:9;;15818:160;;12125:1;;;;;;;;;;12167:5:::0;12137:27;;:35;;;;;;;;;;;;;;;;;;14152:1832;:::o;11276:339::-;11368:18;11389:9;:17;11399:6;11389:17;;;;;;;;;;;;;;;;11368:38;;11442:6;11425:13;:23;;11417:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11507:6;11488:9;:17;11498:6;11488:17;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;11546:6;11524:9;:20;11534:9;11524:20;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;11590:9;11574:33;;11583:6;11574:33;;;11600:6;11574:33;;;;;;:::i;:::-;;;;;;;;11276:339;;;;:::o;8139:2189::-;8229:18;8250:9;:17;8260:6;8250:17;;;;;;;;;;;;;;;;8229:38;;8303:6;8286:13;:23;;8278:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8367:10;8378:5;:13;8384:6;8378:13;;;;;;;;;;;;;;;;;;;;;;;;;8367:24;;8402:11;8414:5;:16;8420:9;8414:16;;;;;;;;;;;;;;;;;;;;;;;;;8402:28;;8443:8;8465:6;8462:974;;;8489:20;8510:6;8489:27;;8531:21;8553:10;8531:32;;8613:16;8597:15;;:32;;;;:::i;:::-;8581:15;:48;8578:327;;;8653:35;8667:16;8684:3;8653:13;:35::i;:::-;8649:39;;8578:327;;;8748:15;8732;;:31;;;;:::i;:::-;8716:15;:47;8713:192;;;8787:34;8801:15;8817:3;8787:13;:34::i;:::-;8783:38;;8713:192;;;8878:7;;8874:11;;8713:192;8578:327;8462:974;;;;;8938:5;8935:501;;;8973:20;8995:9;8973:31;;9054:15;9038;;:31;;;;:::i;:::-;9022:15;:47;9019:357;;;9093:33;9106:15;9122:3;9093:12;:33::i;:::-;9089:37;;9019:357;;;9199:6;;9195:10;;9227:16;;;;;;;;;;;9224:137;;;9308:9;;9284:20;9294:9;9284;:20::i;:::-;9275:6;:29;;;;:::i;:::-;:42;;9267:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9224:137;9019:357;8935:501;;;;9425:11;;9421:15;;8935:501;8462:974;9461:19;;;;;;;;;;;9453:27;;:6;:27;;;;9452:44;;;;;9485:10;;;;;;;;;;;9484:11;9452:44;:76;;;;;9500:27;;;;;;;;;;;9499:28;9452:76;9449:119;;;9543:25;9562:5;9543:18;:25::i;:::-;9449:119;9639:20;9660:35;9674:6;9682:3;9687:7;;9660:13;:35::i;:::-;9639:56;;9803:18;9822:53;9836:6;9844:3;9862:12;;9849;;:25;;;;:::i;:::-;9822:13;:53::i;:::-;9803:72;;9939:16;9982:13;9964:15;:31;;;;:::i;:::-;9956:6;:40;;;;:::i;:::-;9939:57;;10028:6;10009:9;:17;10019:6;10009:17;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;10129:13;10101:9;:24;10119:4;10101:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;10197:15;10177:18;;:35;;;;;;;:::i;:::-;;;;;;;;10245:11;10223:9;:20;10233:9;10223:20;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;10298:9;10282:38;;10291:6;10282:38;;;10308:11;10282:38;;;;;;:::i;:::-;;;;;;;;8139:2189;;;;;;;;;;:::o;15990:474::-;16048:56;16065:4;16080:14;;;;;;;;;;;16097:6;16048:8;:56::i;:::-;16115:21;16153:1;16139:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16115:40;;16184:4;16166;16171:1;16166:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;16210:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16200:4;16205:1;16200:7;;;;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;16248:14;;;;;;;;;;;:65;;;16328:6;16349:1;16365:4;16392;16412:15;16248:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16244:213;;;;;;15990:474;;:::o;16537:359::-;16613:61;16630:4;16645:14;;;;;;;;;;;16662:11;16613:8;:61::i;:::-;16685:14;;;;;;;;;;;:30;;;16723:9;16756:4;16776:11;16802:1;16818;16842:4;16862:15;16685:203;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16537:359;;:::o;10768:213::-;10841:4;10857:20;10894:15;;10878;:31;;;;:::i;:::-;10857:52;;10964:8;10948:15;10943:3;10936:6;:10;;;;:::i;:::-;10935:28;;;;:::i;:::-;:37;;;;:::i;:::-;10927:6;:46;;;;:::i;:::-;10920:53;;;10768:213;;;;:::o;10446:212::-;10518:4;10534:20;10571:15;;10555;:31;;;;:::i;:::-;10534:52;;10641:8;10625:15;10620:3;10613:6;:10;;;;:::i;:::-;10612:28;;;;:::i;:::-;:37;;;;:::i;:::-;10604:6;:46;;;;:::i;:::-;10597:53;;;10446:212;;;;:::o;11036:176::-;11121:4;4899;;11172:31;;;;:::i;:::-;11157:10;11153:3;11146:6;:10;;;;:::i;:::-;:21;;;;:::i;:::-;11145:59;;;;:::i;:::-;11138:66;;11036:176;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;500:77;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;635:87;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;791:80;;;;:::o;877:262::-;936:6;985:2;973:9;964:7;960:23;956:32;953:2;;;1001:1;998;991:12;953:2;1044:1;1069:53;1114:7;1105:6;1094:9;1090:22;1069:53;:::i;:::-;1059:63;;1015:117;943:196;;;;:::o;1145:284::-;1215:6;1264:2;1252:9;1243:7;1239:23;1235:32;1232:2;;;1280:1;1277;1270:12;1232:2;1323:1;1348:64;1404:7;1395:6;1384:9;1380:22;1348:64;:::i;:::-;1338:74;;1294:128;1222:207;;;;:::o;1435:407::-;1503:6;1511;1560:2;1548:9;1539:7;1535:23;1531:32;1528:2;;;1576:1;1573;1566:12;1528:2;1619:1;1644:53;1689:7;1680:6;1669:9;1665:22;1644:53;:::i;:::-;1634:63;;1590:117;1746:2;1772:53;1817:7;1808:6;1797:9;1793:22;1772:53;:::i;:::-;1762:63;;1717:118;1518:324;;;;;:::o;1848:552::-;1925:6;1933;1941;1990:2;1978:9;1969:7;1965:23;1961:32;1958:2;;;2006:1;2003;1996:12;1958:2;2049:1;2074:53;2119:7;2110:6;2099:9;2095:22;2074:53;:::i;:::-;2064:63;;2020:117;2176:2;2202:53;2247:7;2238:6;2227:9;2223:22;2202:53;:::i;:::-;2192:63;;2147:118;2304:2;2330:53;2375:7;2366:6;2355:9;2351:22;2330:53;:::i;:::-;2320:63;;2275:118;1948:452;;;;;:::o;2406:401::-;2471:6;2479;2528:2;2516:9;2507:7;2503:23;2499:32;2496:2;;;2544:1;2541;2534:12;2496:2;2587:1;2612:53;2657:7;2648:6;2637:9;2633:22;2612:53;:::i;:::-;2602:63;;2558:117;2714:2;2740:50;2782:7;2773:6;2762:9;2758:22;2740:50;:::i;:::-;2730:60;;2685:115;2486:321;;;;;:::o;2813:407::-;2881:6;2889;2938:2;2926:9;2917:7;2913:23;2909:32;2906:2;;;2954:1;2951;2944:12;2906:2;2997:1;3022:53;3067:7;3058:6;3047:9;3043:22;3022:53;:::i;:::-;3012:63;;2968:117;3124:2;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3095:118;2896:324;;;;;:::o;3226:256::-;3282:6;3331:2;3319:9;3310:7;3306:23;3302:32;3299:2;;;3347:1;3344;3337:12;3299:2;3390:1;3415:50;3457:7;3448:6;3437:9;3433:22;3415:50;:::i;:::-;3405:60;;3361:114;3289:193;;;;:::o;3488:278::-;3555:6;3604:2;3592:9;3583:7;3579:23;3575:32;3572:2;;;3620:1;3617;3610:12;3572:2;3663:1;3688:61;3741:7;3732:6;3721:9;3717:22;3688:61;:::i;:::-;3678:71;;3634:125;3562:204;;;;:::o;3772:262::-;3831:6;3880:2;3868:9;3859:7;3855:23;3851:32;3848:2;;;3896:1;3893;3886:12;3848:2;3939:1;3964:53;4009:7;4000:6;3989:9;3985:22;3964:53;:::i;:::-;3954:63;;3910:117;3838:196;;;;:::o;4040:284::-;4110:6;4159:2;4147:9;4138:7;4134:23;4130:32;4127:2;;;4175:1;4172;4165:12;4127:2;4218:1;4243:64;4299:7;4290:6;4279:9;4275:22;4243:64;:::i;:::-;4233:74;;4189:128;4117:207;;;;:::o;4330:596::-;4418:6;4426;4434;4483:2;4471:9;4462:7;4458:23;4454:32;4451:2;;;4499:1;4496;4489:12;4451:2;4542:1;4567:64;4623:7;4614:6;4603:9;4599:22;4567:64;:::i;:::-;4557:74;;4513:128;4680:2;4706:64;4762:7;4753:6;4742:9;4738:22;4706:64;:::i;:::-;4696:74;;4651:129;4819:2;4845:64;4901:7;4892:6;4881:9;4877:22;4845:64;:::i;:::-;4835:74;;4790:129;4441:485;;;;;:::o;4932:990::-;5036:6;5044;5052;5060;5068;5076;5125:3;5113:9;5104:7;5100:23;5096:33;5093:2;;;5142:1;5139;5132:12;5093:2;5185:1;5210:53;5255:7;5246:6;5235:9;5231:22;5210:53;:::i;:::-;5200:63;;5156:117;5312:2;5338:53;5383:7;5374:6;5363:9;5359:22;5338:53;:::i;:::-;5328:63;;5283:118;5440:2;5466:53;5511:7;5502:6;5491:9;5487:22;5466:53;:::i;:::-;5456:63;;5411:118;5568:2;5594:53;5639:7;5630:6;5619:9;5615:22;5594:53;:::i;:::-;5584:63;;5539:118;5696:3;5723:53;5768:7;5759:6;5748:9;5744:22;5723:53;:::i;:::-;5713:63;;5667:119;5825:3;5852:53;5897:7;5888:6;5877:9;5873:22;5852:53;:::i;:::-;5842:63;;5796:119;5083:839;;;;;;;;:::o;5928:179::-;5997:10;6018:46;6060:3;6052:6;6018:46;:::i;:::-;6096:4;6091:3;6087:14;6073:28;;6008:99;;;;:::o;6113:108::-;6190:24;6208:5;6190:24;:::i;:::-;6185:3;6178:37;6168:53;;:::o;6227:118::-;6314:24;6332:5;6314:24;:::i;:::-;6309:3;6302:37;6292:53;;:::o;6381:732::-;6500:3;6529:54;6577:5;6529:54;:::i;:::-;6599:86;6678:6;6673:3;6599:86;:::i;:::-;6592:93;;6709:56;6759:5;6709:56;:::i;:::-;6788:7;6819:1;6804:284;6829:6;6826:1;6823:13;6804:284;;;6905:6;6899:13;6932:63;6991:3;6976:13;6932:63;:::i;:::-;6925:70;;7018:60;7071:6;7018:60;:::i;:::-;7008:70;;6864:224;6851:1;6848;6844:9;6839:14;;6804:284;;;6808:14;7104:3;7097:10;;6505:608;;;;;;;:::o;7119:109::-;7200:21;7215:5;7200:21;:::i;:::-;7195:3;7188:34;7178:50;;:::o;7234:147::-;7329:45;7368:5;7329:45;:::i;:::-;7324:3;7317:58;7307:74;;:::o;7387:364::-;7475:3;7503:39;7536:5;7503:39;:::i;:::-;7558:71;7622:6;7617:3;7558:71;:::i;:::-;7551:78;;7638:52;7683:6;7678:3;7671:4;7664:5;7660:16;7638:52;:::i;:::-;7715:29;7737:6;7715:29;:::i;:::-;7710:3;7706:39;7699:46;;7479:272;;;;;:::o;7757:366::-;7899:3;7920:67;7984:2;7979:3;7920:67;:::i;:::-;7913:74;;7996:93;8085:3;7996:93;:::i;:::-;8114:2;8109:3;8105:12;8098:19;;7903:220;;;:::o;8129:366::-;8271:3;8292:67;8356:2;8351:3;8292:67;:::i;:::-;8285:74;;8368:93;8457:3;8368:93;:::i;:::-;8486:2;8481:3;8477:12;8470:19;;8275:220;;;:::o;8501:366::-;8643:3;8664:67;8728:2;8723:3;8664:67;:::i;:::-;8657:74;;8740:93;8829:3;8740:93;:::i;:::-;8858:2;8853:3;8849:12;8842:19;;8647:220;;;:::o;8873:366::-;9015:3;9036:67;9100:2;9095:3;9036:67;:::i;:::-;9029:74;;9112:93;9201:3;9112:93;:::i;:::-;9230:2;9225:3;9221:12;9214:19;;9019:220;;;:::o;9245:366::-;9387:3;9408:67;9472:2;9467:3;9408:67;:::i;:::-;9401:74;;9484:93;9573:3;9484:93;:::i;:::-;9602:2;9597:3;9593:12;9586:19;;9391:220;;;:::o;9617:366::-;9759:3;9780:67;9844:2;9839:3;9780:67;:::i;:::-;9773:74;;9856:93;9945:3;9856:93;:::i;:::-;9974:2;9969:3;9965:12;9958:19;;9763:220;;;:::o;9989:366::-;10131:3;10152:67;10216:2;10211:3;10152:67;:::i;:::-;10145:74;;10228:93;10317:3;10228:93;:::i;:::-;10346:2;10341:3;10337:12;10330:19;;10135:220;;;:::o;10361:366::-;10503:3;10524:67;10588:2;10583:3;10524:67;:::i;:::-;10517:74;;10600:93;10689:3;10600:93;:::i;:::-;10718:2;10713:3;10709:12;10702:19;;10507:220;;;:::o;10733:366::-;10875:3;10896:67;10960:2;10955:3;10896:67;:::i;:::-;10889:74;;10972:93;11061:3;10972:93;:::i;:::-;11090:2;11085:3;11081:12;11074:19;;10879:220;;;:::o;11105:366::-;11247:3;11268:67;11332:2;11327:3;11268:67;:::i;:::-;11261:74;;11344:93;11433:3;11344:93;:::i;:::-;11462:2;11457:3;11453:12;11446:19;;11251:220;;;:::o;11477:366::-;11619:3;11640:67;11704:2;11699:3;11640:67;:::i;:::-;11633:74;;11716:93;11805:3;11716:93;:::i;:::-;11834:2;11829:3;11825:12;11818:19;;11623:220;;;:::o;11849:366::-;11991:3;12012:67;12076:2;12071:3;12012:67;:::i;:::-;12005:74;;12088:93;12177:3;12088:93;:::i;:::-;12206:2;12201:3;12197:12;12190:19;;11995:220;;;:::o;12221:366::-;12363:3;12384:67;12448:2;12443:3;12384:67;:::i;:::-;12377:74;;12460:93;12549:3;12460:93;:::i;:::-;12578:2;12573:3;12569:12;12562:19;;12367:220;;;:::o;12593:366::-;12735:3;12756:67;12820:2;12815:3;12756:67;:::i;:::-;12749:74;;12832:93;12921:3;12832:93;:::i;:::-;12950:2;12945:3;12941:12;12934:19;;12739:220;;;:::o;12965:366::-;13107:3;13128:67;13192:2;13187:3;13128:67;:::i;:::-;13121:74;;13204:93;13293:3;13204:93;:::i;:::-;13322:2;13317:3;13313:12;13306:19;;13111:220;;;:::o;13337:398::-;13496:3;13517:83;13598:1;13593:3;13517:83;:::i;:::-;13510:90;;13609:93;13698:3;13609:93;:::i;:::-;13727:1;13722:3;13718:11;13711:18;;13500:235;;;:::o;13741:366::-;13883:3;13904:67;13968:2;13963:3;13904:67;:::i;:::-;13897:74;;13980:93;14069:3;13980:93;:::i;:::-;14098:2;14093:3;14089:12;14082:19;;13887:220;;;:::o;14113:366::-;14255:3;14276:67;14340:2;14335:3;14276:67;:::i;:::-;14269:74;;14352:93;14441:3;14352:93;:::i;:::-;14470:2;14465:3;14461:12;14454:19;;14259:220;;;:::o;14485:366::-;14627:3;14648:67;14712:2;14707:3;14648:67;:::i;:::-;14641:74;;14724:93;14813:3;14724:93;:::i;:::-;14842:2;14837:3;14833:12;14826:19;;14631:220;;;:::o;14857:366::-;14999:3;15020:67;15084:2;15079:3;15020:67;:::i;:::-;15013:74;;15096:93;15185:3;15096:93;:::i;:::-;15214:2;15209:3;15205:12;15198:19;;15003:220;;;:::o;15229:118::-;15316:24;15334:5;15316:24;:::i;:::-;15311:3;15304:37;15294:53;;:::o;15353:112::-;15436:22;15452:5;15436:22;:::i;:::-;15431:3;15424:35;15414:51;;:::o;15471:379::-;15655:3;15677:147;15820:3;15677:147;:::i;:::-;15670:154;;15841:3;15834:10;;15659:191;;;:::o;15856:222::-;15949:4;15987:2;15976:9;15972:18;15964:26;;16000:71;16068:1;16057:9;16053:17;16044:6;16000:71;:::i;:::-;15954:124;;;;:::o;16084:320::-;16199:4;16237:2;16226:9;16222:18;16214:26;;16250:71;16318:1;16307:9;16303:17;16294:6;16250:71;:::i;:::-;16331:66;16393:2;16382:9;16378:18;16369:6;16331:66;:::i;:::-;16204:200;;;;;:::o;16410:332::-;16531:4;16569:2;16558:9;16554:18;16546:26;;16582:71;16650:1;16639:9;16635:17;16626:6;16582:71;:::i;:::-;16663:72;16731:2;16720:9;16716:18;16707:6;16663:72;:::i;:::-;16536:206;;;;;:::o;16748:807::-;16997:4;17035:3;17024:9;17020:19;17012:27;;17049:71;17117:1;17106:9;17102:17;17093:6;17049:71;:::i;:::-;17130:72;17198:2;17187:9;17183:18;17174:6;17130:72;:::i;:::-;17212:80;17288:2;17277:9;17273:18;17264:6;17212:80;:::i;:::-;17302;17378:2;17367:9;17363:18;17354:6;17302:80;:::i;:::-;17392:73;17460:3;17449:9;17445:19;17436:6;17392:73;:::i;:::-;17475;17543:3;17532:9;17528:19;17519:6;17475:73;:::i;:::-;17002:553;;;;;;;;;:::o;17561:210::-;17648:4;17686:2;17675:9;17671:18;17663:26;;17699:65;17761:1;17750:9;17746:17;17737:6;17699:65;:::i;:::-;17653:118;;;;:::o;17777:313::-;17890:4;17928:2;17917:9;17913:18;17905:26;;17977:9;17971:4;17967:20;17963:1;17952:9;17948:17;17941:47;18005:78;18078:4;18069:6;18005:78;:::i;:::-;17997:86;;17895:195;;;;:::o;18096:419::-;18262:4;18300:2;18289:9;18285:18;18277:26;;18349:9;18343:4;18339:20;18335:1;18324:9;18320:17;18313:47;18377:131;18503:4;18377:131;:::i;:::-;18369:139;;18267:248;;;:::o;18521:419::-;18687:4;18725:2;18714:9;18710:18;18702:26;;18774:9;18768:4;18764:20;18760:1;18749:9;18745:17;18738:47;18802:131;18928:4;18802:131;:::i;:::-;18794:139;;18692:248;;;:::o;18946:419::-;19112:4;19150:2;19139:9;19135:18;19127:26;;19199:9;19193:4;19189:20;19185:1;19174:9;19170:17;19163:47;19227:131;19353:4;19227:131;:::i;:::-;19219:139;;19117:248;;;:::o;19371:419::-;19537:4;19575:2;19564:9;19560:18;19552:26;;19624:9;19618:4;19614:20;19610:1;19599:9;19595:17;19588:47;19652:131;19778:4;19652:131;:::i;:::-;19644:139;;19542:248;;;:::o;19796:419::-;19962:4;20000:2;19989:9;19985:18;19977:26;;20049:9;20043:4;20039:20;20035:1;20024:9;20020:17;20013:47;20077:131;20203:4;20077:131;:::i;:::-;20069:139;;19967:248;;;:::o;20221:419::-;20387:4;20425:2;20414:9;20410:18;20402:26;;20474:9;20468:4;20464:20;20460:1;20449:9;20445:17;20438:47;20502:131;20628:4;20502:131;:::i;:::-;20494:139;;20392:248;;;:::o;20646:419::-;20812:4;20850:2;20839:9;20835:18;20827:26;;20899:9;20893:4;20889:20;20885:1;20874:9;20870:17;20863:47;20927:131;21053:4;20927:131;:::i;:::-;20919:139;;20817:248;;;:::o;21071:419::-;21237:4;21275:2;21264:9;21260:18;21252:26;;21324:9;21318:4;21314:20;21310:1;21299:9;21295:17;21288:47;21352:131;21478:4;21352:131;:::i;:::-;21344:139;;21242:248;;;:::o;21496:419::-;21662:4;21700:2;21689:9;21685:18;21677:26;;21749:9;21743:4;21739:20;21735:1;21724:9;21720:17;21713:47;21777:131;21903:4;21777:131;:::i;:::-;21769:139;;21667:248;;;:::o;21921:419::-;22087:4;22125:2;22114:9;22110:18;22102:26;;22174:9;22168:4;22164:20;22160:1;22149:9;22145:17;22138:47;22202:131;22328:4;22202:131;:::i;:::-;22194:139;;22092:248;;;:::o;22346:419::-;22512:4;22550:2;22539:9;22535:18;22527:26;;22599:9;22593:4;22589:20;22585:1;22574:9;22570:17;22563:47;22627:131;22753:4;22627:131;:::i;:::-;22619:139;;22517:248;;;:::o;22771:419::-;22937:4;22975:2;22964:9;22960:18;22952:26;;23024:9;23018:4;23014:20;23010:1;22999:9;22995:17;22988:47;23052:131;23178:4;23052:131;:::i;:::-;23044:139;;22942:248;;;:::o;23196:419::-;23362:4;23400:2;23389:9;23385:18;23377:26;;23449:9;23443:4;23439:20;23435:1;23424:9;23420:17;23413:47;23477:131;23603:4;23477:131;:::i;:::-;23469:139;;23367:248;;;:::o;23621:419::-;23787:4;23825:2;23814:9;23810:18;23802:26;;23874:9;23868:4;23864:20;23860:1;23849:9;23845:17;23838:47;23902:131;24028:4;23902:131;:::i;:::-;23894:139;;23792:248;;;:::o;24046:419::-;24212:4;24250:2;24239:9;24235:18;24227:26;;24299:9;24293:4;24289:20;24285:1;24274:9;24270:17;24263:47;24327:131;24453:4;24327:131;:::i;:::-;24319:139;;24217:248;;;:::o;24471:419::-;24637:4;24675:2;24664:9;24660:18;24652:26;;24724:9;24718:4;24714:20;24710:1;24699:9;24695:17;24688:47;24752:131;24878:4;24752:131;:::i;:::-;24744:139;;24642:248;;;:::o;24896:419::-;25062:4;25100:2;25089:9;25085:18;25077:26;;25149:9;25143:4;25139:20;25135:1;25124:9;25120:17;25113:47;25177:131;25303:4;25177:131;:::i;:::-;25169:139;;25067:248;;;:::o;25321:419::-;25487:4;25525:2;25514:9;25510:18;25502:26;;25574:9;25568:4;25564:20;25560:1;25549:9;25545:17;25538:47;25602:131;25728:4;25602:131;:::i;:::-;25594:139;;25492:248;;;:::o;25746:419::-;25912:4;25950:2;25939:9;25935:18;25927:26;;25999:9;25993:4;25989:20;25985:1;25974:9;25970:17;25963:47;26027:131;26153:4;26027:131;:::i;:::-;26019:139;;25917:248;;;:::o;26171:222::-;26264:4;26302:2;26291:9;26287:18;26279:26;;26315:71;26383:1;26372:9;26368:17;26359:6;26315:71;:::i;:::-;26269:124;;;;:::o;26399:831::-;26662:4;26700:3;26689:9;26685:19;26677:27;;26714:71;26782:1;26771:9;26767:17;26758:6;26714:71;:::i;:::-;26795:80;26871:2;26860:9;26856:18;26847:6;26795:80;:::i;:::-;26922:9;26916:4;26912:20;26907:2;26896:9;26892:18;26885:48;26950:108;27053:4;27044:6;26950:108;:::i;:::-;26942:116;;27068:72;27136:2;27125:9;27121:18;27112:6;27068:72;:::i;:::-;27150:73;27218:3;27207:9;27203:19;27194:6;27150:73;:::i;:::-;26667:563;;;;;;;;:::o;27236:775::-;27469:4;27507:3;27496:9;27492:19;27484:27;;27521:71;27589:1;27578:9;27574:17;27565:6;27521:71;:::i;:::-;27602:72;27670:2;27659:9;27655:18;27646:6;27602:72;:::i;:::-;27684;27752:2;27741:9;27737:18;27728:6;27684:72;:::i;:::-;27766;27834:2;27823:9;27819:18;27810:6;27766:72;:::i;:::-;27848:73;27916:3;27905:9;27901:19;27892:6;27848:73;:::i;:::-;27931;27999:3;27988:9;27984:19;27975:6;27931:73;:::i;:::-;27474:537;;;;;;;;;:::o;28017:214::-;28106:4;28144:2;28133:9;28129:18;28121:26;;28157:67;28221:1;28210:9;28206:17;28197:6;28157:67;:::i;:::-;28111:120;;;;:::o;28237:132::-;28304:4;28327:3;28319:11;;28357:4;28352:3;28348:14;28340:22;;28309:60;;;:::o;28375:114::-;28442:6;28476:5;28470:12;28460:22;;28449:40;;;:::o;28495:99::-;28547:6;28581:5;28575:12;28565:22;;28554:40;;;:::o;28600:113::-;28670:4;28702;28697:3;28693:14;28685:22;;28675:38;;;:::o;28719:184::-;28818:11;28852:6;28847:3;28840:19;28892:4;28887:3;28883:14;28868:29;;28830:73;;;;:::o;28909:147::-;29010:11;29047:3;29032:18;;29022:34;;;;:::o;29062:169::-;29146:11;29180:6;29175:3;29168:19;29220:4;29215:3;29211:14;29196:29;;29158:73;;;;:::o;29237:305::-;29277:3;29296:20;29314:1;29296:20;:::i;:::-;29291:25;;29330:20;29348:1;29330:20;:::i;:::-;29325:25;;29484:1;29416:66;29412:74;29409:1;29406:81;29403:2;;;29490:18;;:::i;:::-;29403:2;29534:1;29531;29527:9;29520:16;;29281:261;;;;:::o;29548:185::-;29588:1;29605:20;29623:1;29605:20;:::i;:::-;29600:25;;29639:20;29657:1;29639:20;:::i;:::-;29634:25;;29678:1;29668:2;;29683:18;;:::i;:::-;29668:2;29725:1;29722;29718:9;29713:14;;29590:143;;;;:::o;29739:848::-;29800:5;29807:4;29831:6;29822:15;;29855:5;29846:14;;29869:712;29890:1;29880:8;29877:15;29869:712;;;29985:4;29980:3;29976:14;29970:4;29967:24;29964:2;;;29994:18;;:::i;:::-;29964:2;30044:1;30034:8;30030:16;30027:2;;;30459:4;30452:5;30448:16;30439:25;;30027:2;30509:4;30503;30499:15;30491:23;;30539:32;30562:8;30539:32;:::i;:::-;30527:44;;29869:712;;;29812:775;;;;;;;:::o;30593:281::-;30651:5;30675:23;30693:4;30675:23;:::i;:::-;30667:31;;30719:25;30735:8;30719:25;:::i;:::-;30707:37;;30763:104;30800:66;30790:8;30784:4;30763:104;:::i;:::-;30754:113;;30657:217;;;;:::o;30880:1073::-;30934:5;31125:8;31115:2;;31146:1;31137:10;;31148:5;;31115:2;31174:4;31164:2;;31191:1;31182:10;;31193:5;;31164:2;31260:4;31308:1;31303:27;;;;31344:1;31339:191;;;;31253:277;;31303:27;31321:1;31312:10;;31323:5;;;31339:191;31384:3;31374:8;31371:17;31368:2;;;31391:18;;:::i;:::-;31368:2;31440:8;31437:1;31433:16;31424:25;;31475:3;31468:5;31465:14;31462:2;;;31482:18;;:::i;:::-;31462:2;31515:5;;;31253:277;;31639:2;31629:8;31626:16;31620:3;31614:4;31611:13;31607:36;31589:2;31579:8;31576:16;31571:2;31565:4;31562:12;31558:35;31542:111;31539:2;;;31695:8;31689:4;31685:19;31676:28;;31730:3;31723:5;31720:14;31717:2;;;31737:18;;:::i;:::-;31717:2;31770:5;;31539:2;31810:42;31848:3;31838:8;31832:4;31829:1;31810:42;:::i;:::-;31795:57;;;;31884:4;31879:3;31875:14;31868:5;31865:25;31862:2;;;31893:18;;:::i;:::-;31862:2;31942:4;31935:5;31931:16;31922:25;;30940:1013;;;;;;:::o;31959:348::-;31999:7;32022:20;32040:1;32022:20;:::i;:::-;32017:25;;32056:20;32074:1;32056:20;:::i;:::-;32051:25;;32244:1;32176:66;32172:74;32169:1;32166:81;32161:1;32154:9;32147:17;32143:105;32140:2;;;32251:18;;:::i;:::-;32140:2;32299:1;32296;32292:9;32281:20;;32007:300;;;;:::o;32313:191::-;32353:4;32373:20;32391:1;32373:20;:::i;:::-;32368:25;;32407:20;32425:1;32407:20;:::i;:::-;32402:25;;32446:1;32443;32440:8;32437:2;;;32451:18;;:::i;:::-;32437:2;32496:1;32493;32489:9;32481:17;;32358:146;;;;:::o;32510:96::-;32547:7;32576:24;32594:5;32576:24;:::i;:::-;32565:35;;32555:51;;;:::o;32612:90::-;32646:7;32689:5;32682:13;32675:21;32664:32;;32654:48;;;:::o;32708:126::-;32745:7;32785:42;32778:5;32774:54;32763:65;;32753:81;;;:::o;32840:77::-;32877:7;32906:5;32895:16;;32885:32;;;:::o;32923:86::-;32958:7;32998:4;32991:5;32987:16;32976:27;;32966:43;;;:::o;33015:121::-;33073:9;33106:24;33124:5;33106:24;:::i;:::-;33093:37;;33083:53;;;:::o;33142:307::-;33210:1;33220:113;33234:6;33231:1;33228:13;33220:113;;;33319:1;33314:3;33310:11;33304:18;33300:1;33295:3;33291:11;33284:39;33256:2;33253:1;33249:10;33244:15;;33220:113;;;33351:6;33348:1;33345:13;33342:2;;;33431:1;33422:6;33417:3;33413:16;33406:27;33342:2;33191:258;;;;:::o;33455:180::-;33503:77;33500:1;33493:88;33600:4;33597:1;33590:15;33624:4;33621:1;33614:15;33641:180;33689:77;33686:1;33679:88;33786:4;33783:1;33776:15;33810:4;33807:1;33800:15;33827:102;33868:6;33919:2;33915:7;33910:2;33903:5;33899:14;33895:28;33885:38;;33875:54;;;:::o;33935:102::-;33977:8;34024:5;34021:1;34017:13;33996:34;;33986:51;;;:::o;34043:168::-;34183:20;34179:1;34171:6;34167:14;34160:44;34149:62;:::o;34217:166::-;34357:18;34353:1;34345:6;34341:14;34334:42;34323:60;:::o;34389:174::-;34529:26;34525:1;34517:6;34513:14;34506:50;34495:68;:::o;34569:225::-;34709:34;34705:1;34697:6;34693:14;34686:58;34778:8;34773:2;34765:6;34761:15;34754:33;34675:119;:::o;34800:167::-;34940:19;34936:1;34928:6;34924:14;34917:43;34906:61;:::o;34973:166::-;35113:18;35109:1;35101:6;35097:14;35090:42;35079:60;:::o;35145:170::-;35285:22;35281:1;35273:6;35269:14;35262:46;35251:64;:::o;35321:174::-;35461:26;35457:1;35449:6;35445:14;35438:50;35427:68;:::o;35501:168::-;35641:20;35637:1;35629:6;35625:14;35618:44;35607:62;:::o;35675:227::-;35815:34;35811:1;35803:6;35799:14;35792:58;35884:10;35879:2;35871:6;35867:15;35860:35;35781:121;:::o;35908:165::-;36048:17;36044:1;36036:6;36032:14;36025:41;36014:59;:::o;36079:182::-;36219:34;36215:1;36207:6;36203:14;36196:58;36185:76;:::o;36267:173::-;36407:25;36403:1;36395:6;36391:14;36384:49;36373:67;:::o;36446:170::-;36586:22;36582:1;36574:6;36570:14;36563:46;36552:64;:::o;36622:165::-;36762:17;36758:1;36750:6;36746:14;36739:41;36728:59;:::o;36793:114::-;36899:8;:::o;36913:169::-;37053:21;37049:1;37041:6;37037:14;37030:45;37019:63;:::o;37088:176::-;37228:28;37224:1;37216:6;37212:14;37205:52;37194:70;:::o;37270:162::-;37410:14;37406:1;37398:6;37394:14;37387:38;37376:56;:::o;37438:220::-;37578:34;37574:1;37566:6;37562:14;37555:58;37647:3;37642:2;37634:6;37630:15;37623:28;37544:114;:::o;37664:122::-;37737:24;37755:5;37737:24;:::i;:::-;37730:5;37727:35;37717:2;;37776:1;37773;37766:12;37717:2;37707:79;:::o;37792:116::-;37862:21;37877:5;37862:21;:::i;:::-;37855:5;37852:32;37842:2;;37898:1;37895;37888:12;37842:2;37832:76;:::o;37914:122::-;37987:24;38005:5;37987:24;:::i;:::-;37980:5;37977:35;37967:2;;38026:1;38023;38016:12;37967:2;37957:79;:::o

Swarm Source

ipfs://3f8103e9536240355c45009a10afdc42e86caf67003ed747488f648318d3e6ca

Block Transaction Gas Used Reward
view all blocks produced
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
View All Validatorset

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

OVERVIEW

Project Description: OPPA Token is a deflationary star-studded fan-based cryptocurrency that offers a “rise-like-the-stars” earning potential.OPPA Token is committed to bring our “Fanatics” a step closer to meet their favorite celebrities.

Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ 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.