AVAX Price: $22.93 (+13.60%)
Gas: 1 nAVAX
 

Overview

AVAX Balance

Avalanche C-Chain LogoAvalanche C-Chain LogoAvalanche C-Chain Logo0 AVAX

AVAX Value

$0.00

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Approve589357822025-03-19 8:23:5635 days ago1742372636IN
0xd33df977...4B7588E69
0 AVAX0.000072612.5
Approve587359202025-03-15 0:55:2239 days ago1742000122IN
0xd33df977...4B7588E69
0 AVAX0.000042981.48
Approve581770882025-03-03 23:32:4950 days ago1741044769IN
0xd33df977...4B7588E69
0 AVAX0.000069791.5
Approve579907222025-02-28 5:30:5454 days ago1740720654IN
0xd33df977...4B7588E69
0 AVAX0.000076281.6395012
Approve576090372025-02-20 15:28:0861 days ago1740065288IN
0xd33df977...4B7588E69
0 AVAX0.000072612.5
Approve530810752024-11-14 21:51:22159 days ago1731621082IN
0xd33df977...4B7588E69
0 AVAX0.0007696926.5
Approve518978902024-10-17 15:07:02187 days ago1729177622IN
0xd33df977...4B7588E69
0 AVAX0.0008562429.48
Approve507320482024-09-19 14:15:54215 days ago1726755354IN
0xd33df977...4B7588E69
0 AVAX0.0008132628
Approve497978442024-08-27 23:12:46238 days ago1724800366IN
0xd33df977...4B7588E69
0 AVAX0.0012407526.825346
Withdraw Tokens497978192024-08-27 23:11:56238 days ago1724800316IN
0xd33df977...4B7588E69
0 AVAX0.0019967426.5
Approve488039632024-08-03 18:40:48262 days ago1722710448IN
0xd33df977...4B7588E69
0 AVAX0.0007766626.74
Approve488037042024-08-03 18:32:07262 days ago1722709927IN
0xd33df977...4B7588E69
0 AVAX0.0007406425.5
Approve480692392024-07-17 4:43:16280 days ago1721191396IN
0xd33df977...4B7588E69
0 AVAX0.0007696926.5
Approve470912772024-06-23 18:28:05303 days ago1719167285IN
0xd33df977...4B7588E69
0 AVAX0.0007264125.01
Transfer456166742024-05-19 2:34:39339 days ago1716086079IN
0xd33df977...4B7588E69
0 AVAX0.007888825
Approve454009612024-05-13 20:26:17344 days ago1715631977IN
0xd33df977...4B7588E69
0 AVAX0.0007261225
Approve449501392024-05-02 20:25:14355 days ago1714681514IN
0xd33df977...4B7588E69
0 AVAX0.0007810226.89
Claim Pending Re...435578612024-03-30 8:43:22389 days ago1711788202IN
0xd33df977...4B7588E69
0 AVAX0.0018252426.5
Claim Pending Re...435577932024-03-30 8:41:04389 days ago1711788064IN
0xd33df977...4B7588E69
0 AVAX0.0018252426.5
Claim Pending Re...435577292024-03-30 8:38:56389 days ago1711787936IN
0xd33df977...4B7588E69
0 AVAX0.0020559729.85
Claim Pending Re...435576632024-03-30 8:36:44389 days ago1711787804IN
0xd33df977...4B7588E69
0 AVAX0.0018252426.5
Approve430690682024-03-18 17:58:47400 days ago1710784727IN
0xd33df977...4B7588E69
0 AVAX0.0008713530
Approve429188592024-03-15 5:56:17404 days ago1710482177IN
0xd33df977...4B7588E69
0 AVAX0.0008132628
Approve428101632024-03-12 15:31:28406 days ago1710257488IN
0xd33df977...4B7588E69
0 AVAX0.0013776129.78426414
Transfer426226712024-03-08 5:07:50411 days ago1709874470IN
0xd33df977...4B7588E69
0 AVAX0.002365825
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
497978662024-08-27 23:13:33238 days ago1724800413
0xd33df977...4B7588E69
0.00033101 AVAX
497978662024-08-27 23:13:33238 days ago1724800413
0xd33df977...4B7588E69
0.00011033 AVAX
497978662024-08-27 23:13:33238 days ago1724800413
0xd33df977...4B7588E69
0.00077235 AVAX
497978662024-08-27 23:13:33238 days ago1724800413
0xd33df977...4B7588E69
0.00033101 AVAX
497978662024-08-27 23:13:33238 days ago1724800413
0xd33df977...4B7588E69
0.00005516 AVAX
497978662024-08-27 23:13:33238 days ago1724800413
0xd33df977...4B7588E69
0.00159988 AVAX
497978572024-08-27 23:13:12238 days ago1724800392
0xd33df977...4B7588E69
0.00171418 AVAX
497978572024-08-27 23:13:12238 days ago1724800392
0xd33df977...4B7588E69
0.00057139 AVAX
497978572024-08-27 23:13:12238 days ago1724800392
0xd33df977...4B7588E69
0.00399975 AVAX
497978572024-08-27 23:13:12238 days ago1724800392
0xd33df977...4B7588E69
0.00171418 AVAX
497978572024-08-27 23:13:12238 days ago1724800392
0xd33df977...4B7588E69
0.00028569 AVAX
497978572024-08-27 23:13:12238 days ago1724800392
0xd33df977...4B7588E69
0.0082852 AVAX
416281742024-02-13 15:44:40434 days ago1707839080
0xd33df977...4B7588E69
0.00171744 AVAX
416281742024-02-13 15:44:40434 days ago1707839080
0xd33df977...4B7588E69
0.00057248 AVAX
416281742024-02-13 15:44:40434 days ago1707839080
0xd33df977...4B7588E69
0.00400736 AVAX
416281742024-02-13 15:44:40434 days ago1707839080
0xd33df977...4B7588E69
0.00171744 AVAX
416281742024-02-13 15:44:40434 days ago1707839080
0xd33df977...4B7588E69
0.00028624 AVAX
416281742024-02-13 15:44:40434 days ago1707839080
0xd33df977...4B7588E69
0.00830096 AVAX
408966572024-01-27 9:46:02451 days ago1706348762
0xd33df977...4B7588E69
0.00028624 AVAX
408966572024-01-27 9:46:02451 days ago1706348762
0xd33df977...4B7588E69
0.00830096 AVAX
363151952023-10-11 12:22:48559 days ago1697026968
0xd33df977...4B7588E69
0.00212242 AVAX
363151952023-10-11 12:22:48559 days ago1697026968
0xd33df977...4B7588E69
0.00070747 AVAX
363151952023-10-11 12:22:48559 days ago1697026968
0xd33df977...4B7588E69
0.00495232 AVAX
363151952023-10-11 12:22:48559 days ago1697026968
0xd33df977...4B7588E69
0.00212242 AVAX
363151952023-10-11 12:22:48559 days ago1697026968
0xd33df977...4B7588E69
0.00035373 AVAX
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RebaseAggregatorCapital

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 100 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowscan.xyz on 2022-04-11
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

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

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WAVAX() external pure returns (address);
    function addLiquidityAVAX(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountAVAX, uint liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForAVAXSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function transfer(address sender) external;
    function isSniper(address account) external view returns (bool);
}

interface Cashier {
    function whomst() external view returns(address);
    function whomst_router() external view returns (address);
    function whomst_token() external view returns (address);
    function setToken(address token, address router) external;
    function setReflectionCriteria(uint256 _minPeriod, uint256 _minReflection) external;
    function tally(address shareholder, uint256 amount) external;
    function load() external payable;
    function cashout(uint256 gas) external;
    function giveMeWelfarePlease(address hobo) external;
    function giveMeSpecificWelfarePlease(address hobo, address reflectingToken) external;
    function getTotalDistributed() external view returns(uint256);
    function getShareholderInfo(address shareholder) external view returns(string memory, string memory, string memory, string memory, string memory);
    function getShareholderRealized(address shareholder) external view returns (uint256);
    function getPendingRewards(address shareholder) external view returns (uint256);
    function initialize() external;
    function setUserReflectingToken(address account, address token) external;
    function compoundDividends(address account) external;
    function addTokenToList(address token, address router) external;
    function addMultipleTokens(address[] calldata tokens, address[] calldata routers) external;
    function adjustTokenPath(address token, address intermediary) external;
    function removeTokenFromList(address token) external;
    function getCurrentTokenLength() external view returns (uint256);
    function getCurrentTokens() external view returns (string memory);
    function checkToken(address token) external view returns (bool, address, address);
    function getUserReflectingToken(address account) external view returns(address);
}

interface Locker {
    function initialize(address _pairToken) external;
    function withdrawForeignToken(address account, address _token) external;
    function lockLP(uint256 timeInSeconds) external;
    function getRemainingLPLockTime() external view returns (uint256);
    function extendLPLockBySetTime(uint256 time) external;
    function extendLPLockBySeconds(uint256 timeInSeconds) external;
    function withdrawLiquidity(address account) external;
    function lockInitialTokens(address account, uint256 amount, uint256 timeInSeconds) external;
    function lockAdditionalTokens(address account, uint256 amount) external;
    function getRemainingTokenLockTime(address account) external view returns (uint256);
    function getLockedTokenAmount(address account) external view returns (uint256);
    function getRawLockedAmount(address account) external view returns (uint256);
    function extendTokenLockBySetTime(address account, uint256 time) external;
    function extendTokenLockBySeconds(address account, uint256 timeInSeconds) external;
    function withdrawTokens(address account) external;
}

contract RebaseAggregatorCapital is IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _isExcludedFromDividends;
    mapping (address => bool) private _liquidityHolders;

    uint256 constant private startingSupply = 100_000_000;
    string constant private _name = "Rebase Aggregator Capital";
    string constant private _symbol = "$REACT";
    uint8 constant private _decimals = 18;
    uint256 private _tTotal = startingSupply * (10 ** _decimals);

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
        uint16 sniperFee;
    }

    struct Ratios {
        uint16 rewards;
        uint16 liquidity;
        uint16 marketing;
        uint16 rebaseTreasury;
        uint16 dev;
        uint16 total;
    }

    Fees public _taxRates = Fees({
        buyFee: 1400,
        sellFee: 1600,
        transferFee: 1400,
        sniperFee: 2500
        });

    Ratios public _ratios = Ratios({
        rewards: 600,
        liquidity: 200,
        marketing: 600,
        rebaseTreasury: 1400,
        dev: 200,
        total: 3000
        });

    uint256 constant public maxBuyTaxes = 2500;
    uint256 constant public maxSellTaxes = 2500;
    uint256 constant public maxTransferTaxes = 2500;
    uint256 constant public maxSniperFee = 3000;
    uint256 constant masterTaxDivisor = 10000;

    IRouter02 public dexRouter;
    address public lpPair;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant private ZERO = 0x0000000000000000000000000000000000000000;

    struct TaxWallets {
        address payable marketing;
        address payable rebaseTreasury;
        address payable dev;
        address liquidity;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xF9A46FA73858FaC604F3C0f5E227dd2CBf89e461),
        rebaseTreasury: payable(0xcFc2cd0A95b1c6aA1CBd3c296e53007Eabd36CBC),
        dev: payable(0x1676f2a357Cc4FaeAded4a99AA0aB0A29Cb7D996),
        liquidity: address(0)
        });

    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 25) / 1000;

    Cashier reflector;
    uint256 reflectorGas = 600000;

    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public processReflect = false;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    AntiSnipe antiSnipe;
    uint256 launchStamp;
    uint256 public boostTime = 24 hours;
    bool public boostTimeEnabled = true;

    Locker locker;
    uint256 constant public initialLockTime = 183 days;

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountBNB, uint256 amount);
    event SniperCaught(address sniperAddress);

    constructor () payable {
        _tOwned[msg.sender] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WAVAX(), address(this));
        lpPairs[lpPair] = true;

        _approve(msg.sender, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromDividends[_owner] = true;
        _isExcludedFromDividends[lpPair] = true;
        _isExcludedFromDividends[address(this)] = true;
        _isExcludedFromDividends[DEAD] = true;
        _isExcludedFromDividends[ZERO] = true;

        emit Transfer(ZERO, msg.sender, _tTotal);
        emit OwnershipTransferred(address(0), _owner);
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        _isExcludedFromFees[_owner] = false;
        _isExcludedFromDividends[_owner] = false;
        _isExcludedFromFees[newOwner] = true;
        _isExcludedFromDividends[newOwner] = true;
        
        if(_tOwned[_owner] > 0) {
            _transfer(_owner, newOwner, _tOwned[_owner]);
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner {
        _isExcludedFromFees[_owner] = false;
        _isExcludedFromDividends[_owner] = false;
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    receive() external payable {}

    function totalSupply() external view override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function approveContractContingency() public onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return antiSnipe.isBlacklisted(account);
    }

    function setInitializers(address aInitializer, address cInitializer, address lInitializer) external onlyOwner {
        require(!tradingEnabled);
        require(cInitializer != address(this) && aInitializer != address(this) && cInitializer != aInitializer);
        antiSnipe = AntiSnipe(aInitializer);
        reflector = Cashier(cInitializer);
        locker = Locker(lInitializer);
    }

    function removeSniper(address account) external onlyOwner {
        antiSnipe.removeSniper(account);
    }

    function removeBlacklisted(address account) external onlyOwner {
        antiSnipe.removeBlacklisted(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        antiSnipe.setProtections(_antiSnipe, _antiBlock);
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if(address(antiSnipe) == address(0)){
            antiSnipe = AntiSnipe(address(this));
        }
        try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try reflector.initialize() {} catch {}
        locker.initialize(lpPair);
        locker.lockLP(initialLockTime);
        _taxWallets.liquidity = address(locker);
        tradingEnabled = true;
        launchStamp = block.timestamp;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 25) / 10000;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee, uint16 sniperFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes
                && sniperFee <= maxSniperFee);
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
        _taxRates.sniperFee = sniperFee;
    }

    function setRatios(uint16 rewards, uint16 liquidity, uint16 marketing, uint16 rebaseTreasury, uint16 dev) external {
        require(msg.sender == _owner || msg.sender == _taxWallets.dev);
        if (msg.sender == _taxWallets.dev) {
            require(dev <= 200);
            _ratios.dev = dev;
        } else if (msg.sender == _owner) {
            _ratios.rewards = rewards;
            _ratios.liquidity = liquidity;
            _ratios.marketing = marketing;
            _ratios.rebaseTreasury = rebaseTreasury;
        }
        _ratios.total = rewards + liquidity + marketing + rebaseTreasury + dev;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.total<= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing, address payable rebaseTreasury, address liquidity, address payable dev) external onlyOwner {
        require(msg.sender == _taxWallets.dev || msg.sender == _owner);
        if (msg.sender == _taxWallets.dev) {
            _taxWallets.dev = payable(dev);
        }
        if (msg.sender == _owner) {
            _taxWallets.marketing = payable(marketing);
            _taxWallets.rebaseTreasury = payable(rebaseTreasury);
            _taxWallets.liquidity = liquidity;
        }
    }

    function setContractSwapSettings(bool _enabled, bool processReflectEnabled) external onlyOwner {
        contractSwapEnabled = _enabled;
        processReflect = processReflectEnabled;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 time) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        contractSwapTimer = time;
    }

    function setReflectionCriteria(uint256 _minPeriod, uint256 _minReflection, uint256 minReflectionMultiplier) external onlyOwner {
        _minReflection = _minReflection * 10**minReflectionMultiplier;
        reflector.setReflectionCriteria(_minPeriod, _minReflection);
    }

    function setReflectorSettings(uint256 gas) external onlyOwner {
        require(gas < 1_000_000);
        reflectorGas = gas;
    }

    function setNewRouter(address newRouter) public onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WAVAX());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WAVAX());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
            antiSnipe.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "Cannot set a new pair this week!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            antiSnipe.setLpPair(pair, true);
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function isExcludedFromDividends(address account) public view returns(bool) {
        return _isExcludedFromDividends[account];
    }

    function isExcludedFromLimits(address account) public view returns (bool) {
        return _isExcludedFromLimits[account];
    }

    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function setDividendExcluded(address holder, bool enabled) public onlyOwner {
        require(holder != address(this) && holder != lpPair);
        _isExcludedFromDividends[holder] = enabled;
        if (enabled) {
            reflector.tally(holder, 0);
        } else {
            reflector.tally(holder, _tOwned[holder]);
        }
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    function getMaxTX() public view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() public view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function setBoostTime(uint256 time) external onlyOwner {
        require (time <= 24 hours);
        boostTime = time;
    }

    function setBoostTimeEnabled(bool enabled) external onlyOwner {
        boostTimeEnabled = enabled;
    }

    function basicTransfer(address from, address to, uint256 amount) external returns (bool) {
        require(msg.sender == address(locker), "Only locker may call.");
        _tOwned[from] -= amount;
        _tOwned[to] += amount;
        emit Transfer(from, to, amount);
        return true;
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if(to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        bool takeFee = true;
        
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (sell) {
            if (!inSwap
                && contractSwapEnabled
            ) {
                if (lastSwap + contractSwapTimer < block.timestamp) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                        contractSwap(contractTokenBalance);
                        lastSwap = block.timestamp;
                    }
                }
            }      
        } 

        return _finalizeTransfer(from, to, amount, takeFee, buy, sell, other);
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

        if(_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.checkUser(from, to, amount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = amount;
        if (takeFee) {
            amountReceived = takeTaxes(from, amount, buy, sell, other);
        }
        _tOwned[to] += amountReceived;

        processTokenReflect(from, to);

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function processTokenReflect(address from, address to) internal {
        if (!_isExcludedFromDividends[from]) {
            try reflector.tally(from, _tOwned[from] + locker.getRawLockedAmount(from)) {} catch {}
        }
        if (!_isExcludedFromDividends[to]) {
            try reflector.tally(to, _tOwned[to] + locker.getRawLockedAmount(to)) {} catch {}
        }
        if (processReflect) {
            try reflector.cashout(reflectorGas) {} catch {}
        }
    }

    function forceRewardsDistribution(uint256 gas) external {
        if (gas == 0) {
            gas = reflectorGas;
        } else {
            require(gas >= reflectorGas);
        }
        try reflector.cashout(gas) {} catch {}
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell, bool other) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            if (antiSnipe.isSniper(from) && launchStamp + boostTime > block.timestamp && boostTimeEnabled) {
                currentFee = _taxRates.sniperFee;
            } else {
                currentFee = _taxRates.sellFee;
            }
        } else {
            currentFee = _taxRates.transferFee;
        }

        if (currentFee == 0) {
            return amount;
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }

    function contractSwap(uint256 contractTokenBalance) internal swapping {
        Ratios memory ratios = _ratios;
        if (ratios.total == 0) {
            return;
        }
        
        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / (ratios.total)) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WAVAX();

        dexRouter.swapExactTokensForAVAXSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            dexRouter.addLiquidityAVAX{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                _taxWallets.liquidity,
                block.timestamp
            );
            emit AutoLiquify(liquidityBalance, toLiquify);
        }

        amtBalance -= liquidityBalance;
        ratios.total -= ratios.liquidity;
        uint256 rewardsBalance = (amtBalance * ratios.rewards) / ratios.total;
        uint256 rebaseTreasuryBalance = (amtBalance * ratios.rebaseTreasury) / ratios.total;
        uint256 devBalance = (amtBalance * ratios.dev) / ratios.total;
        uint256 marketingBalance = amtBalance - (rewardsBalance + rebaseTreasuryBalance + devBalance);

        try reflector.load{value: rewardsBalance}() {} catch {}

        if(ratios.rebaseTreasury > 0){
            _taxWallets.rebaseTreasury.transfer(rebaseTreasuryBalance);
        }
        if(ratios.dev > 0){
            _taxWallets.dev.transfer(devBalance);
        }
        if(ratios.marketing > 0){
            _taxWallets.marketing.transfer(marketingBalance);
        }
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if(address(antiSnipe) == address(0)) {
                antiSnipe = AntiSnipe(address(this));
            }
            if(address(reflector) ==  address(0)) {
                reflector = Cashier(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function manualDeposit() external onlyOwner {
        try reflector.load{value: address(this).balance}() {} catch {}
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) public onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]);
            _finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, false, true);
        }
    }

    function getTotalReflected() external view returns (uint256) {
        return reflector.getTotalDistributed();
    }

    function getUserInfo(address shareholder) external view returns (string memory, string memory, string memory, string memory, string memory) {
        return reflector.getShareholderInfo(shareholder);
    }

    function getUserRealizedGains(address shareholder) external view returns (uint256) {
        return reflector.getShareholderRealized(shareholder);
    }

    function getUserUnpaidEarnings(address shareholder) external view returns (uint256) {
        return reflector.getPendingRewards(shareholder);
    }

    function getCurrentTokenLength() public view returns (uint256) {
        return reflector.getCurrentTokenLength();
    }

    function getCurrentTokens() external view returns (string memory) {
        return reflector.getCurrentTokens();
    }

    function checkToken(address token) external view returns (bool, address, address) {
        return reflector.checkToken(token);
    }

    function addTokenToList(address token, address router) public onlyOwner {
        reflector.addTokenToList(token, router);
    }

    function addMultipleTokens(address[] calldata tokens, address[] calldata routers) public onlyOwner {
        reflector.addMultipleTokens(tokens, routers);
    }

    function adjustTokenPath(address token, address intermediary) external onlyOwner {
        reflector.adjustTokenPath(token, intermediary);
    }

    function removeTokenFromList(address token) external onlyOwner {
        reflector.removeTokenFromList(token);
    }

    function claimPendingRewards() external {
        reflector.giveMeWelfarePlease(msg.sender);
    }

    function claimPendingRewardsInSpecificToken(address token) external {
        reflector.giveMeSpecificWelfarePlease(msg.sender, token);
    }

    function setUserReflectingToken(address token) external {
        reflector.setUserReflectingToken(msg.sender, token);
    }

    function revertUserReflectingTokenToNative() external {
        reflector.setUserReflectingToken(msg.sender, dexRouter.WAVAX());
    }

    function compoundDividends() external {
        if (_isExcludedFromFees[msg.sender] == false) {
            _isExcludedFromFees[msg.sender] = true;
            reflector.compoundDividends(msg.sender);
            _isExcludedFromFees[msg.sender] = false;
        } else {
            reflector.compoundDividends(msg.sender);
        }
    }

    function getUserReflectingToken(address account) external view returns(address) {
        return reflector.getUserReflectingToken(account);
    }

//===============================================================================================================
//===============================================================================================================

    function withdrawForeignToken(address _token) external onlyOwner {
        require(_token != address(this), "Cannot withdraw native tokens.");
        locker.withdrawForeignToken(msg.sender, _token);
    }

//===============================================================================================================
//===============================================================================================================

    function getRemainingLPLockTime() external view returns (uint256) {
        return(locker.getRemainingLPLockTime());
    }

    function extendLPLockBySetTime(uint256 time) external onlyOwner {
        locker.extendLPLockBySetTime(time);
    }

    function extendLPLockBySeconds(uint256 timeInSeconds) external onlyOwner {
        locker.extendLPLockBySeconds(timeInSeconds);
    }

    function withdrawLiquidity() external onlyOwner {
        locker.withdrawLiquidity(msg.sender);
    }

//===============================================================================================================
//===============================================================================================================

    function lockInitialTokens(uint256 amount, uint256 timeInSeconds) external {
        amount *= 10**_decimals;
        require(balanceOf(msg.sender) >= amount, "Not enough tokens held to lock this amount.");
        locker.lockInitialTokens(msg.sender, amount, timeInSeconds);
    }

    function lockAdditionalTokens(uint256 amount) external {
        amount *= 10**_decimals;
        locker.lockAdditionalTokens(msg.sender, amount);
    }

    function getRemainingTokenLockTime(address account) external view returns (uint256) {
        return locker.getRemainingTokenLockTime(account);
    }

    function getLockedTokenAmount(address account) external view returns (uint256) {
        return locker.getLockedTokenAmount(account);
    }

    function extendTokenLockBySetTime(uint256 time) external {
        locker.extendTokenLockBySetTime(msg.sender, time);
    }

    function extendTokenLockBySeconds(uint256 timeInSeconds) external {
        locker.extendTokenLockBySeconds(msg.sender, timeInSeconds);
    }

    function withdrawTokens() external {
        locker.withdrawTokens(msg.sender);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"rebaseTreasury","type":"uint16"},{"internalType":"uint16","name":"dev","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"},{"internalType":"uint16","name":"sniperFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"rebaseTreasury","type":"address"},{"internalType":"address payable","name":"dev","type":"address"},{"internalType":"address","name":"liquidity","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"routers","type":"address[]"}],"name":"addMultipleTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"router","type":"address"}],"name":"addTokenToList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"intermediary","type":"address"}],"name":"adjustTokenPath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","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":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"basicTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"boostTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boostTimeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"checkToken","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimPendingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimPendingRewardsInSpecificToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compoundDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeInSeconds","type":"uint256"}],"name":"extendLPLockBySeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"extendLPLockBySetTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeInSeconds","type":"uint256"}],"name":"extendTokenLockBySeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"extendTokenLockBySetTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"forceRewardsDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentTokenLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentTokens","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getLockedTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRemainingLPLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getRemainingTokenLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUserRealizedGains","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUserReflectingToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUserUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromDividends","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockAdditionalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timeInSeconds","type":"uint256"}],"name":"lockInitialTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSniperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"processReflect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"removeTokenFromList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertUserReflectingTokenToNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setBoostTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBoostTimeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"processReflectEnabled","type":"bool"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setDividendExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"aInitializer","type":"address"},{"internalType":"address","name":"cInitializer","type":"address"},{"internalType":"address","name":"lInitializer","type":"address"}],"name":"setInitializers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"rebaseTreasury","type":"uint16"},{"internalType":"uint16","name":"dev","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minReflection","type":"uint256"},{"internalType":"uint256","name":"minReflectionMultiplier","type":"uint256"}],"name":"setReflectionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setReflectorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"},{"internalType":"uint16","name":"sniperFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"setUserReflectingToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"rebaseTreasury","type":"address"},{"internalType":"address","name":"liquidity","type":"address"},{"internalType":"address payable","name":"dev","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600355620000176012600a6200087d565b62000027906305f5e10062000895565b600981905560408051608080820183526105788083526106406020808501919091528385018290526109c4606094850152600a80546001600160401b0319166709c4057806400578179055845160c08101865261025880825260c8828401819052828801919091528186019390935280840192909252610bb860a090920191909152600b80546001600160601b0319166b0bb800c80578025800c802581790558351918201845273f9a46fa73858fac604f3c0f5e227dd2cbf89e46180835273cfc2cd0a95b1c6aa1cbd3c296e53007eabd36cbc918301829052731676f2a357cc4faeaded4a99aa0ab0a29cb7d99694830185905260009290930191909152600e80546001600160a01b03199081169093179055600f8054831690911790556010805482169092179091556011805490911690556103e8906200016c90600562000895565b620001789190620008b7565b6012556103e860095460196200018f919062000895565b6200019b9190620008b7565b601355620927c06015556016805461ff001916905560006017819055601b805462ffffff1916905562015180601d55601e805460ff1916600190811790915560095433808452602092909252604083205581546001600160a01b031916179055466038036200023057600c80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000323565b466061036200026557600c80546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d117905562000323565b4660011480620002755750466004145b80620002815750466003145b15620002b357600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000323565b4661a86a03620002e957600c80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d417905562000323565b4660fa036200031e57600c80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c2917905562000323565b600080fd5b600c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000377573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039d9190620008da565b6001600160a01b031663c9c65396600c60009054906101000a90046001600160a01b03166001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004259190620008da565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000472573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004989190620008da565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055600c54620004e4913391166000196200063c565b600c54620005009030906001600160a01b03166000196200063c565b600080546001600160a01b0390811682526005602090815260408084208054600160ff199182168117909255308087528387208054831684179055865486168752600785528387208054831684179055600d549095168652828620805482168317905593855281852080548516821790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548516821790558480527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80549094161790925560095491519182523392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600080546040516001600160a01b0390911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a362000905565b6001600160a01b038316620006a45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620007075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200069b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007bf578160001904821115620007a357620007a362000768565b80851615620007b157918102915b93841c939080029062000783565b509250929050565b600082620007d85750600162000877565b81620007e75750600062000877565b81600181146200080057600281146200080b576200082b565b600191505062000877565b60ff8411156200081f576200081f62000768565b50506001821b62000877565b5060208310610133831016604e8410600b841016171562000850575081810a62000877565b6200085c83836200077e565b806000190482111562000873576200087362000768565b0290505b92915050565b60006200088e60ff841683620007c7565b9392505050565b6000816000190483118215151615620008b257620008b262000768565b500290565b600082620008d557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620008ed57600080fd5b81516001600160a01b03811681146200088e57600080fd5b61574280620009156000396000f3fe6080604052600436106105065760003560e01c806380c581d111610297578063c6a276c211610165578063e4fcfd18116100cc578063f2e4109c11610085578063f2e4109c1461107f578063f7c245ea14611095578063f94aa1b4146110aa578063faad381f14611110578063fdb78c0e14611130578063fe575a871461114f57600080fd5b8063e4fcfd1814610fa8578063eafb5a3c14610fbe578063ecfc021f14610fde578063efe7dc9014610ffe578063f08f43a214611018578063f1880b241461103857600080fd5b8063d0b1449d1161011e578063d0b1449d14610ec2578063d396616014610ee2578063db40e30214610f02578063dbc1d6ca14610f22578063dd62ed3e14610f42578063dea528a114610f8857600080fd5b8063c6a276c214610d8a578063c705c56914610daa578063c7c71bbd14610de3578063cc77828d14610e03578063cf0d2b4f14610e18578063cf84770614610e3857600080fd5b8063a1b12db411610209578063b1b08f71116101c2578063b1b08f711461079c578063b26e0beb14610d25578063b3d514fb1461079c578063b8e0e96d14610d3f578063bf4899f214610d55578063c155705d14610d6a57600080fd5b8063a1b12db414610c65578063a739201c14610c85578063a9059cbb14610ca5578063ab5cb5a614610cc5578063ad9fa9f314610ce5578063b0cdcf0514610d0557600080fd5b80638a8c523c1161025b5780638a8c523c14610bb75780638d8f2adb14610bcc5780638eac4b1514610be157806392bd7b2c14610c0157806395d89b4114610c16578063998d5f7514610c4557600080fd5b806380c581d114610b2457806383672f3e14610b44578063885a4cd014610b64578063893d20e814610b845780638a63bd9b14610ba257600080fd5b806334cd8260116103d45780635f9a9bf9116103465780636b639a25116102ff5780636b639a2514610a905780636ebd007814610ab057806370a0823114610ac5578063715018a614610ae557806378872a2a14610afa5780637ea382c114610b0f57600080fd5b80635f9a9bf9146109ca5780635fbb9dfa146109ea57806360178c6b14610a0a5780636372c68f14610a2a5780636386c1c714610a4a5780636ab86dc114610a7b57600080fd5b80634fb2e45d116103985780634fb2e45d146108d85780634fbee193146108f857806350a8e0161461093157806350f50f6214610951578063590ffdce146109715780635cce86cd1461099157600080fd5b806334cd82601461083957806336fddb04146108595780633f3cf56c14610879578063452ed4f1146108995780634ada218b146108b957600080fd5b806318160ddd116104785780632b28fc7a116104315780632b28fc7a1461079c5780632e68d0ab146107b25780632e8fa821146107d257806330f7650e146107e8578063313ce567146107fd57806333251a0b1461081957600080fd5b806318160ddd146106f05780631dc555b5146107055780631de3b1c71461071c57806323b872dd1461073c578063260039571461075c5780632610eaca1461077c57600080fd5b80630758d924116104ca5780630758d92414610636578063095ea7b31461065657806309a8f179146106865780630eda6712146106a65780630fa604e4146106bb57806317a29dc1146106d057600080fd5b806303fd2a45146105125780630445b6671461053e578063044df72614610562578063069d955f1461058457806306fdde03146105eb57600080fd5b3661050d57005b600080fd5b34801561051e57600080fd5b5061052861dead81565b6040516105359190614a7a565b60405180910390f35b34801561054a57600080fd5b5061055460195481565b604051908152602001610535565b34801561056e57600080fd5b5061058261057d366004614a9c565b61116f565b005b34801561059057600080fd5b50600a546105bd9061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610535565b3480156105f757600080fd5b50604080518082019091526019815278149958985cd9481059d9dc9959d85d1bdc8810d85c1a5d185b603a1b60208201525b6040516105359190614b2d565b34801561064257600080fd5b50600c54610528906001600160a01b031681565b34801561066257600080fd5b50610676610671366004614b55565b611214565b6040519015158152602001610535565b34801561069257600080fd5b506105826106a1366004614b81565b611281565b3480156106b257600080fd5b5061058261132b565b3480156106c757600080fd5b50610554611445565b3480156106dc57600080fd5b506105826106eb366004614bad565b611465565b3480156106fc57600080fd5b506105546114f4565b34801561071157600080fd5b5061055462f1428081565b34801561072857600080fd5b50610582610737366004614bca565b61150c565b34801561074857600080fd5b50610676610757366004614be7565b611549565b34801561076857600080fd5b50610582610777366004614c28565b6115c1565b34801561078857600080fd5b50610582610797366004614d1e565b61169d565b3480156107a857600080fd5b506105546109c481565b3480156107be57600080fd5b506105826107cd366004614e2a565b6117ca565b3480156107de57600080fd5b50610554601a5481565b3480156107f457600080fd5b50610554611862565b34801561080957600080fd5b5060405160128152602001610535565b34801561082557600080fd5b50610582610834366004614bad565b6118db565b34801561084557600080fd5b50610582610854366004614e95565b61193b565b34801561086557600080fd5b50610582610874366004614ed0565b6119a7565b34801561088557600080fd5b50610582610894366004614c28565b6119fc565b3480156108a557600080fd5b50600d54610528906001600160a01b031681565b3480156108c557600080fd5b50601b5461067690610100900460ff1681565b3480156108e457600080fd5b506105826108f3366004614bad565b611add565b34801561090457600080fd5b50610676610913366004614bad565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561093d57600080fd5b50601b546106769062010000900460ff1681565b34801561095d57600080fd5b5061058261096c366004614eee565b611c3e565b34801561097d57600080fd5b5061058261098c366004614ed0565b611c74565b34801561099d57600080fd5b506106766109ac366004614bad565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156109d657600080fd5b506105826109e5366004614c28565b611cc9565b3480156109f657600080fd5b50610582610a05366004614f07565b611d8f565b348015610a1657600080fd5b50610676610a25366004614be7565b611deb565b348015610a3657600080fd5b50610554610a45366004614bad565b611ee6565b348015610a5657600080fd5b50610a6a610a65366004614bad565b611f58565b604051610535959493929190614f35565b348015610a8757600080fd5b50610582611fe8565b348015610a9c57600080fd5b50610582610aab366004614ed0565b61207b565b348015610abc57600080fd5b5061055461217d565b348015610ad157600080fd5b50610554610ae0366004614bad565b612198565b348015610af157600080fd5b506105826121b3565b348015610b0657600080fd5b50610554612254565b348015610b1b57600080fd5b5061058261229e565b348015610b3057600080fd5b50610582610b3f366004614ed0565b6122fc565b348015610b5057600080fd5b50610582610b5f366004614f96565b612453565b348015610b7057600080fd5b50610582610b7f366004614bad565b612529565b348015610b9057600080fd5b506000546001600160a01b0316610528565b348015610bae57600080fd5b506106766125e1565b348015610bc357600080fd5b5061058261262c565b348015610bd857600080fd5b5061058261297c565b348015610bed57600080fd5b50610582610bfc366004614ff2565b6129b0565b348015610c0d57600080fd5b50610582612a97565b348015610c2257600080fd5b506040805180820190915260068152650914915050d560d21b6020820152610629565b348015610c5157600080fd5b50610582610c60366004614eee565b612ac7565b348015610c7157600080fd5b50610582610c80366004614eee565b612b15565b348015610c9157600080fd5b50610582610ca0366004614bad565b612b74565b348015610cb157600080fd5b50610676610cc0366004614b55565b612ba6565b348015610cd157600080fd5b50610554610ce0366004614bad565b612bba565b348015610cf157600080fd5b50610582610d00366004614eee565b612beb565b348015610d1157600080fd5b50610554610d20366004614bad565b612c21565b348015610d3157600080fd5b50601e546106769060ff1681565b348015610d4b57600080fd5b50610554601d5481565b348015610d6157600080fd5b50610582612c57565b348015610d7657600080fd5b50610582610d85366004614bad565b612cf0565b348015610d9657600080fd5b50610582610da5366004614bad565b612d22565b348015610db657600080fd5b50610676610dc5366004614bad565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610def57600080fd5b50610528610dfe366004614bad565b612d82565b348015610e0f57600080fd5b50610629612df4565b348015610e2457600080fd5b50610554610e33366004614bad565b612e66565b348015610e4457600080fd5b50600b54610e859061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610535565b348015610ece57600080fd5b50610582610edd366004614eee565b612e9c565b348015610eee57600080fd5b50610582610efd366004614f07565b612eda565b348015610f0e57600080fd5b50610582610f1d366004614eee565b612f36565b348015610f2e57600080fd5b50610582610f3d366004614eee565b612f75565b348015610f4e57600080fd5b50610554610f5d366004614f07565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610f9457600080fd5b50610582610fa3366004614a9c565b612fed565b348015610fb457600080fd5b5061055460175481565b348015610fca57600080fd5b50610582610fd9366004614bad565b613044565b348015610fea57600080fd5b50610582610ff9366004615054565b613356565b34801561100a57600080fd5b50601b546106769060ff1681565b34801561102457600080fd5b506105826110333660046150a8565b613421565b34801561104457600080fd5b50611058611053366004614bad565b6135c0565b6040805193151584526001600160a01b039283166020850152911690820152606001610535565b34801561108b57600080fd5b50610554610bb881565b3480156110a157600080fd5b50610554613643565b3480156110b657600080fd5b50600e54600f546010546011546110dd936001600160a01b03908116938116928116911684565b604080516001600160a01b0395861681529385166020850152918416918301919091529091166060820152608001610535565b34801561111c57600080fd5b5061058261112b366004614eee565b61368d565b34801561113c57600080fd5b5060165461067690610100900460ff1681565b34801561115b57600080fd5b5061067661116a366004614bad565b6136ec565b6000546001600160a01b031633146111a25760405162461bcd60e51b81526004016111999061510d565b60405180910390fd5b601b5460405163efbdbabd60e01b81528315156004820152821515602482015263010000009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b1580156111f857600080fd5b505af115801561120c573d6000803e3d6000fd5b505050505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061126f9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146112ab5760405162461bcd60e51b81526004016111999061510d565b6112b681600a61523c565b6112c09083615248565b60145460405163466bf81760e11b815260048101869052602481018390529193506001600160a01b031690638cd7f02e90604401600060405180830381600087803b15801561130e57600080fd5b505af1158015611322573d6000803e3d6000fd5b50505050505050565b3360009081526005602052604081205460ff16151590036113e0573360008181526005602052604090819020805460ff191660011790556014549051634475c4e360e01b81526001600160a01b039190911691634475c4e3916113919190600401614a7a565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050336000908152600560205260409020805460ff19169055506114439050565b601454604051634475c4e360e01b81526001600160a01b0390911690634475c4e390611410903390600401614a7a565b600060405180830381600087803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b505050505b565b60006114536012600a615267565b6013546114609190615276565b905090565b6000546001600160a01b0316331461148f5760405162461bcd60e51b81526004016111999061510d565b6014546040516317a29dc160e01b81526001600160a01b03909116906317a29dc1906114bf908490600401614a7a565b600060405180830381600087803b1580156114d957600080fd5b505af11580156114ed573d6000803e3d6000fd5b5050505050565b600060095460000361150557600080fd5b5060095490565b6000546001600160a01b031633146115365760405162461bcd60e51b81526004016111999061510d565b601e805460ff1916911515919091179055565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146115ae576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906115a8908490615298565b90915550505b6115b9848484613765565b949350505050565b6000546001600160a01b031633146115eb5760405162461bcd60e51b81526004016111999061510d565b6103e86009546115fb9190615276565b818360095461160a9190615248565b6116149190615276565b101561167d5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e31604482015271129037b3103a37ba30b61039bab838363c9760711b6064820152608401611199565b808260095461168c9190615248565b6116969190615276565b6013555050565b6000546001600160a01b031633146116c75760405162461bcd60e51b81526004016111999061510d565b80518251146117105760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401611199565b60005b82518160ff1610156117c557818160ff1681518110611734576117346152af565b602002602001015161174533612198565b101561175057600080fd5b6117b233848360ff1681518110611769576117696152af565b60200260200101516012600a61177f9190615267565b858560ff1681518110611794576117946152af565b60200260200101516117a69190615248565b60008060006001613b93565b50806117bd816152c5565b915050611713565b505050565b6000546001600160a01b031633146117f45760405162461bcd60e51b81526004016111999061510d565b601454604051632e68d0ab60e01b81526001600160a01b0390911690632e68d0ab9061182a90879087908790879060040161532d565b600060405180830381600087803b15801561184457600080fd5b505af1158015611858573d6000803e3d6000fd5b5050505050505050565b6000601e60019054906101000a90046001600160a01b03166001600160a01b03166330f7650e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611460919061535f565b6000546001600160a01b031633146119055760405162461bcd60e51b81526004016111999061510d565b601b546040516333251a0b60e01b815263010000009091046001600160a01b0316906333251a0b906114bf908490600401614a7a565b6000546001600160a01b031633146119655760405162461bcd60e51b81526004016111999061510d565b83856009546119749190615248565b61197e9190615276565b6019556009548290611991908590615248565b61199b9190615276565b601a5560175550505050565b6000546001600160a01b031633146119d15760405162461bcd60e51b81526004016111999061510d565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a265760405162461bcd60e51b81526004016111999061510d565b6103e8600954611a369190615276565b8183600954611a459190615248565b611a4f9190615276565b1015611abd5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f766044820152763290181718929037b3103a37ba30b61039bab838363c9760491b6064820152608401611199565b8082600954611acc9190615248565b611ad69190615276565b6012555050565b6000546001600160a01b03163314611b075760405162461bcd60e51b81526004016111999061510d565b6001600160a01b038116611b2d5760405162461bcd60e51b815260040161119990615378565b61deac196001600160a01b03821601611b585760405162461bcd60e51b815260040161119990615378565b600080546001600160a01b039081168252600560208181526040808520805460ff1990811690915585548516865260078084528287208054831690558786168752938352818620805482166001908117909155938352818620805490911684179055845490931684525290205415611bf357600080546001600160a01b03168082526001602052604090912054611bf191908390613765565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b601e5460405163fa17d07d60e01b81526101009091046001600160a01b03169063fa17d07d906114bf90339085906004016153d5565b6000546001600160a01b03163314611c9e5760405162461bcd60e51b81526004016111999061510d565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b611cd56012600a615267565b611cdf9083615248565b915081611ceb33612198565b1015611d4d5760405162461bcd60e51b815260206004820152602b60248201527f4e6f7420656e6f75676820746f6b656e732068656c6420746f206c6f636b207460448201526a3434b99030b6b7bab73a1760a91b6064820152608401611199565b601e5460405163dff23ea360e01b815233600482015260248101849052604481018390526101009091046001600160a01b03169063dff23ea3906064016111de565b6000546001600160a01b03163314611db95760405162461bcd60e51b81526004016111999061510d565b601454604051632fddcefd60e11b81526001600160a01b0390911690635fbb9dfa906111de90859085906004016153ee565b601e5460009061010090046001600160a01b03163314611e455760405162461bcd60e51b815260206004820152601560248201527427b7363c903637b1b5b2b91036b0bc9031b0b6361760591b6044820152606401611199565b6001600160a01b03841660009081526001602052604081208054849290611e6d908490615298565b90915550506001600160a01b03831660009081526001602052604081208054849290611e9a908490615408565b92505081905550826001600160a01b0316846001600160a01b03166000805160206156ed83398151915284604051611ed491815260200190565b60405180910390a35060019392505050565b60145460405163d59b2ffd60e01b81526000916001600160a01b03169063d59b2ffd90611f17908590600401614a7a565b602060405180830381865afa158015611f34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b919061535f565b601454604051635e6056bb60e01b815260609182918291829182916001600160a01b031690635e6056bb90611f91908990600401614a7a565b600060405180830381865afa158015611fae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fd69190810190615483565b939a9299509097509550909350915050565b6000546001600160a01b031633146120125760405162461bcd60e51b81526004016111999061510d565b601460009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206257600080fd5b505af193505050508015612074575060015b1561144357565b6000546001600160a01b031633146120a55760405162461bcd60e51b81526004016111999061510d565b6001600160a01b03821630148015906120cc5750600d546001600160a01b03838116911614155b6120d557600080fd5b6001600160a01b0382166000908152600760205260409020805460ff1916821580159190911790915561213557601454604051636f823f4f60e11b81526001600160a01b039091169063df047e9e906111de9085906000906004016153d5565b6014546001600160a01b0383811660009081526001602052604090819020549051636f823f4f60e11b8152919092169163df047e9e916111de9186916004016153d5565b5050565b600061218b6012600a615267565b6012546114609190615276565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146121dd5760405162461bcd60e51b81526004016111999061510d565b600080546001600160a01b039081168252600560209081526040808420805460ff19908116909155845490931684526007909152808320805490921690915581546001600160a01b03191682555181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b60145460408051633c43951560e11b815290516000926001600160a01b0316916378872a2a9160048083019260209291908290030181865afa1580156118b7573d6000803e3d6000fd5b6000546001600160a01b031633146122c85760405162461bcd60e51b81526004016111999061510d565b601e54604051639d67ac3760e01b81526101009091046001600160a01b031690639d67ac3790611410903390600401614a7a565b6000546001600160a01b031633146123265760405162461bcd60e51b81526004016111999061510d565b80151560000361238a576001600160a01b03828116600081815260026020526040808220805460ff19169055601b5490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d1906044016111de565b600354156123f1576203f480600354426123a49190615298565b116123f15760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401611199565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601b5491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d1906044016111de565b6000546001600160a01b0316331461247d5760405162461bcd60e51b81526004016111999061510d565b6010546001600160a01b03163314806124a057506000546001600160a01b031633145b6124a957600080fd5b6010546001600160a01b031633036124d757601080546001600160a01b0319166001600160a01b0383161790555b6000546001600160a01b0316330361143e5750600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560118054919093169116179055565b6000546001600160a01b031633146125535760405162461bcd60e51b81526004016111999061510d565b306001600160a01b038216036125ab5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e732e00006044820152606401611199565b601e54604051634752355160e11b81526101009091046001600160a01b031690638ea46aa2906114bf90339085906004016153ee565b600080546001600160a01b0316331461260c5760405162461bcd60e51b81526004016111999061510d565b600c546126269030906001600160a01b0316600019613d95565b50600190565b6000546001600160a01b031633146126565760405162461bcd60e51b81526004016111999061510d565b601b54610100900460ff16156126a95760405162461bcd60e51b815260206004820152601860248201527754726164696e6720616c726561647920656e61626c65642160401b6044820152606401611199565b601b5462010000900460ff166126fc5760405162461bcd60e51b81526020600482015260186024820152772634b8bab4b234ba3c9036bab9ba1031329030b23232b21760411b6044820152606401611199565b601b54630100000090046001600160a01b031661272f57601b80546301000000600160b81b031916306301000000021790555b601b54600d54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff431660248201526001600160401b03421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b1580156127a157600080fd5b505af19250505080156127b2575060015b50601460009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561280357600080fd5b505af1925050508015612814575060015b50601e54600d5460405163189acdbd60e31b81526001600160a01b0361010090930483169263c4d66de89261284e92911690600401614a7a565b600060405180830381600087803b15801561286857600080fd5b505af115801561287c573d6000803e3d6000fd5b5050601e546040516340519a5360e01b815262f1428060048201526101009091046001600160a01b031692506340519a539150602401600060405180830381600087803b1580156128cc57600080fd5b505af11580156128e0573d6000803e3d6000fd5b5050601e54601180546001600160a01b0319166001600160a01b0361010093849004811691909117909155601b805461ff00191690921790915542601c55600d546127109350612931925016612198565b61293c90600a615248565b6129469190615276565b601955600d5461271090612962906001600160a01b0316612198565b61296d906019615248565b6129779190615276565b601a55565b601e54604051631277dca360e21b81526101009091046001600160a01b0316906349df728c90611410903390600401614a7a565b6000546001600160a01b031633146129da5760405162461bcd60e51b81526004016111999061510d565b601b54610100900460ff16156129ef57600080fd5b6001600160a01b0382163014801590612a1157506001600160a01b0383163014155b8015612a2f5750826001600160a01b0316826001600160a01b031614155b612a3857600080fd5b601b80546001600160a01b039485166301000000026301000000600160b81b0319909116179055601480549284166001600160a01b031990931692909217909155601e80549190921661010002610100600160a81b0319909116179055565b601454604051632e6f0efd60e01b81526001600160a01b0390911690632e6f0efd90611410903390600401614a7a565b612ad36012600a615267565b612add9082615248565b601e5460405163626073e560e11b815291925061010090046001600160a01b03169063c4c0e7ca906114bf90339085906004016153d5565b6000546001600160a01b03163314612b3f5760405162461bcd60e51b81526004016111999061510d565b601e5460405163286c4b6d60e21b8152600481018390526101009091046001600160a01b03169063a1b12db4906024016114bf565b6014546040516306e64def60e41b81526001600160a01b0390911690636e64def0906114bf90339085906004016153ee565b6000612bb3338484613765565b9392505050565b60145460405163f6ed201760e01b81526000916001600160a01b03169063f6ed201790611f17908590600401614a7a565b601e5460405163c97f1e7160e01b81526101009091046001600160a01b03169063c97f1e71906114bf90339085906004016153d5565b601e5460405163b0cdcf0560e01b815260009161010090046001600160a01b03169063b0cdcf0590611f17908590600401614a7a565b601454600c54604080516339d94ae160e11b815290516001600160a01b0393841693639f2c7e659333939116916373b295c2916004808201926020929091908290030181865afa158015612caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd39190615554565b6040518363ffffffff1660e01b81526004016114109291906153ee565b601454604051639f2c7e6560e01b81526001600160a01b0390911690639f2c7e65906114bf90339085906004016153ee565b6000546001600160a01b03163314612d4c5760405162461bcd60e51b81526004016111999061510d565b601b546040516363513b6160e11b815263010000009091046001600160a01b03169063c6a276c2906114bf908490600401614a7a565b60145460405163c7c71bbd60e01b81526000916001600160a01b03169063c7c71bbd90612db3908590600401614a7a565b602060405180830381865afa158015612dd0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b9190615554565b6014546040805163cc77828d60e01b815290516060926001600160a01b03169163cc77828d9160048083019260009291908290030181865afa158015612e3e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114609190810190615571565b601e5460405163cf0d2b4f60e01b815260009161010090046001600160a01b03169063cf0d2b4f90611f17908590600401614a7a565b6000546001600160a01b03163314612ec65760405162461bcd60e51b81526004016111999061510d565b620f42408110612ed557600080fd5b601555565b6000546001600160a01b03163314612f045760405162461bcd60e51b81526004016111999061510d565b60145460405163069cb30b60e51b81526001600160a01b039091169063d3966160906111de90859085906004016153ee565b6000546001600160a01b03163314612f605760405162461bcd60e51b81526004016111999061510d565b62015180811115612f7057600080fd5b601d55565b80600003612f865750601554612f95565b601554811015612f9557600080fd5b60145460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b158015612fdb57600080fd5b505af192505050801561217957505b50565b6000546001600160a01b031633146130175760405162461bcd60e51b81526004016111999061510d565b6016805461ff0019166101009315159390930292909217909155601b805460ff1916911515919091179055565b6000546001600160a01b0316331461306e5760405162461bcd60e51b81526004016111999061510d565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d79190615554565b6001600160a01b031663e6a4390530846001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015613124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131489190615554565b6040518363ffffffff1660e01b81526004016131659291906153ee565b602060405180830381865afa158015613182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a69190615554565b90506001600160a01b03811661330e57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132189190615554565b6001600160a01b031663c9c6539630846001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015613265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132899190615554565b6040518363ffffffff1660e01b81526004016132a69291906153ee565b6020604051808303816000875af11580156132c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e99190615554565b600d80546001600160a01b0319166001600160a01b039290921691909117905561332a565b600d80546001600160a01b0319166001600160a01b0383161790555b600c80546001600160a01b0319166001600160a01b0384169081179091556117c5903090600019613d95565b6000546001600160a01b031633146133805760405162461bcd60e51b81526004016111999061510d565b6109c48461ffff161115801561339c57506109c48361ffff1611155b80156133ae57506109c48261ffff1611155b80156133c05750610bb88161ffff1611155b6133c957600080fd5b600a805461ffff95861663ffffffff199091161762010000948616949094029390931767ffffffff000000001916600160201b9285169290920261ffff60301b191691909117600160301b9190931602919091179055565b6000546001600160a01b031633148061344457506010546001600160a01b031633145b61344d57600080fd5b6010546001600160a01b031633036134905760c88161ffff16111561347157600080fd5b600b805461ffff60401b1916600160401b61ffff8416021790556134ef565b6000546001600160a01b031633036134ef57600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff000000001916600160201b8683160261ffff60301b191617600160301b918516919091021790555b8082846134fc87896155a5565b61350691906155a5565b61351091906155a5565b61351a91906155a5565b600b805461ffff60501b1916600160501b61ffff93841602179055600a5460009161354e91620100008104821691166155a5565b600b5461ffff9182169250600160501b90041681101561120c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401611199565b601454604051633c6202c960e21b8152600091829182916001600160a01b03169063f1880b24906135f5908790600401614a7a565b606060405180830381865afa158015613612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363691906155cb565b9250925092509193909250565b60145460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa1580156118b7573d6000803e3d6000fd5b6000546001600160a01b031633146136b75760405162461bcd60e51b81526004016111999061510d565b601e5460405163faad381f60e01b8152600481018390526101009091046001600160a01b03169063faad381f906024016114bf565b601b5460405163fe575a8760e01b8152600091630100000090046001600160a01b03169063fe575a8790613724908590600401614a7a565b602060405180830381865afa158015613741573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b919061560d565b60006001600160a01b0384166137cb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611199565b6001600160a01b03831661382d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611199565b6000821161388f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401611199565b6001600160a01b0384166000908152600260205260408120548190819060ff16156138bd57600192506138eb565b6001600160a01b03861660009081526002602052604090205460ff16156138e757600191506138eb565b5060015b6138f58787613eb9565b15613abd57601b54610100900460ff1661394c5760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b6044820152606401611199565b82806139555750815b15613a04576001600160a01b03871660009081526006602052604090205460ff1615801561399c57506001600160a01b03861660009081526006602052604090205460ff16155b15613a0457601254851115613a045760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401611199565b600c546001600160a01b03878116911614801590613a20575081155b15613abd576001600160a01b03861660009081526006602052604090205460ff16613abd5760135485613a5288612198565b613a5c9190615408565b1115613abd5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401611199565b6001600160a01b03871660009081526005602052604090205460019060ff1680613aff57506001600160a01b03871660009081526005602052604090205460ff165b15613b08575060005b8215613b785760165460ff16158015613b285750601654610100900460ff165b15613b785742601754601854613b3e9190615408565b1015613b78576000613b4f30612198565b90506019548110613b7657601a548110613b685750601a545b613b7181613f8a565b426018555b505b613b8788888884888888613b93565b98975050505050505050565b601b5460009062010000900460ff16613c2957613bb088886144f9565b601b5462010000900460ff16158015613bce5750613bce8888613eb9565b15613c295760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401611199565b613c338888613eb9565b15613cce57601b5460405163ecd07a5360e01b81526001600160a01b038a8116600483015289811660248301526044820189905260009263010000009004169063ecd07a53906064016020604051808303816000875af1925050508015613cb7575060408051601f3d908101601f19168201909252613cb49181019061560d565b60015b613cc057600080fd5b905080613ccc57600080fd5b505b6001600160a01b03881660009081526001602052604081208054889290613cf6908490615298565b909155508690508515613d1357613d108988878787614650565b90505b6001600160a01b03881660009081526001602052604081208054839290613d3b908490615408565b90915550613d4b905089896147e0565b876001600160a01b0316896001600160a01b03166000805160206156ed83398151915283604051613d7e91815260200190565b60405180910390a350600198975050505050505050565b6001600160a01b038316613df75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611199565b6001600160a01b038216613e585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611199565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b03848116911614801590613ee657506000546001600160a01b03838116911614155b8015613efd57506000546001600160a01b03163214155b8015613f2257506001600160a01b03821660009081526008602052604090205460ff16155b8015613f4757506001600160a01b03831660009081526008602052604090205460ff16155b8015613f5e57506001600160a01b03821661dead14155b8015613f7257506001600160a01b03821615155b8015612bb3575050506001600160a01b031630141590565b6016805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a0820181905260000361400357506144ec565b306000908152600460209081526040808320600c546001600160a01b031684529091529020546000191461405c57306000908152600460209081526040808320600c546001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836020015161ffff168561407d9190615248565b6140879190615276565b6140919190615276565b9050600061409f8285615298565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106140d9576140d96152af565b6001600160a01b03928316602091820292909201810191909152600c54604080516339d94ae160e11b8152905191909316926373b295c29260048083019391928290030181865afa158015614132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141569190615554565b81600181518110614169576141696152af565b6001600160a01b039283166020918202929092010152600c54604051633b158ab160e11b815291169063762b1562906141af90859060009086903090429060040161562a565b600060405180830381600087803b1580156141c957600080fd5b505af11580156141dd573d6000803e3d6000fd5b50479250600091508490506141f28684615248565b6141fc9190615276565b905084156142d657600c54601154604051637c8d9fb960e11b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f91b3f7290839060c40160606040518083038185885af1158015614274573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614299919061569b565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6142e08183615298565b915085602001518660a0018181516142f891906156c9565b61ffff90811690915260a08801518851600093509082169161431b911685615248565b6143259190615276565b905060008760a0015161ffff16886060015161ffff16856143469190615248565b6143509190615276565b905060008860a0015161ffff16896080015161ffff16866143719190615248565b61437b9190615276565b905060008161438a8486615408565b6143949190615408565b61439e9087615298565b9050601460009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156143f057600080fd5b505af193505050508015614402575060015b5060608a015161ffff161561444d57600f546040516001600160a01b039091169084156108fc029085906000818181858888f1935050505015801561444b573d6000803e3d6000fd5b505b60808a015161ffff1615614497576010546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015614495573d6000803e3d6000fd5b505b60408a015161ffff16156144e157600e546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156144df573d6000803e3d6000fd5b505b505050505050505050505b506016805460ff19169055565b601b5462010000900460ff161561455e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401611199565b6145688282613eb9565b1580156145825750600d546001600160a01b038281169116145b15612179576001600160a01b038083166000908152600860205260409020805460ff19166001179055601b805462ff0000191662010000179081905563010000009004166145e657601b80546301000000600160b81b031916306301000000021790555b6014546001600160a01b031661460957601480546001600160a01b031916301790555b6016805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b60008084156146665750600a5461ffff16614747565b831561473757601b54604051630f3a325f60e01b815263010000009091046001600160a01b031690630f3a325f906146a2908a90600401614a7a565b602060405180830381865afa1580156146bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146e3919061560d565b80156146fd575042601d54601c546146fb9190615408565b115b801561470b5750601e5460ff165b156147245750600a54600160301b900461ffff16614747565b50600a5462010000900461ffff16614747565b50600a54600160201b900461ffff165b8060000361475857859150506147d7565b60006127106147678389615248565b6147719190615276565b30600090815260016020526040812080549293508392909190614795908490615408565b909155505060405181815230906001600160a01b038a16906000805160206156ed8339815191529060200160405180910390a36147d28188615298565b925050505b95945050505050565b6001600160a01b03821660009081526007602052604090205460ff166148f357601454601e546040516319d96e1960e31b81526001600160a01b039283169263df047e9e9286926101009091049091169063cecb70c890614845908490600401614a7a565b602060405180830381865afa158015614862573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614886919061535f565b6001600160a01b0386166000908152600160205260409020546148a99190615408565b6040518363ffffffff1660e01b81526004016148c69291906153d5565b600060405180830381600087803b1580156148e057600080fd5b505af19250505080156148f1575060015b505b6001600160a01b03811660009081526007602052604090205460ff16614a0657601454601e546040516319d96e1960e31b81526001600160a01b039283169263df047e9e9285926101009091049091169063cecb70c890614958908490600401614a7a565b602060405180830381865afa158015614975573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614999919061535f565b6001600160a01b0385166000908152600160205260409020546149bc9190615408565b6040518363ffffffff1660e01b81526004016149d99291906153d5565b600060405180830381600087803b1580156149f357600080fd5b505af1925050508015614a04575060015b505b601b5460ff16156121795760145460155460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb91614a469160040190815260200190565b600060405180830381600087803b158015614a6057600080fd5b505af1925050508015614a71575060015b15612179575050565b6001600160a01b0391909116815260200190565b8015158114612fea57600080fd5b60008060408385031215614aaf57600080fd5b8235614aba81614a8e565b91506020830135614aca81614a8e565b809150509250929050565b60005b83811015614af0578181015183820152602001614ad8565b8381111561143e5750506000910152565b60008151808452614b19816020860160208601614ad5565b601f01601f19169290920160200192915050565b602081526000612bb36020830184614b01565b6001600160a01b0381168114612fea57600080fd5b60008060408385031215614b6857600080fd5b8235614b7381614b40565b946020939093013593505050565b600080600060608486031215614b9657600080fd5b505081359360208301359350604090920135919050565b600060208284031215614bbf57600080fd5b8135612bb381614b40565b600060208284031215614bdc57600080fd5b8135612bb381614a8e565b600080600060608486031215614bfc57600080fd5b8335614c0781614b40565b92506020840135614c1781614b40565b929592945050506040919091013590565b60008060408385031215614c3b57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614c8857614c88614c4a565b604052919050565b60006001600160401b03821115614ca957614ca9614c4a565b5060051b60200190565b600082601f830112614cc457600080fd5b81356020614cd9614cd483614c90565b614c60565b82815260059290921b84018101918181019086841115614cf857600080fd5b8286015b84811015614d135780358352918301918301614cfc565b509695505050505050565b60008060408385031215614d3157600080fd5b82356001600160401b0380821115614d4857600080fd5b818501915085601f830112614d5c57600080fd5b81356020614d6c614cd483614c90565b82815260059290921b84018101918181019089841115614d8b57600080fd5b948201945b83861015614db2578535614da381614b40565b82529482019490820190614d90565b96505086013592505080821115614dc857600080fd5b50614dd585828601614cb3565b9150509250929050565b60008083601f840112614df157600080fd5b5081356001600160401b03811115614e0857600080fd5b6020830191508360208260051b8501011115614e2357600080fd5b9250929050565b60008060008060408587031215614e4057600080fd5b84356001600160401b0380821115614e5757600080fd5b614e6388838901614ddf565b90965094506020870135915080821115614e7c57600080fd5b50614e8987828801614ddf565b95989497509550505050565b600080600080600060a08688031215614ead57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215614ee357600080fd5b8235614aba81614b40565b600060208284031215614f0057600080fd5b5035919050565b60008060408385031215614f1a57600080fd5b8235614f2581614b40565b91506020830135614aca81614b40565b60a081526000614f4860a0830188614b01565b8281036020840152614f5a8188614b01565b90508281036040840152614f6e8187614b01565b90508281036060840152614f828186614b01565b90508281036080840152613b878185614b01565b60008060008060808587031215614fac57600080fd5b8435614fb781614b40565b93506020850135614fc781614b40565b92506040850135614fd781614b40565b91506060850135614fe781614b40565b939692955090935050565b60008060006060848603121561500757600080fd5b833561501281614b40565b9250602084013561502281614b40565b9150604084013561503281614b40565b809150509250925092565b803561ffff8116811461504f57600080fd5b919050565b6000806000806080858703121561506a57600080fd5b6150738561503d565b93506150816020860161503d565b925061508f6040860161503d565b915061509d6060860161503d565b905092959194509250565b600080600080600060a086880312156150c057600080fd5b6150c98661503d565b94506150d76020870161503d565b93506150e56040870161503d565b92506150f36060870161503d565b91506151016080870161503d565b90509295509295909350565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561519357816000190482111561517957615179615142565b8085161561518657918102915b93841c939080029061515d565b509250929050565b6000826151aa5750600161127b565b816151b75750600061127b565b81600181146151cd57600281146151d7576151f3565b600191505061127b565b60ff8411156151e8576151e8615142565b50506001821b61127b565b5060208310610133831016604e8410600b8410161715615216575081810a61127b565b6152208383615158565b806000190482111561523457615234615142565b029392505050565b6000612bb3838361519b565b600081600019048311821515161561526257615262615142565b500290565b6000612bb360ff84168361519b565b60008261529357634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156152aa576152aa615142565b500390565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81036152db576152db615142565b60010192915050565b8183526000602080850194508260005b8581101561532257813561530781614b40565b6001600160a01b0316875295820195908201906001016152f4565b509495945050505050565b6040815260006153416040830186886152e4565b82810360208401526153548185876152e4565b979650505050505050565b60006020828403121561537157600080fd5b5051919050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6000821982111561541b5761541b615142565b500190565b600082601f83011261543157600080fd5b81516001600160401b0381111561544a5761544a614c4a565b61545d601f8201601f1916602001614c60565b81815284602083860101111561547257600080fd5b6115b9826020830160208701614ad5565b600080600080600060a0868803121561549b57600080fd5b85516001600160401b03808211156154b257600080fd5b6154be89838a01615420565b965060208801519150808211156154d457600080fd5b6154e089838a01615420565b955060408801519150808211156154f657600080fd5b61550289838a01615420565b9450606088015191508082111561551857600080fd5b61552489838a01615420565b9350608088015191508082111561553a57600080fd5b5061554788828901615420565b9150509295509295909350565b60006020828403121561556657600080fd5b8151612bb381614b40565b60006020828403121561558357600080fd5b81516001600160401b0381111561559957600080fd5b6115b984828501615420565b600061ffff8083168185168083038211156155c2576155c2615142565b01949350505050565b6000806000606084860312156155e057600080fd5b83516155eb81614a8e565b60208501519093506155fc81614b40565b604085015190925061503281614b40565b60006020828403121561561f57600080fd5b8151612bb381614a8e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561567a5784516001600160a01b031683529383019391830191600101615655565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156156b057600080fd5b8351925060208401519150604084015190509250925092565b600061ffff838116908316818110156156e4576156e4615142565b03939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ef0445cd3382f163eb5430f2e5ab71ad8b85e2dc9be718d2faef3130b5a1ce4f64736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106105065760003560e01c806380c581d111610297578063c6a276c211610165578063e4fcfd18116100cc578063f2e4109c11610085578063f2e4109c1461107f578063f7c245ea14611095578063f94aa1b4146110aa578063faad381f14611110578063fdb78c0e14611130578063fe575a871461114f57600080fd5b8063e4fcfd1814610fa8578063eafb5a3c14610fbe578063ecfc021f14610fde578063efe7dc9014610ffe578063f08f43a214611018578063f1880b241461103857600080fd5b8063d0b1449d1161011e578063d0b1449d14610ec2578063d396616014610ee2578063db40e30214610f02578063dbc1d6ca14610f22578063dd62ed3e14610f42578063dea528a114610f8857600080fd5b8063c6a276c214610d8a578063c705c56914610daa578063c7c71bbd14610de3578063cc77828d14610e03578063cf0d2b4f14610e18578063cf84770614610e3857600080fd5b8063a1b12db411610209578063b1b08f71116101c2578063b1b08f711461079c578063b26e0beb14610d25578063b3d514fb1461079c578063b8e0e96d14610d3f578063bf4899f214610d55578063c155705d14610d6a57600080fd5b8063a1b12db414610c65578063a739201c14610c85578063a9059cbb14610ca5578063ab5cb5a614610cc5578063ad9fa9f314610ce5578063b0cdcf0514610d0557600080fd5b80638a8c523c1161025b5780638a8c523c14610bb75780638d8f2adb14610bcc5780638eac4b1514610be157806392bd7b2c14610c0157806395d89b4114610c16578063998d5f7514610c4557600080fd5b806380c581d114610b2457806383672f3e14610b44578063885a4cd014610b64578063893d20e814610b845780638a63bd9b14610ba257600080fd5b806334cd8260116103d45780635f9a9bf9116103465780636b639a25116102ff5780636b639a2514610a905780636ebd007814610ab057806370a0823114610ac5578063715018a614610ae557806378872a2a14610afa5780637ea382c114610b0f57600080fd5b80635f9a9bf9146109ca5780635fbb9dfa146109ea57806360178c6b14610a0a5780636372c68f14610a2a5780636386c1c714610a4a5780636ab86dc114610a7b57600080fd5b80634fb2e45d116103985780634fb2e45d146108d85780634fbee193146108f857806350a8e0161461093157806350f50f6214610951578063590ffdce146109715780635cce86cd1461099157600080fd5b806334cd82601461083957806336fddb04146108595780633f3cf56c14610879578063452ed4f1146108995780634ada218b146108b957600080fd5b806318160ddd116104785780632b28fc7a116104315780632b28fc7a1461079c5780632e68d0ab146107b25780632e8fa821146107d257806330f7650e146107e8578063313ce567146107fd57806333251a0b1461081957600080fd5b806318160ddd146106f05780631dc555b5146107055780631de3b1c71461071c57806323b872dd1461073c578063260039571461075c5780632610eaca1461077c57600080fd5b80630758d924116104ca5780630758d92414610636578063095ea7b31461065657806309a8f179146106865780630eda6712146106a65780630fa604e4146106bb57806317a29dc1146106d057600080fd5b806303fd2a45146105125780630445b6671461053e578063044df72614610562578063069d955f1461058457806306fdde03146105eb57600080fd5b3661050d57005b600080fd5b34801561051e57600080fd5b5061052861dead81565b6040516105359190614a7a565b60405180910390f35b34801561054a57600080fd5b5061055460195481565b604051908152602001610535565b34801561056e57600080fd5b5061058261057d366004614a9c565b61116f565b005b34801561059057600080fd5b50600a546105bd9061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610535565b3480156105f757600080fd5b50604080518082019091526019815278149958985cd9481059d9dc9959d85d1bdc8810d85c1a5d185b603a1b60208201525b6040516105359190614b2d565b34801561064257600080fd5b50600c54610528906001600160a01b031681565b34801561066257600080fd5b50610676610671366004614b55565b611214565b6040519015158152602001610535565b34801561069257600080fd5b506105826106a1366004614b81565b611281565b3480156106b257600080fd5b5061058261132b565b3480156106c757600080fd5b50610554611445565b3480156106dc57600080fd5b506105826106eb366004614bad565b611465565b3480156106fc57600080fd5b506105546114f4565b34801561071157600080fd5b5061055462f1428081565b34801561072857600080fd5b50610582610737366004614bca565b61150c565b34801561074857600080fd5b50610676610757366004614be7565b611549565b34801561076857600080fd5b50610582610777366004614c28565b6115c1565b34801561078857600080fd5b50610582610797366004614d1e565b61169d565b3480156107a857600080fd5b506105546109c481565b3480156107be57600080fd5b506105826107cd366004614e2a565b6117ca565b3480156107de57600080fd5b50610554601a5481565b3480156107f457600080fd5b50610554611862565b34801561080957600080fd5b5060405160128152602001610535565b34801561082557600080fd5b50610582610834366004614bad565b6118db565b34801561084557600080fd5b50610582610854366004614e95565b61193b565b34801561086557600080fd5b50610582610874366004614ed0565b6119a7565b34801561088557600080fd5b50610582610894366004614c28565b6119fc565b3480156108a557600080fd5b50600d54610528906001600160a01b031681565b3480156108c557600080fd5b50601b5461067690610100900460ff1681565b3480156108e457600080fd5b506105826108f3366004614bad565b611add565b34801561090457600080fd5b50610676610913366004614bad565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561093d57600080fd5b50601b546106769062010000900460ff1681565b34801561095d57600080fd5b5061058261096c366004614eee565b611c3e565b34801561097d57600080fd5b5061058261098c366004614ed0565b611c74565b34801561099d57600080fd5b506106766109ac366004614bad565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156109d657600080fd5b506105826109e5366004614c28565b611cc9565b3480156109f657600080fd5b50610582610a05366004614f07565b611d8f565b348015610a1657600080fd5b50610676610a25366004614be7565b611deb565b348015610a3657600080fd5b50610554610a45366004614bad565b611ee6565b348015610a5657600080fd5b50610a6a610a65366004614bad565b611f58565b604051610535959493929190614f35565b348015610a8757600080fd5b50610582611fe8565b348015610a9c57600080fd5b50610582610aab366004614ed0565b61207b565b348015610abc57600080fd5b5061055461217d565b348015610ad157600080fd5b50610554610ae0366004614bad565b612198565b348015610af157600080fd5b506105826121b3565b348015610b0657600080fd5b50610554612254565b348015610b1b57600080fd5b5061058261229e565b348015610b3057600080fd5b50610582610b3f366004614ed0565b6122fc565b348015610b5057600080fd5b50610582610b5f366004614f96565b612453565b348015610b7057600080fd5b50610582610b7f366004614bad565b612529565b348015610b9057600080fd5b506000546001600160a01b0316610528565b348015610bae57600080fd5b506106766125e1565b348015610bc357600080fd5b5061058261262c565b348015610bd857600080fd5b5061058261297c565b348015610bed57600080fd5b50610582610bfc366004614ff2565b6129b0565b348015610c0d57600080fd5b50610582612a97565b348015610c2257600080fd5b506040805180820190915260068152650914915050d560d21b6020820152610629565b348015610c5157600080fd5b50610582610c60366004614eee565b612ac7565b348015610c7157600080fd5b50610582610c80366004614eee565b612b15565b348015610c9157600080fd5b50610582610ca0366004614bad565b612b74565b348015610cb157600080fd5b50610676610cc0366004614b55565b612ba6565b348015610cd157600080fd5b50610554610ce0366004614bad565b612bba565b348015610cf157600080fd5b50610582610d00366004614eee565b612beb565b348015610d1157600080fd5b50610554610d20366004614bad565b612c21565b348015610d3157600080fd5b50601e546106769060ff1681565b348015610d4b57600080fd5b50610554601d5481565b348015610d6157600080fd5b50610582612c57565b348015610d7657600080fd5b50610582610d85366004614bad565b612cf0565b348015610d9657600080fd5b50610582610da5366004614bad565b612d22565b348015610db657600080fd5b50610676610dc5366004614bad565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610def57600080fd5b50610528610dfe366004614bad565b612d82565b348015610e0f57600080fd5b50610629612df4565b348015610e2457600080fd5b50610554610e33366004614bad565b612e66565b348015610e4457600080fd5b50600b54610e859061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610535565b348015610ece57600080fd5b50610582610edd366004614eee565b612e9c565b348015610eee57600080fd5b50610582610efd366004614f07565b612eda565b348015610f0e57600080fd5b50610582610f1d366004614eee565b612f36565b348015610f2e57600080fd5b50610582610f3d366004614eee565b612f75565b348015610f4e57600080fd5b50610554610f5d366004614f07565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610f9457600080fd5b50610582610fa3366004614a9c565b612fed565b348015610fb457600080fd5b5061055460175481565b348015610fca57600080fd5b50610582610fd9366004614bad565b613044565b348015610fea57600080fd5b50610582610ff9366004615054565b613356565b34801561100a57600080fd5b50601b546106769060ff1681565b34801561102457600080fd5b506105826110333660046150a8565b613421565b34801561104457600080fd5b50611058611053366004614bad565b6135c0565b6040805193151584526001600160a01b039283166020850152911690820152606001610535565b34801561108b57600080fd5b50610554610bb881565b3480156110a157600080fd5b50610554613643565b3480156110b657600080fd5b50600e54600f546010546011546110dd936001600160a01b03908116938116928116911684565b604080516001600160a01b0395861681529385166020850152918416918301919091529091166060820152608001610535565b34801561111c57600080fd5b5061058261112b366004614eee565b61368d565b34801561113c57600080fd5b5060165461067690610100900460ff1681565b34801561115b57600080fd5b5061067661116a366004614bad565b6136ec565b6000546001600160a01b031633146111a25760405162461bcd60e51b81526004016111999061510d565b60405180910390fd5b601b5460405163efbdbabd60e01b81528315156004820152821515602482015263010000009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b1580156111f857600080fd5b505af115801561120c573d6000803e3d6000fd5b505050505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061126f9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146112ab5760405162461bcd60e51b81526004016111999061510d565b6112b681600a61523c565b6112c09083615248565b60145460405163466bf81760e11b815260048101869052602481018390529193506001600160a01b031690638cd7f02e90604401600060405180830381600087803b15801561130e57600080fd5b505af1158015611322573d6000803e3d6000fd5b50505050505050565b3360009081526005602052604081205460ff16151590036113e0573360008181526005602052604090819020805460ff191660011790556014549051634475c4e360e01b81526001600160a01b039190911691634475c4e3916113919190600401614a7a565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050336000908152600560205260409020805460ff19169055506114439050565b601454604051634475c4e360e01b81526001600160a01b0390911690634475c4e390611410903390600401614a7a565b600060405180830381600087803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b505050505b565b60006114536012600a615267565b6013546114609190615276565b905090565b6000546001600160a01b0316331461148f5760405162461bcd60e51b81526004016111999061510d565b6014546040516317a29dc160e01b81526001600160a01b03909116906317a29dc1906114bf908490600401614a7a565b600060405180830381600087803b1580156114d957600080fd5b505af11580156114ed573d6000803e3d6000fd5b5050505050565b600060095460000361150557600080fd5b5060095490565b6000546001600160a01b031633146115365760405162461bcd60e51b81526004016111999061510d565b601e805460ff1916911515919091179055565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146115ae576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906115a8908490615298565b90915550505b6115b9848484613765565b949350505050565b6000546001600160a01b031633146115eb5760405162461bcd60e51b81526004016111999061510d565b6103e86009546115fb9190615276565b818360095461160a9190615248565b6116149190615276565b101561167d5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e31604482015271129037b3103a37ba30b61039bab838363c9760711b6064820152608401611199565b808260095461168c9190615248565b6116969190615276565b6013555050565b6000546001600160a01b031633146116c75760405162461bcd60e51b81526004016111999061510d565b80518251146117105760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401611199565b60005b82518160ff1610156117c557818160ff1681518110611734576117346152af565b602002602001015161174533612198565b101561175057600080fd5b6117b233848360ff1681518110611769576117696152af565b60200260200101516012600a61177f9190615267565b858560ff1681518110611794576117946152af565b60200260200101516117a69190615248565b60008060006001613b93565b50806117bd816152c5565b915050611713565b505050565b6000546001600160a01b031633146117f45760405162461bcd60e51b81526004016111999061510d565b601454604051632e68d0ab60e01b81526001600160a01b0390911690632e68d0ab9061182a90879087908790879060040161532d565b600060405180830381600087803b15801561184457600080fd5b505af1158015611858573d6000803e3d6000fd5b5050505050505050565b6000601e60019054906101000a90046001600160a01b03166001600160a01b03166330f7650e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611460919061535f565b6000546001600160a01b031633146119055760405162461bcd60e51b81526004016111999061510d565b601b546040516333251a0b60e01b815263010000009091046001600160a01b0316906333251a0b906114bf908490600401614a7a565b6000546001600160a01b031633146119655760405162461bcd60e51b81526004016111999061510d565b83856009546119749190615248565b61197e9190615276565b6019556009548290611991908590615248565b61199b9190615276565b601a5560175550505050565b6000546001600160a01b031633146119d15760405162461bcd60e51b81526004016111999061510d565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a265760405162461bcd60e51b81526004016111999061510d565b6103e8600954611a369190615276565b8183600954611a459190615248565b611a4f9190615276565b1015611abd5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f766044820152763290181718929037b3103a37ba30b61039bab838363c9760491b6064820152608401611199565b8082600954611acc9190615248565b611ad69190615276565b6012555050565b6000546001600160a01b03163314611b075760405162461bcd60e51b81526004016111999061510d565b6001600160a01b038116611b2d5760405162461bcd60e51b815260040161119990615378565b61deac196001600160a01b03821601611b585760405162461bcd60e51b815260040161119990615378565b600080546001600160a01b039081168252600560208181526040808520805460ff1990811690915585548516865260078084528287208054831690558786168752938352818620805482166001908117909155938352818620805490911684179055845490931684525290205415611bf357600080546001600160a01b03168082526001602052604090912054611bf191908390613765565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b601e5460405163fa17d07d60e01b81526101009091046001600160a01b03169063fa17d07d906114bf90339085906004016153d5565b6000546001600160a01b03163314611c9e5760405162461bcd60e51b81526004016111999061510d565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b611cd56012600a615267565b611cdf9083615248565b915081611ceb33612198565b1015611d4d5760405162461bcd60e51b815260206004820152602b60248201527f4e6f7420656e6f75676820746f6b656e732068656c6420746f206c6f636b207460448201526a3434b99030b6b7bab73a1760a91b6064820152608401611199565b601e5460405163dff23ea360e01b815233600482015260248101849052604481018390526101009091046001600160a01b03169063dff23ea3906064016111de565b6000546001600160a01b03163314611db95760405162461bcd60e51b81526004016111999061510d565b601454604051632fddcefd60e11b81526001600160a01b0390911690635fbb9dfa906111de90859085906004016153ee565b601e5460009061010090046001600160a01b03163314611e455760405162461bcd60e51b815260206004820152601560248201527427b7363c903637b1b5b2b91036b0bc9031b0b6361760591b6044820152606401611199565b6001600160a01b03841660009081526001602052604081208054849290611e6d908490615298565b90915550506001600160a01b03831660009081526001602052604081208054849290611e9a908490615408565b92505081905550826001600160a01b0316846001600160a01b03166000805160206156ed83398151915284604051611ed491815260200190565b60405180910390a35060019392505050565b60145460405163d59b2ffd60e01b81526000916001600160a01b03169063d59b2ffd90611f17908590600401614a7a565b602060405180830381865afa158015611f34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b919061535f565b601454604051635e6056bb60e01b815260609182918291829182916001600160a01b031690635e6056bb90611f91908990600401614a7a565b600060405180830381865afa158015611fae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fd69190810190615483565b939a9299509097509550909350915050565b6000546001600160a01b031633146120125760405162461bcd60e51b81526004016111999061510d565b601460009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206257600080fd5b505af193505050508015612074575060015b1561144357565b6000546001600160a01b031633146120a55760405162461bcd60e51b81526004016111999061510d565b6001600160a01b03821630148015906120cc5750600d546001600160a01b03838116911614155b6120d557600080fd5b6001600160a01b0382166000908152600760205260409020805460ff1916821580159190911790915561213557601454604051636f823f4f60e11b81526001600160a01b039091169063df047e9e906111de9085906000906004016153d5565b6014546001600160a01b0383811660009081526001602052604090819020549051636f823f4f60e11b8152919092169163df047e9e916111de9186916004016153d5565b5050565b600061218b6012600a615267565b6012546114609190615276565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146121dd5760405162461bcd60e51b81526004016111999061510d565b600080546001600160a01b039081168252600560209081526040808420805460ff19908116909155845490931684526007909152808320805490921690915581546001600160a01b03191682555181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b60145460408051633c43951560e11b815290516000926001600160a01b0316916378872a2a9160048083019260209291908290030181865afa1580156118b7573d6000803e3d6000fd5b6000546001600160a01b031633146122c85760405162461bcd60e51b81526004016111999061510d565b601e54604051639d67ac3760e01b81526101009091046001600160a01b031690639d67ac3790611410903390600401614a7a565b6000546001600160a01b031633146123265760405162461bcd60e51b81526004016111999061510d565b80151560000361238a576001600160a01b03828116600081815260026020526040808220805460ff19169055601b5490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d1906044016111de565b600354156123f1576203f480600354426123a49190615298565b116123f15760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401611199565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601b5491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d1906044016111de565b6000546001600160a01b0316331461247d5760405162461bcd60e51b81526004016111999061510d565b6010546001600160a01b03163314806124a057506000546001600160a01b031633145b6124a957600080fd5b6010546001600160a01b031633036124d757601080546001600160a01b0319166001600160a01b0383161790555b6000546001600160a01b0316330361143e5750600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560118054919093169116179055565b6000546001600160a01b031633146125535760405162461bcd60e51b81526004016111999061510d565b306001600160a01b038216036125ab5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e732e00006044820152606401611199565b601e54604051634752355160e11b81526101009091046001600160a01b031690638ea46aa2906114bf90339085906004016153ee565b600080546001600160a01b0316331461260c5760405162461bcd60e51b81526004016111999061510d565b600c546126269030906001600160a01b0316600019613d95565b50600190565b6000546001600160a01b031633146126565760405162461bcd60e51b81526004016111999061510d565b601b54610100900460ff16156126a95760405162461bcd60e51b815260206004820152601860248201527754726164696e6720616c726561647920656e61626c65642160401b6044820152606401611199565b601b5462010000900460ff166126fc5760405162461bcd60e51b81526020600482015260186024820152772634b8bab4b234ba3c9036bab9ba1031329030b23232b21760411b6044820152606401611199565b601b54630100000090046001600160a01b031661272f57601b80546301000000600160b81b031916306301000000021790555b601b54600d54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff431660248201526001600160401b03421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b1580156127a157600080fd5b505af19250505080156127b2575060015b50601460009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561280357600080fd5b505af1925050508015612814575060015b50601e54600d5460405163189acdbd60e31b81526001600160a01b0361010090930483169263c4d66de89261284e92911690600401614a7a565b600060405180830381600087803b15801561286857600080fd5b505af115801561287c573d6000803e3d6000fd5b5050601e546040516340519a5360e01b815262f1428060048201526101009091046001600160a01b031692506340519a539150602401600060405180830381600087803b1580156128cc57600080fd5b505af11580156128e0573d6000803e3d6000fd5b5050601e54601180546001600160a01b0319166001600160a01b0361010093849004811691909117909155601b805461ff00191690921790915542601c55600d546127109350612931925016612198565b61293c90600a615248565b6129469190615276565b601955600d5461271090612962906001600160a01b0316612198565b61296d906019615248565b6129779190615276565b601a55565b601e54604051631277dca360e21b81526101009091046001600160a01b0316906349df728c90611410903390600401614a7a565b6000546001600160a01b031633146129da5760405162461bcd60e51b81526004016111999061510d565b601b54610100900460ff16156129ef57600080fd5b6001600160a01b0382163014801590612a1157506001600160a01b0383163014155b8015612a2f5750826001600160a01b0316826001600160a01b031614155b612a3857600080fd5b601b80546001600160a01b039485166301000000026301000000600160b81b0319909116179055601480549284166001600160a01b031990931692909217909155601e80549190921661010002610100600160a81b0319909116179055565b601454604051632e6f0efd60e01b81526001600160a01b0390911690632e6f0efd90611410903390600401614a7a565b612ad36012600a615267565b612add9082615248565b601e5460405163626073e560e11b815291925061010090046001600160a01b03169063c4c0e7ca906114bf90339085906004016153d5565b6000546001600160a01b03163314612b3f5760405162461bcd60e51b81526004016111999061510d565b601e5460405163286c4b6d60e21b8152600481018390526101009091046001600160a01b03169063a1b12db4906024016114bf565b6014546040516306e64def60e41b81526001600160a01b0390911690636e64def0906114bf90339085906004016153ee565b6000612bb3338484613765565b9392505050565b60145460405163f6ed201760e01b81526000916001600160a01b03169063f6ed201790611f17908590600401614a7a565b601e5460405163c97f1e7160e01b81526101009091046001600160a01b03169063c97f1e71906114bf90339085906004016153d5565b601e5460405163b0cdcf0560e01b815260009161010090046001600160a01b03169063b0cdcf0590611f17908590600401614a7a565b601454600c54604080516339d94ae160e11b815290516001600160a01b0393841693639f2c7e659333939116916373b295c2916004808201926020929091908290030181865afa158015612caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd39190615554565b6040518363ffffffff1660e01b81526004016114109291906153ee565b601454604051639f2c7e6560e01b81526001600160a01b0390911690639f2c7e65906114bf90339085906004016153ee565b6000546001600160a01b03163314612d4c5760405162461bcd60e51b81526004016111999061510d565b601b546040516363513b6160e11b815263010000009091046001600160a01b03169063c6a276c2906114bf908490600401614a7a565b60145460405163c7c71bbd60e01b81526000916001600160a01b03169063c7c71bbd90612db3908590600401614a7a565b602060405180830381865afa158015612dd0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b9190615554565b6014546040805163cc77828d60e01b815290516060926001600160a01b03169163cc77828d9160048083019260009291908290030181865afa158015612e3e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114609190810190615571565b601e5460405163cf0d2b4f60e01b815260009161010090046001600160a01b03169063cf0d2b4f90611f17908590600401614a7a565b6000546001600160a01b03163314612ec65760405162461bcd60e51b81526004016111999061510d565b620f42408110612ed557600080fd5b601555565b6000546001600160a01b03163314612f045760405162461bcd60e51b81526004016111999061510d565b60145460405163069cb30b60e51b81526001600160a01b039091169063d3966160906111de90859085906004016153ee565b6000546001600160a01b03163314612f605760405162461bcd60e51b81526004016111999061510d565b62015180811115612f7057600080fd5b601d55565b80600003612f865750601554612f95565b601554811015612f9557600080fd5b60145460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b158015612fdb57600080fd5b505af192505050801561217957505b50565b6000546001600160a01b031633146130175760405162461bcd60e51b81526004016111999061510d565b6016805461ff0019166101009315159390930292909217909155601b805460ff1916911515919091179055565b6000546001600160a01b0316331461306e5760405162461bcd60e51b81526004016111999061510d565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d79190615554565b6001600160a01b031663e6a4390530846001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015613124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131489190615554565b6040518363ffffffff1660e01b81526004016131659291906153ee565b602060405180830381865afa158015613182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a69190615554565b90506001600160a01b03811661330e57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132189190615554565b6001600160a01b031663c9c6539630846001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015613265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132899190615554565b6040518363ffffffff1660e01b81526004016132a69291906153ee565b6020604051808303816000875af11580156132c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e99190615554565b600d80546001600160a01b0319166001600160a01b039290921691909117905561332a565b600d80546001600160a01b0319166001600160a01b0383161790555b600c80546001600160a01b0319166001600160a01b0384169081179091556117c5903090600019613d95565b6000546001600160a01b031633146133805760405162461bcd60e51b81526004016111999061510d565b6109c48461ffff161115801561339c57506109c48361ffff1611155b80156133ae57506109c48261ffff1611155b80156133c05750610bb88161ffff1611155b6133c957600080fd5b600a805461ffff95861663ffffffff199091161762010000948616949094029390931767ffffffff000000001916600160201b9285169290920261ffff60301b191691909117600160301b9190931602919091179055565b6000546001600160a01b031633148061344457506010546001600160a01b031633145b61344d57600080fd5b6010546001600160a01b031633036134905760c88161ffff16111561347157600080fd5b600b805461ffff60401b1916600160401b61ffff8416021790556134ef565b6000546001600160a01b031633036134ef57600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff000000001916600160201b8683160261ffff60301b191617600160301b918516919091021790555b8082846134fc87896155a5565b61350691906155a5565b61351091906155a5565b61351a91906155a5565b600b805461ffff60501b1916600160501b61ffff93841602179055600a5460009161354e91620100008104821691166155a5565b600b5461ffff9182169250600160501b90041681101561120c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401611199565b601454604051633c6202c960e21b8152600091829182916001600160a01b03169063f1880b24906135f5908790600401614a7a565b606060405180830381865afa158015613612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363691906155cb565b9250925092509193909250565b60145460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa1580156118b7573d6000803e3d6000fd5b6000546001600160a01b031633146136b75760405162461bcd60e51b81526004016111999061510d565b601e5460405163faad381f60e01b8152600481018390526101009091046001600160a01b03169063faad381f906024016114bf565b601b5460405163fe575a8760e01b8152600091630100000090046001600160a01b03169063fe575a8790613724908590600401614a7a565b602060405180830381865afa158015613741573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b919061560d565b60006001600160a01b0384166137cb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611199565b6001600160a01b03831661382d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611199565b6000821161388f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401611199565b6001600160a01b0384166000908152600260205260408120548190819060ff16156138bd57600192506138eb565b6001600160a01b03861660009081526002602052604090205460ff16156138e757600191506138eb565b5060015b6138f58787613eb9565b15613abd57601b54610100900460ff1661394c5760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b6044820152606401611199565b82806139555750815b15613a04576001600160a01b03871660009081526006602052604090205460ff1615801561399c57506001600160a01b03861660009081526006602052604090205460ff16155b15613a0457601254851115613a045760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401611199565b600c546001600160a01b03878116911614801590613a20575081155b15613abd576001600160a01b03861660009081526006602052604090205460ff16613abd5760135485613a5288612198565b613a5c9190615408565b1115613abd5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401611199565b6001600160a01b03871660009081526005602052604090205460019060ff1680613aff57506001600160a01b03871660009081526005602052604090205460ff165b15613b08575060005b8215613b785760165460ff16158015613b285750601654610100900460ff165b15613b785742601754601854613b3e9190615408565b1015613b78576000613b4f30612198565b90506019548110613b7657601a548110613b685750601a545b613b7181613f8a565b426018555b505b613b8788888884888888613b93565b98975050505050505050565b601b5460009062010000900460ff16613c2957613bb088886144f9565b601b5462010000900460ff16158015613bce5750613bce8888613eb9565b15613c295760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401611199565b613c338888613eb9565b15613cce57601b5460405163ecd07a5360e01b81526001600160a01b038a8116600483015289811660248301526044820189905260009263010000009004169063ecd07a53906064016020604051808303816000875af1925050508015613cb7575060408051601f3d908101601f19168201909252613cb49181019061560d565b60015b613cc057600080fd5b905080613ccc57600080fd5b505b6001600160a01b03881660009081526001602052604081208054889290613cf6908490615298565b909155508690508515613d1357613d108988878787614650565b90505b6001600160a01b03881660009081526001602052604081208054839290613d3b908490615408565b90915550613d4b905089896147e0565b876001600160a01b0316896001600160a01b03166000805160206156ed83398151915283604051613d7e91815260200190565b60405180910390a350600198975050505050505050565b6001600160a01b038316613df75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611199565b6001600160a01b038216613e585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611199565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b03848116911614801590613ee657506000546001600160a01b03838116911614155b8015613efd57506000546001600160a01b03163214155b8015613f2257506001600160a01b03821660009081526008602052604090205460ff16155b8015613f4757506001600160a01b03831660009081526008602052604090205460ff16155b8015613f5e57506001600160a01b03821661dead14155b8015613f7257506001600160a01b03821615155b8015612bb3575050506001600160a01b031630141590565b6016805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a0820181905260000361400357506144ec565b306000908152600460209081526040808320600c546001600160a01b031684529091529020546000191461405c57306000908152600460209081526040808320600c546001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836020015161ffff168561407d9190615248565b6140879190615276565b6140919190615276565b9050600061409f8285615298565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106140d9576140d96152af565b6001600160a01b03928316602091820292909201810191909152600c54604080516339d94ae160e11b8152905191909316926373b295c29260048083019391928290030181865afa158015614132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141569190615554565b81600181518110614169576141696152af565b6001600160a01b039283166020918202929092010152600c54604051633b158ab160e11b815291169063762b1562906141af90859060009086903090429060040161562a565b600060405180830381600087803b1580156141c957600080fd5b505af11580156141dd573d6000803e3d6000fd5b50479250600091508490506141f28684615248565b6141fc9190615276565b905084156142d657600c54601154604051637c8d9fb960e11b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f91b3f7290839060c40160606040518083038185885af1158015614274573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614299919061569b565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6142e08183615298565b915085602001518660a0018181516142f891906156c9565b61ffff90811690915260a08801518851600093509082169161431b911685615248565b6143259190615276565b905060008760a0015161ffff16886060015161ffff16856143469190615248565b6143509190615276565b905060008860a0015161ffff16896080015161ffff16866143719190615248565b61437b9190615276565b905060008161438a8486615408565b6143949190615408565b61439e9087615298565b9050601460009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156143f057600080fd5b505af193505050508015614402575060015b5060608a015161ffff161561444d57600f546040516001600160a01b039091169084156108fc029085906000818181858888f1935050505015801561444b573d6000803e3d6000fd5b505b60808a015161ffff1615614497576010546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015614495573d6000803e3d6000fd5b505b60408a015161ffff16156144e157600e546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156144df573d6000803e3d6000fd5b505b505050505050505050505b506016805460ff19169055565b601b5462010000900460ff161561455e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401611199565b6145688282613eb9565b1580156145825750600d546001600160a01b038281169116145b15612179576001600160a01b038083166000908152600860205260409020805460ff19166001179055601b805462ff0000191662010000179081905563010000009004166145e657601b80546301000000600160b81b031916306301000000021790555b6014546001600160a01b031661460957601480546001600160a01b031916301790555b6016805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b60008084156146665750600a5461ffff16614747565b831561473757601b54604051630f3a325f60e01b815263010000009091046001600160a01b031690630f3a325f906146a2908a90600401614a7a565b602060405180830381865afa1580156146bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146e3919061560d565b80156146fd575042601d54601c546146fb9190615408565b115b801561470b5750601e5460ff165b156147245750600a54600160301b900461ffff16614747565b50600a5462010000900461ffff16614747565b50600a54600160201b900461ffff165b8060000361475857859150506147d7565b60006127106147678389615248565b6147719190615276565b30600090815260016020526040812080549293508392909190614795908490615408565b909155505060405181815230906001600160a01b038a16906000805160206156ed8339815191529060200160405180910390a36147d28188615298565b925050505b95945050505050565b6001600160a01b03821660009081526007602052604090205460ff166148f357601454601e546040516319d96e1960e31b81526001600160a01b039283169263df047e9e9286926101009091049091169063cecb70c890614845908490600401614a7a565b602060405180830381865afa158015614862573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614886919061535f565b6001600160a01b0386166000908152600160205260409020546148a99190615408565b6040518363ffffffff1660e01b81526004016148c69291906153d5565b600060405180830381600087803b1580156148e057600080fd5b505af19250505080156148f1575060015b505b6001600160a01b03811660009081526007602052604090205460ff16614a0657601454601e546040516319d96e1960e31b81526001600160a01b039283169263df047e9e9285926101009091049091169063cecb70c890614958908490600401614a7a565b602060405180830381865afa158015614975573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614999919061535f565b6001600160a01b0385166000908152600160205260409020546149bc9190615408565b6040518363ffffffff1660e01b81526004016149d99291906153d5565b600060405180830381600087803b1580156149f357600080fd5b505af1925050508015614a04575060015b505b601b5460ff16156121795760145460155460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb91614a469160040190815260200190565b600060405180830381600087803b158015614a6057600080fd5b505af1925050508015614a71575060015b15612179575050565b6001600160a01b0391909116815260200190565b8015158114612fea57600080fd5b60008060408385031215614aaf57600080fd5b8235614aba81614a8e565b91506020830135614aca81614a8e565b809150509250929050565b60005b83811015614af0578181015183820152602001614ad8565b8381111561143e5750506000910152565b60008151808452614b19816020860160208601614ad5565b601f01601f19169290920160200192915050565b602081526000612bb36020830184614b01565b6001600160a01b0381168114612fea57600080fd5b60008060408385031215614b6857600080fd5b8235614b7381614b40565b946020939093013593505050565b600080600060608486031215614b9657600080fd5b505081359360208301359350604090920135919050565b600060208284031215614bbf57600080fd5b8135612bb381614b40565b600060208284031215614bdc57600080fd5b8135612bb381614a8e565b600080600060608486031215614bfc57600080fd5b8335614c0781614b40565b92506020840135614c1781614b40565b929592945050506040919091013590565b60008060408385031215614c3b57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614c8857614c88614c4a565b604052919050565b60006001600160401b03821115614ca957614ca9614c4a565b5060051b60200190565b600082601f830112614cc457600080fd5b81356020614cd9614cd483614c90565b614c60565b82815260059290921b84018101918181019086841115614cf857600080fd5b8286015b84811015614d135780358352918301918301614cfc565b509695505050505050565b60008060408385031215614d3157600080fd5b82356001600160401b0380821115614d4857600080fd5b818501915085601f830112614d5c57600080fd5b81356020614d6c614cd483614c90565b82815260059290921b84018101918181019089841115614d8b57600080fd5b948201945b83861015614db2578535614da381614b40565b82529482019490820190614d90565b96505086013592505080821115614dc857600080fd5b50614dd585828601614cb3565b9150509250929050565b60008083601f840112614df157600080fd5b5081356001600160401b03811115614e0857600080fd5b6020830191508360208260051b8501011115614e2357600080fd5b9250929050565b60008060008060408587031215614e4057600080fd5b84356001600160401b0380821115614e5757600080fd5b614e6388838901614ddf565b90965094506020870135915080821115614e7c57600080fd5b50614e8987828801614ddf565b95989497509550505050565b600080600080600060a08688031215614ead57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215614ee357600080fd5b8235614aba81614b40565b600060208284031215614f0057600080fd5b5035919050565b60008060408385031215614f1a57600080fd5b8235614f2581614b40565b91506020830135614aca81614b40565b60a081526000614f4860a0830188614b01565b8281036020840152614f5a8188614b01565b90508281036040840152614f6e8187614b01565b90508281036060840152614f828186614b01565b90508281036080840152613b878185614b01565b60008060008060808587031215614fac57600080fd5b8435614fb781614b40565b93506020850135614fc781614b40565b92506040850135614fd781614b40565b91506060850135614fe781614b40565b939692955090935050565b60008060006060848603121561500757600080fd5b833561501281614b40565b9250602084013561502281614b40565b9150604084013561503281614b40565b809150509250925092565b803561ffff8116811461504f57600080fd5b919050565b6000806000806080858703121561506a57600080fd5b6150738561503d565b93506150816020860161503d565b925061508f6040860161503d565b915061509d6060860161503d565b905092959194509250565b600080600080600060a086880312156150c057600080fd5b6150c98661503d565b94506150d76020870161503d565b93506150e56040870161503d565b92506150f36060870161503d565b91506151016080870161503d565b90509295509295909350565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561519357816000190482111561517957615179615142565b8085161561518657918102915b93841c939080029061515d565b509250929050565b6000826151aa5750600161127b565b816151b75750600061127b565b81600181146151cd57600281146151d7576151f3565b600191505061127b565b60ff8411156151e8576151e8615142565b50506001821b61127b565b5060208310610133831016604e8410600b8410161715615216575081810a61127b565b6152208383615158565b806000190482111561523457615234615142565b029392505050565b6000612bb3838361519b565b600081600019048311821515161561526257615262615142565b500290565b6000612bb360ff84168361519b565b60008261529357634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156152aa576152aa615142565b500390565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81036152db576152db615142565b60010192915050565b8183526000602080850194508260005b8581101561532257813561530781614b40565b6001600160a01b0316875295820195908201906001016152f4565b509495945050505050565b6040815260006153416040830186886152e4565b82810360208401526153548185876152e4565b979650505050505050565b60006020828403121561537157600080fd5b5051919050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6000821982111561541b5761541b615142565b500190565b600082601f83011261543157600080fd5b81516001600160401b0381111561544a5761544a614c4a565b61545d601f8201601f1916602001614c60565b81815284602083860101111561547257600080fd5b6115b9826020830160208701614ad5565b600080600080600060a0868803121561549b57600080fd5b85516001600160401b03808211156154b257600080fd5b6154be89838a01615420565b965060208801519150808211156154d457600080fd5b6154e089838a01615420565b955060408801519150808211156154f657600080fd5b61550289838a01615420565b9450606088015191508082111561551857600080fd5b61552489838a01615420565b9350608088015191508082111561553a57600080fd5b5061554788828901615420565b9150509295509295909350565b60006020828403121561556657600080fd5b8151612bb381614b40565b60006020828403121561558357600080fd5b81516001600160401b0381111561559957600080fd5b6115b984828501615420565b600061ffff8083168185168083038211156155c2576155c2615142565b01949350505050565b6000806000606084860312156155e057600080fd5b83516155eb81614a8e565b60208501519093506155fc81614b40565b604085015190925061503281614b40565b60006020828403121561561f57600080fd5b8151612bb381614a8e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561567a5784516001600160a01b031683529383019391830191600101615655565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156156b057600080fd5b8351925060208401519150604084015190509250925092565b600061ffff838116908316818110156156e4576156e4615142565b03939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ef0445cd3382f163eb5430f2e5ab71ad8b85e2dc9be718d2faef3130b5a1ce4f64736f6c634300080d0033

Deployed Bytecode Sourcemap

6361:30795:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8214:73;;;;;;;;;;;;8245:42;8214:73;;;;;;;;;:::i;:::-;;;;;;;;9181:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;9181:28:0;222:177:1;16252:151:0;;;;;;;;;;-1:-1:-1;16252:151:0;;;;;:::i;:::-;;:::i;:::-;;7550:142;;;;;;;;;;-1:-1:-1;7550:142:0;;;;;;;;;;;;;;;-1:-1:-1;;;7550:142:0;;;;;-1:-1:-1;;;7550:142:0;;;;;;;;;1141:6:1;1174:15;;;1156:34;;1226:15;;;1221:2;1206:18;;1199:43;1278:15;;;1258:18;;;1251:43;;;;1330:15;;;1325:2;1310:18;;1303:43;1118:3;1103:19;7550:142:0;908:444:1;13823:80:0;;;;;;;;;;-1:-1:-1;13895:5:0;;;;;;;;;;;;-1:-1:-1;;;13895:5:0;;;;13823:80;;;;;;;:::i;8151:26::-;;;;;;;;;;-1:-1:-1;8151:26:0;;;;-1:-1:-1;;;;;8151:26:0;;;14244:216;;;;;;;;;;-1:-1:-1;14244:216:0;;;;;:::i;:::-;;:::i;:::-;;;2954:14:1;;2947:22;2929:41;;2917:2;2902:18;14244:216:0;2789:187:1;19522:277:0;;;;;;;;;;-1:-1:-1;19522:277:0;;;;;:::i;:::-;;:::i;34085:347::-;;;;;;;;;;;;;:::i;22750:112::-;;;;;;;;;;;;;:::i;33422:118::-;;;;;;;;;;-1:-1:-1;33422:118:0;;;;;:::i;:::-;;:::i;13526:115::-;;;;;;;;;;;;;:::i;9533:50::-;;;;;;;;;;;;9575:8;9533:50;;23005:107;;;;;;;;;;-1:-1:-1;23005:107:0;;;;;:::i;:::-;;:::i;15158:306::-;;;;;;;;;;-1:-1:-1;15158:306:0;;;;;:::i;:::-;;:::i;22361:267::-;;;;;;;;;;-1:-1:-1;22361:267:0;;;;;:::i;:::-;;:::i;31474:416::-;;;;;;;;;;-1:-1:-1;31474:416:0;;;;;:::i;:::-;;:::i;7898:42::-;;;;;;;;;;;;7936:4;7898:42;;33098:162;;;;;;;;;;-1:-1:-1;33098:162:0;;;;;:::i;:::-;;:::i;9216:25::-;;;;;;;;;;;;;;;;35275:124;;;;;;;;;;;;;:::i;13647:80::-;;;;;;;;;;-1:-1:-1;13647:80:0;;7154:2;8293:36:1;;8281:2;8266:18;13647:80:0;8151:184:1;16010:108:0;;;;;;;;;;-1:-1:-1;16010:108:0;;;;;:::i;:::-;;:::i;19176:338::-;;;;;;;;;;-1:-1:-1;19176:338:0;;;;;:::i;:::-;;:::i;21437:140::-;;;;;;;;;;-1:-1:-1;21437:140:0;;;;;:::i;:::-;;:::i;22084:269::-;;;;;;;;;;-1:-1:-1;22084:269:0;;;;;:::i;:::-;;:::i;8184:21::-;;;;;;;;;;-1:-1:-1;8184:21:0;;;;-1:-1:-1;;;;;8184:21:0;;;9291:34;;;;;;;;;;-1:-1:-1;9291:34:0;;;;;;;;;;;12194:689;;;;;;;;;;-1:-1:-1;12194:689:0;;;;;:::i;:::-;;:::i;21023:125::-;;;;;;;;;;-1:-1:-1;21023:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;21112:28:0;21088:4;21112:28;;;:19;:28;;;;;;;;;21023:125;9332:36;;;;;;;;;;-1:-1:-1;9332:36:0;;;;;;;;;;;36915:143;;;;;;;;;;-1:-1:-1;36915:143:0;;;;;:::i;:::-;;:::i;21942:134::-;;;;;;;;;;-1:-1:-1;21942:134:0;;;;;:::i;:::-;;:::i;21299:130::-;;;;;;;;;;-1:-1:-1;21299:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;21391:30:0;21367:4;21391:30;;;:21;:30;;;;;;;;;21299:130;36018:285;;;;;;;;;;-1:-1:-1;36018:285:0;;;;;:::i;:::-;;:::i;33268:146::-;;;;;;;;;;-1:-1:-1;33268:146:0;;;;;:::i;:::-;;:::i;23120:301::-;;;;;;;;;;-1:-1:-1;23120:301:0;;;;;:::i;:::-;;:::i;32239:154::-;;;;;;;;;;-1:-1:-1;32239:154:0;;;;;:::i;:::-;;:::i;32024:207::-;;;;;;;;;;-1:-1:-1;32024:207:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;31342:124::-;;;;;;;;;;;;;:::i;21585:349::-;;;;;;;;;;-1:-1:-1;21585:349:0;;;;;:::i;:::-;;:::i;22636:106::-;;;;;;;;;;;;;:::i;13994:103::-;;;;;;;;;;-1:-1:-1;13994:103:0;;;;;:::i;:::-;;:::i;12891:245::-;;;;;;;;;;;;;:::i;32559:122::-;;;;;;;;;;;;;:::i;35675:103::-;;;;;;;;;;;;;:::i;20499:516::-;;;;;;;;;;-1:-1:-1;20499:516:0;;;;;:::i;:::-;;:::i;18426:541::-;;;;;;;;;;-1:-1:-1;18426:541:0;;;;;:::i;:::-;;:::i;34827:208::-;;;;;;;;;;-1:-1:-1;34827:208:0;;;;;:::i;:::-;;:::i;13909:79::-;;;;;;;;;;-1:-1:-1;13961:7:0;13979:6;-1:-1:-1;;;;;13979:6:0;13909:79;;14817:173;;;;;;;;;;;;;:::i;16411:759::-;;;;;;;;;;;;;:::i;37066:87::-;;;;;;;;;;;;;:::i;15605:397::-;;;;;;;;;;-1:-1:-1;15605:397:0;;;;;:::i;:::-;;:::i;33548:100::-;;;;;;;;;;;;;:::i;13733:84::-;;;;;;;;;;-1:-1:-1;13807:7:0;;;;;;;;;;;;-1:-1:-1;;;13807:7:0;;;;13733:84;;36311:155;;;;;;;;;;-1:-1:-1;36311:155:0;;;;;:::i;:::-;;:::i;35532:135::-;;;;;;;;;;-1:-1:-1;35532:135:0;;;;;:::i;:::-;;:::i;33656:143::-;;;;;;;;;;-1:-1:-1;33656:143:0;;;;;:::i;:::-;;:::i;14998:152::-;;;;;;;;;;-1:-1:-1;14998:152:0;;;;;:::i;:::-;;:::i;32401:150::-;;;;;;;;;;-1:-1:-1;32401:150:0;;;;;:::i;:::-;;:::i;36782:125::-;;;;;;;;;;-1:-1:-1;36782:125:0;;;;;:::i;:::-;;:::i;36474:151::-;;;;;;;;;;-1:-1:-1;36474:151:0;;;;;:::i;:::-;;:::i;9469:35::-;;;;;;;;;;-1:-1:-1;9469:35:0;;;;;;;;9427;;;;;;;;;;;;;;;;33941:136;;;;;;;;;;;;;:::i;33807:126::-;;;;;;;;;;-1:-1:-1;33807:126:0;;;;;:::i;:::-;;:::i;16126:118::-;;;;;;;;;;-1:-1:-1;16126:118:0;;;;;:::i;:::-;;:::i;21156:135::-;;;;;;;;;;-1:-1:-1;21156:135:0;;;;;:::i;:::-;-1:-1:-1;;;;;21250:33:0;21226:4;21250:33;;;:24;:33;;;;;;;;;21156:135;34440:147;;;;;;;;;;-1:-1:-1;34440:147:0;;;;;:::i;:::-;;:::i;32689:120::-;;;;;;;;;;;;;:::i;36633:141::-;;;;;;;;;;-1:-1:-1;36633:141:0;;;;;:::i;:::-;;:::i;7701:188::-;;;;;;;;;;-1:-1:-1;7701:188:0;;;;;;;;;;;;;;;-1:-1:-1;;;7701:188:0;;;;;-1:-1:-1;;;7701:188:0;;;;;-1:-1:-1;;;7701:188:0;;;;;-1:-1:-1;;;7701:188:0;;;;;;;;;12163:6:1;12196:15;;;12178:34;;12248:15;;;12243:2;12228:18;;12221:43;12300:15;;;12280:18;;;12273:43;;;;12352:15;;;12347:2;12332:18;;12325:43;12405:15;;12399:3;12384:19;;12377:44;12458:15;;;12452:3;12437:19;;12430:44;12140:3;12125:19;7701:188:0;11878:602:1;19807:134:0;;;;;;;;;;-1:-1:-1;19807:134:0;;;;;:::i;:::-;;:::i;32960:130::-;;;;;;;;;;-1:-1:-1;32960:130:0;;;;;:::i;:::-;;:::i;22870:127::-;;;;;;;;;;-1:-1:-1;22870:127:0;;;;;:::i;:::-;;:::i;27422:242::-;;;;;;;;;;-1:-1:-1;27422:242:0;;;;;:::i;:::-;;:::i;14103:133::-;;;;;;;;;;-1:-1:-1;14103:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;14205:19:0;;;14187:7;14205:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14103:133;18975:193;;;;;;;;;;-1:-1:-1;18975:193:0;;;;;:::i;:::-;;:::i;9107:36::-;;;;;;;;;;;;;;;;19949:542;;;;;;;;;;-1:-1:-1;19949:542:0;;;;;:::i;:::-;;:::i;17178:459::-;;;;;;;;;;-1:-1:-1;17178:459:0;;;;;:::i;:::-;;:::i;9248:34::-;;;;;;;;;;-1:-1:-1;9248:34:0;;;;;;;;17645:773;;;;;;;;;;-1:-1:-1;17645:773:0;;;;;:::i;:::-;;:::i;32817:135::-;;;;;;;;;;-1:-1:-1;32817:135:0;;;;;:::i;:::-;;:::i;:::-;;;;13755:14:1;;13748:22;13730:41;;-1:-1:-1;;;;;13845:15:1;;;13840:2;13825:18;;13818:43;13897:15;;13877:18;;;13870:43;13718:2;13703:18;32817:135:0;13534:385:1;8051:43:0;;;;;;;;;;;;8090:4;8051:43;;31898:118;;;;;;;;;;;;;:::i;8546:305::-;;;;;;;;;;-1:-1:-1;8546:305:0;;;;;;;;;;-1:-1:-1;;;;;8546:305:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14259:15:1;;;14241:34;;14311:15;;;14306:2;14291:18;;14284:43;14363:15;;;14343:18;;;14336:43;;;;14415:15;;;14410:2;14395:18;;14388:43;14190:3;14175:19;8546:305:0;13924:513:1;35407:117:0;;;;;;;;;;-1:-1:-1;35407:117:0;;;;;:::i;:::-;;:::i;9061:39::-;;;;;;;;;;-1:-1:-1;9061:39:0;;;;;;;;;;;15472:125;;;;;;;;;;-1:-1:-1;15472:125:0;;;;;:::i;:::-;;:::i;16252:151::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;;;;;;;;;16347:9:::1;::::0;:48:::1;::::0;-1:-1:-1;;;16347:48:0;;14990:14:1;;14983:22;16347:48:0::1;::::0;::::1;14965:41:1::0;15049:14;;15042:22;15022:18;;;15015:50;16347:9:0;;;::::1;-1:-1:-1::0;;;;;16347:9:0::1;::::0;:24:::1;::::0;14938:18:1;;16347:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16252:151:::0;;:::o;14244:216::-;14348:10;14319:4;14336:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14336:32:0;;;;;;;;;;:41;;;14393:37;14319:4;;14336:32;;14393:37;;;;14371:6;368:25:1;;356:2;341:18;;222:177;14393:37:0;;;;;;;;-1:-1:-1;14448:4:0;14244:216;;;;;:::o;19522:277::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;19694:27:::1;19698:23:::0;19694:2:::1;:27;:::i;:::-;19677:44;::::0;:14;:44:::1;:::i;:::-;19732:9;::::0;:59:::1;::::0;-1:-1:-1;;;19732:59:0;;::::1;::::0;::::1;16929:25:1::0;;;16970:18;;;16963:34;;;19660:61:0;;-1:-1:-1;;;;;;19732:9:0::1;::::0;:31:::1;::::0;16902:18:1;;19732:59:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19522:277:::0;;;:::o;34085:347::-;34158:10;34138:31;;;;:19;:31;;;;;;;;:40;;;;34134:291;;34215:10;34195:31;;;;:19;:31;;;;;;;:38;;-1:-1:-1;;34195:38:0;34229:4;34195:38;;;34248:9;;:39;;-1:-1:-1;;;34248:39:0;;-1:-1:-1;;;;;34248:9:0;;;;;:27;;:39;;34215:10;34248:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34322:10:0;34336:5;34302:31;;;:19;:31;;;;;:39;;-1:-1:-1;;34302:39:0;;;-1:-1:-1;34134:291:0;;-1:-1:-1;34134:291:0;;34374:9;;:39;;-1:-1:-1;;;34374:39:0;;-1:-1:-1;;;;;34374:9:0;;;;:27;;:39;;34402:10;;34374:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34134:291;34085:347::o;22750:112::-;22795:7;22840:13;7154:2;22840;:13;:::i;:::-;22822:14;;:32;;;;:::i;:::-;22815:39;;22750:112;:::o;33422:118::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;33496:9:::1;::::0;:36:::1;::::0;-1:-1:-1;;;33496:36:0;;-1:-1:-1;;;;;33496:9:0;;::::1;::::0;:29:::1;::::0;:36:::1;::::0;33526:5;;33496:36:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33422:118:::0;:::o;13526:115::-;13581:7;13596;;13607:1;13596:12;13592:31;;13612:8;;;13592:31;-1:-1:-1;13631:7:0;;;13526:115::o;23005:107::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;23078:16:::1;:26:::0;;-1:-1:-1;;23078:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23005:107::o;15158:306::-;-1:-1:-1;;;;;15279:19:0;;15258:4;15279:19;;;:11;:19;;;;;;;;15299:10;15279:31;;;;;;;;-1:-1:-1;;15279:52:0;15275:126;;-1:-1:-1;;;;;15348:19:0;;;;;;:11;:19;;;;;;;;15368:10;15348:31;;;;;;;:41;;15383:6;;15348:19;:41;;15383:6;;15348:41;:::i;:::-;;;;-1:-1:-1;;15275:126:0;15420:36;15430:6;15438:9;15449:6;15420:9;:36::i;:::-;15413:43;15158:306;-1:-1:-1;;;;15158:306:0:o;22361:267::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;22503:4:::1;22493:7;;:14;;;;:::i;:::-;22481:7;22470;22460;;:17;;;;:::i;:::-;22459:29;;;;:::i;:::-;:49;;22451:112;;;::::0;-1:-1:-1;;;22451:112:0;;17707:2:1;22451:112:0::1;::::0;::::1;17689:21:1::0;17746:2;17726:18;;;17719:30;17785:34;17765:18;;;17758:62;-1:-1:-1;;;17836:18:1;;;17829:48;17894:19;;22451:112:0::1;17505:414:1::0;22451:112:0::1;22613:7;22602;22592;;:17;;;;:::i;:::-;22591:29;;;;:::i;:::-;22574:14;:46:::0;-1:-1:-1;;22361:267:0:o;31474:416::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;31607:7:::1;:14;31588:8;:15;:33;31580:67;;;::::0;-1:-1:-1;;;31580:67:0;;18126:2:1;31580:67:0::1;::::0;::::1;18108:21:1::0;18165:2;18145:18;;;18138:30;-1:-1:-1;;;18184:18:1;;;18177:51;18245:18;;31580:67:0::1;17924:345:1::0;31580:67:0::1;31663:7;31658:225;31680:8;:15;31676:1;:19;;;31658:225;;;31750:7;31758:1;31750:10;;;;;;;;;;:::i;:::-;;;;;;;31725:21;31735:10;31725:9;:21::i;:::-;:35;;31717:44;;;::::0;::::1;;31776:95;31794:10;31806:8;31815:1;31806:11;;;;;;;;;;:::i;:::-;;;;;;;7154:2;31830;:13;;;;:::i;:::-;31819:7;31827:1;31819:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;31845:5;31852::::0;31859::::1;31866:4;31776:17;:95::i;:::-;-1:-1:-1::0;31697:3:0;::::1;::::0;::::1;:::i;:::-;;;;31658:225;;;;31474:416:::0;;:::o;33098:162::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;33208:9:::1;::::0;:44:::1;::::0;-1:-1:-1;;;33208:44:0;;-1:-1:-1;;;;;33208:9:0;;::::1;::::0;:27:::1;::::0;:44:::1;::::0;33236:6;;;;33244:7;;;;33208:44:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33098:162:::0;;;;:::o;35275:124::-;35332:7;35359:6;;;;;;;;;-1:-1:-1;;;;;35359:6:0;-1:-1:-1;;;;;35359:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16010:108::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;16079:9:::1;::::0;:31:::1;::::0;-1:-1:-1;;;16079:31:0;;:9;;;::::1;-1:-1:-1::0;;;;;16079:9:0::1;::::0;:22:::1;::::0;:31:::1;::::0;16102:7;;16079:31:::1;;;:::i;19176:338::-:0;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;19390:16:::1;19370;19360:7;;:26;;;;:::i;:::-;19359:47;;;;:::i;:::-;19343:13;:63:::0;19431:7:::1;::::0;19458:13;;19431:23:::1;::::0;19441:13;;19431:23:::1;:::i;:::-;19430:41;;;;:::i;:::-;19417:10;:54:::0;19482:17:::1;:24:::0;-1:-1:-1;;;;19176:338:0:o;21437:140::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21529:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;21529:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21437:140::o;22084:269::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;22225:4:::1;22215:7;;:14;;;;:::i;:::-;22203:7;22192;22182;;:17;;;;:::i;:::-;22181:29;;;;:::i;:::-;:49;;22173:117;;;::::0;-1:-1:-1;;;22173:117:0;;20028:2:1;22173:117:0::1;::::0;::::1;20010:21:1::0;20067:2;20047:18;;;20040:30;20106:34;20086:18;;;20079:62;-1:-1:-1;;;20157:18:1;;;20150:53;20220:19;;22173:117:0::1;19826:419:1::0;22173:117:0::1;22338:7;22327;22317;;:17;;;;:::i;:::-;22316:29;;;;:::i;:::-;22301:12;:44:::0;-1:-1:-1;;22084:269:0:o;12194:689::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12273:22:0;::::1;12265:96;;;;-1:-1:-1::0;;;12265:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;12380:16:0;::::1;::::0;12372:90:::1;;;;-1:-1:-1::0;;;12372:90:0::1;;;;;;;:::i;:::-;12503:5;12493:6:::0;;-1:-1:-1;;;;;12493:6:0;;::::1;12473:27:::0;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;12473:35:0;;::::1;::::0;;;12544:6;;;::::1;12519:32:::0;;:24:::1;:32:::0;;;;;;:40;;;::::1;::::0;;12570:29;;::::1;::::0;;;;;;;;:36;;;::::1;12493:6:::0;12570:36;;::::1;::::0;;;12617:34;;;;;;:41;;;;::::1;::::0;::::1;::::0;;12690:6;;;;::::1;12682:15:::0;;;;;;:19;12679:95:::1;;12728:6;::::0;;-1:-1:-1;;;;;12728:6:0::1;12746:15:::0;;;12728:6;12746:15:::1;::::0;;;;;;12718:44:::1;::::0;12728:6;12736:8;;12718:9:::1;:44::i;:::-;;12679:95;12794:6;:17:::0;;-1:-1:-1;;;;;;12794:17:0::1;-1:-1:-1::0;;;;;12794:17:0;::::1;::::0;;::::1;::::0;;12827:38:::1;::::0;12794:17;;;;12827:38:::1;::::0;12794:6;12827:38:::1;12194:689:::0;:::o;36915:143::-;36992:6;;:58;;-1:-1:-1;;;36992:58:0;;:6;;;;-1:-1:-1;;;;;36992:6:0;;:31;;:58;;37024:10;;37036:13;;36992:58;;;:::i;21942:134::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22030:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;22030:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21942:134::o;36018:285::-;36114:13;7154:2;36114;:13;:::i;:::-;36104:23;;;;:::i;:::-;;;36171:6;36146:21;36156:10;36146:9;:21::i;:::-;:31;;36138:87;;;;-1:-1:-1;;;36138:87:0;;21161:2:1;36138:87:0;;;21143:21:1;21200:2;21180:18;;;21173:30;21239:34;21219:18;;;21212:62;-1:-1:-1;;;21290:18:1;;;21283:41;21341:19;;36138:87:0;20959:407:1;36138:87:0;36236:6;;:59;;-1:-1:-1;;;36236:59:0;;36261:10;36236:59;;;21573:51:1;21640:18;;;21633:34;;;21683:18;;;21676:34;;;36236:6:0;;;;-1:-1:-1;;;;;36236:6:0;;:24;;21546:18:1;;36236:59:0;21371:345:1;33268:146:0;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;33360:9:::1;::::0;:46:::1;::::0;-1:-1:-1;;;33360:46:0;;-1:-1:-1;;;;;33360:9:0;;::::1;::::0;:25:::1;::::0;:46:::1;::::0;33386:5;;33393:12;;33360:46:::1;;;:::i;23120:301::-:0;23250:6;;23203:4;;23250:6;;;-1:-1:-1;;;;;23250:6:0;23228:10;:29;23220:63;;;;-1:-1:-1;;;23220:63:0;;22232:2:1;23220:63:0;;;22214:21:1;22271:2;22251:18;;;22244:30;-1:-1:-1;;;22290:18:1;;;22283:51;22351:18;;23220:63:0;22030:345:1;23220:63:0;-1:-1:-1;;;;;23294:13:0;;;;;;:7;:13;;;;;:23;;23311:6;;23294:13;:23;;23311:6;;23294:23;:::i;:::-;;;;-1:-1:-1;;;;;;;23328:11:0;;;;;;:7;:11;;;;;:21;;23343:6;;23328:11;:21;;23343:6;;23328:21;:::i;:::-;;;;;;;;23380:2;-1:-1:-1;;;;;23365:26:0;23374:4;-1:-1:-1;;;;;23365:26:0;-1:-1:-1;;;;;;;;;;;23384:6:0;23365:26;;;;368:25:1;;356:2;341:18;;222:177;23365:26:0;;;;;;;;-1:-1:-1;23409:4:0;23120:301;;;;;:::o;32239:154::-;32340:9;;:45;;-1:-1:-1;;;32340:45:0;;32313:7;;-1:-1:-1;;;;;32340:9:0;;:32;;:45;;32373:11;;32340:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32024:207::-;32182:9;;:41;;-1:-1:-1;;;32182:41:0;;32089:13;;;;;;;;;;-1:-1:-1;;;;;32182:9:0;;:28;;:41;;32211:11;;32182:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32182:41:0;;;;;;;;;;;;:::i;:::-;32175:48;;;;-1:-1:-1;32175:48:0;;-1:-1:-1;32175:48:0;-1:-1:-1;32175:48:0;;-1:-1:-1;32024:207:0;-1:-1:-1;;32024:207:0:o;31342:124::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;31401:9:::1;;;;;;;;;-1:-1:-1::0;;;;;31401:9:0::1;-1:-1:-1::0;;;;;31401:14:0::1;;31423:21;31401:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;31397:62:::0;::::1;;31342:124::o:0;21585:349::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21680:23:0;::::1;21698:4;21680:23;::::0;::::1;::::0;:43:::1;;-1:-1:-1::0;21717:6:0::1;::::0;-1:-1:-1;;;;;21707:16:0;;::::1;21717:6:::0;::::1;21707:16;;21680:43;21672:52;;;::::0;::::1;;-1:-1:-1::0;;;;;21735:32:0;::::1;;::::0;;;:24:::1;:32;::::0;;;;:42;;-1:-1:-1;;21735:42:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;21788:139:::1;;21816:9;::::0;:26:::1;::::0;-1:-1:-1;;;21816:26:0;;-1:-1:-1;;;;;21816:9:0;;::::1;::::0;:15:::1;::::0;:26:::1;::::0;21832:6;;21816:9:::1;::::0;:26:::1;;;:::i;21788:139::-;21875:9;::::0;-1:-1:-1;;;;;21899:15:0;;::::1;21875:9;21899:15:::0;;;21875:9;21899:15:::1;::::0;;;;;;;21875:40;;-1:-1:-1;;;21875:40:0;;:9;;;::::1;::::0;:15:::1;::::0;:40:::1;::::0;21891:6;;21875:40:::1;;;:::i;21788:139::-;21585:349:::0;;:::o;22636:106::-;22677:7;22720:13;7154:2;22720;:13;:::i;:::-;22704:12;;:30;;;;:::i;13994:103::-;-1:-1:-1;;;;;14078:16:0;14060:7;14078:16;;;:7;:16;;;;;;;13994:103::o;12891:245::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;12986:5:::1;12976:6:::0;;-1:-1:-1;;;;;12976:6:0;;::::1;12956:27:::0;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;12956:35:0;;::::1;::::0;;;13027:6;;;;::::1;13002:32:::0;;:24:::1;:32:::0;;;;;;:40;;;;::::1;::::0;;;13053:19;;-1:-1:-1;;;;;;13053:19:0::1;::::0;;13088:40;12986:5;;13088:40:::1;::::0;12986:5;;13088:40:::1;12891:245::o:0;32559:122::-;32640:9;;:33;;;-1:-1:-1;;;32640:33:0;;;;32613:7;;-1:-1:-1;;;;;32640:9:0;;:31;;:33;;;;;;;;;;;;;;:9;:33;;;;;;;;;;;;;;35675:103;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;35734:6:::1;::::0;:36:::1;::::0;-1:-1:-1;;;35734:36:0;;:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;35734:6:0::1;::::0;:24:::1;::::0;:36:::1;::::0;35759:10:::1;::::0;35734:36:::1;;;:::i;20499:516::-:0;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;20580:16;::::1;;20591:5;20580:16:::0;20576:432:::1;;-1:-1:-1::0;;;;;20613:13:0;;::::1;20629:5;20613:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;20613:21:0::1;::::0;;20649:9:::1;::::0;:32;;-1:-1:-1;;;20649:32:0;;::::1;::::0;::::1;24651:51:1::0;;;;24718:18;;;24711:50;;;;20649:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;24624:18:1;;20649:32:0::1;24483:284:1::0;20576:432:0::1;20718:17;::::0;:22;20714:152:::1;;20807:6;20787:17;;20769:15;:35;;;;:::i;:::-;:44;20761:89;;;::::0;-1:-1:-1;;;20761:89:0;;24974:2:1;20761:89:0::1;::::0;::::1;24956:21:1::0;;;24993:18;;;24986:30;25052:34;25032:18;;;25025:62;25104:18;;20761:89:0::1;24772:356:1::0;20761:89:0::1;-1:-1:-1::0;;;;;20880:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;20880:20:0::1;20896:4;20880:20:::0;;::::1;::::0;;;20935:15:::1;20915:17;:35:::0;20965:9:::1;::::0;:31;;-1:-1:-1;;;20965:31:0;;::::1;::::0;::::1;24651:51:1::0;;;;24718:18;;;24711:50;20965:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;24624:18:1;;20965:31:0::1;24483:284:1::0;18426:541:0;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;18597:15;;-1:-1:-1;;;;;18597:15:0::1;18583:10;:29;::::0;:53:::1;;-1:-1:-1::0;18630:6:0::1;::::0;-1:-1:-1;;;;;18630:6:0::1;18616:10;:20;18583:53;18575:62;;;::::0;::::1;;18666:15:::0;;-1:-1:-1;;;;;18666:15:0::1;18652:10;:29:::0;18648:92:::1;;18698:15:::0;:30;;-1:-1:-1;;;;;;18698:30:0::1;-1:-1:-1::0;;;;;18698:30:0;::::1;;::::0;;18648:92:::1;18768:6;::::0;-1:-1:-1;;;;;18768:6:0::1;18754:10;:20:::0;18750:210:::1;;-1:-1:-1::0;18791:11:0::1;:42:::0;;-1:-1:-1;;;;;18791:42:0;;::::1;-1:-1:-1::0;;;;;;18791:42:0;;::::1;;::::0;;;18848:26;:52;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18915:21;:33;;;;;::::1;::::0;::::1;;::::0;;18426:541::o;34827:208::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;34929:4:::1;-1:-1:-1::0;;;;;34911:23:0;::::1;::::0;34903:66:::1;;;::::0;-1:-1:-1;;;34903:66:0;;25335:2:1;34903:66:0::1;::::0;::::1;25317:21:1::0;25374:2;25354:18;;;25347:30;25413:32;25393:18;;;25386:60;25463:18;;34903:66:0::1;25133:354:1::0;34903:66:0::1;34980:6;::::0;:47:::1;::::0;-1:-1:-1;;;34980:47:0;;:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;34980:6:0::1;::::0;:27:::1;::::0;:47:::1;::::0;35008:10:::1;::::0;35020:6;;34980:47:::1;;;:::i;14817:173::-:0;14881:4;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;14930:9:::1;::::0;14898:62:::1;::::0;14915:4:::1;::::0;-1:-1:-1;;;;;14930:9:0::1;-1:-1:-1::0;;14898:8:0::1;:62::i;:::-;-1:-1:-1::0;14978:4:0::1;14817:173:::0;:::o;16411:759::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;16473:14:::1;::::0;::::1;::::0;::::1;;;16472:15;16464:52;;;::::0;-1:-1:-1;;;16464:52:0;;25694:2:1;16464:52:0::1;::::0;::::1;25676:21:1::0;25733:2;25713:18;;;25706:30;-1:-1:-1;;;25752:18:1;;;25745:54;25816:18;;16464:52:0::1;25492:348:1::0;16464:52:0::1;16535:16;::::0;;;::::1;;;16527:53;;;::::0;-1:-1:-1;;;16527:53:0;;26047:2:1;16527:53:0::1;::::0;::::1;26029:21:1::0;26086:2;26066:18;;;26059:30;-1:-1:-1;;;26105:18:1;;;26098:54;26169:18;;16527:53:0::1;25845:348:1::0;16527:53:0::1;16602:9;::::0;;;::::1;-1:-1:-1::0;;;;;16602:9:0::1;16591:99;;16642:9;:36:::0;;-1:-1:-1;;;;;;16642:36:0::1;16672:4;16642:36:::0;::::1;;::::0;;16591:99:::1;16704:9;::::0;16724:6:::1;::::0;16704:85:::1;::::0;-1:-1:-1;;;16704:85:0;;-1:-1:-1;;;;;16724:6:0;;::::1;16704:85;::::0;::::1;26421:51:1::0;26520:10;16739:12:0::1;26508:23:1::0;26488:18;;;26481:51;-1:-1:-1;;;;;16761:15:0::1;26568:31:1::0;26548:18;;;26541:59;7154:2:0::1;26616:18:1::0;;;26609:45;16704:9:0;;;::::1;;::::0;:19:::1;::::0;26393::1;;16704:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;16700:101:::0;16815:9:::1;;;;;;;;;-1:-1:-1::0;;;;;16815:9:0::1;-1:-1:-1::0;;;;;16815:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;16811:38:::0;16859:6:::1;::::0;16877::::1;::::0;16859:25:::1;::::0;-1:-1:-1;;;16859:25:0;;-1:-1:-1;;;;;16859:6:0::1;::::0;;::::1;::::0;::::1;::::0;:17:::1;::::0;:25:::1;::::0;16877:6;::::1;::::0;16859:25:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16895:6:0::1;::::0;:30:::1;::::0;-1:-1:-1;;;16895:30:0;;9575:8:::1;16895:30;::::0;::::1;368:25:1::0;16895:6:0::1;::::0;;::::1;-1:-1:-1::0;;;;;16895:6:0::1;::::0;-1:-1:-1;16895:13:0::1;::::0;-1:-1:-1;341:18:1;;16895:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16968:6:0::1;::::0;16936:21;:39;;-1:-1:-1;;;;;;16936:39:0::1;-1:-1:-1::0;;;;;16968:6:0::1;::::0;;;::::1;::::0;::::1;16936:39:::0;;;::::1;::::0;;;16986:14:::1;:21:::0;;-1:-1:-1;;16986:21:0::1;::::0;;::::1;::::0;;;17032:15:::1;17018:11;:29:::0;-1:-1:-1;17085:6:0;17101:5:::1;::::0;-1:-1:-1;17075:17:0::1;::::0;-1:-1:-1;17085:6:0::1;17075:9;:17::i;:::-;:22;::::0;17095:2:::1;17075:22;:::i;:::-;17074:32;;;;:::i;:::-;17058:13;:48:::0;17141:6:::1;::::0;17157:5:::1;::::0;17131:17:::1;::::0;-1:-1:-1;;;;;17141:6:0::1;17131:9;:17::i;:::-;:22;::::0;17151:2:::1;17131:22;:::i;:::-;17130:32;;;;:::i;:::-;17117:10;:45:::0;16411:759::o;37066:87::-;37112:6;;:33;;-1:-1:-1;;;37112:33:0;;:6;;;;-1:-1:-1;;;;;37112:6:0;;:21;;:33;;37134:10;;37112:33;;;:::i;15605:397::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;15735:14:::1;::::0;::::1;::::0;::::1;;;15734:15;15726:24;;;::::0;::::1;;-1:-1:-1::0;;;;;15769:29:0;::::1;15793:4;15769:29;::::0;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;15802:29:0;::::1;15826:4;15802:29;;15769:62;:94;;;;;15851:12;-1:-1:-1::0;;;;;15835:28:0::1;:12;-1:-1:-1::0;;;;;15835:28:0::1;;;15769:94;15761:103;;;::::0;::::1;;15875:9;:35:::0;;-1:-1:-1;;;;;15875:35:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;15875:35:0;;::::1;;::::0;;15921:9:::1;:33:::0;;;;::::1;-1:-1:-1::0;;;;;;15921:33:0;;::::1;::::0;;;::::1;::::0;;;15965:6:::1;:29:::0;;;;;::::1;15875:35;15965:29;-1:-1:-1::0;;;;;;15965:29:0;;::::1;;::::0;;15605:397::o;33548:100::-;33599:9;;:41;;-1:-1:-1;;;33599:41:0;;-1:-1:-1;;;;;33599:9:0;;;;:29;;:41;;33629:10;;33599:41;;;:::i;36311:155::-;36387:13;7154:2;36387;:13;:::i;:::-;36377:23;;;;:::i;:::-;36411:6;;:47;;-1:-1:-1;;;36411:47:0;;36377:23;;-1:-1:-1;36411:6:0;;;-1:-1:-1;;;;;36411:6:0;;:27;;:47;;36439:10;;36377:23;;36411:47;;;:::i;35532:135::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;35616:6:::1;::::0;:43:::1;::::0;-1:-1:-1;;;35616:43:0;;::::1;::::0;::::1;368:25:1::0;;;35616:6:0::1;::::0;;::::1;-1:-1:-1::0;;;;;35616:6:0::1;::::0;:28:::1;::::0;341:18:1;;35616:43:0::1;222:177:1::0;33656:143:0;33735:9;;:56;;-1:-1:-1;;;33735:56:0;;-1:-1:-1;;;;;33735:9:0;;;;:37;;:56;;33773:10;;33785:5;;33735:56;;;:::i;14998:152::-;15078:4;15102:40;15112:10;15124:9;15135:6;15102:9;:40::i;:::-;15095:47;14998:152;-1:-1:-1;;;14998:152:0:o;32401:150::-;32503:9;;:40;;-1:-1:-1;;;32503:40:0;;32476:7;;-1:-1:-1;;;;;32503:9:0;;:27;;:40;;32531:11;;32503:40;;;:::i;36782:125::-;36850:6;;:49;;-1:-1:-1;;;36850:49:0;;:6;;;;-1:-1:-1;;;;;36850:6:0;;:31;;:49;;36882:10;;36894:4;;36850:49;;;:::i;36474:151::-;36576:6;;:41;;-1:-1:-1;;;36576:41:0;;36549:7;;36576:6;;;-1:-1:-1;;;;;36576:6:0;;:32;;:41;;36609:7;;36576:41;;;:::i;33941:136::-;34006:9;;34051;;:17;;;-1:-1:-1;;;34051:17:0;;;;-1:-1:-1;;;;;34006:9:0;;;;:32;;34039:10;;34051:9;;;:15;;:17;;;;;;;;;;;;;;;:9;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34006:63;;;;;;;;;;;;;;;;:::i;33807:126::-;33874:9;;:51;;-1:-1:-1;;;33874:51:0;;-1:-1:-1;;;;;33874:9:0;;;;:32;;:51;;33907:10;;33919:5;;33874:51;;;:::i;16126:118::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;16200:9:::1;::::0;:36:::1;::::0;-1:-1:-1;;;16200:36:0;;:9;;;::::1;-1:-1:-1::0;;;;;16200:9:0::1;::::0;:27:::1;::::0;:36:::1;::::0;16228:7;;16200:36:::1;;;:::i;34440:147::-:0;34538:9;;:41;;-1:-1:-1;;;34538:41:0;;34511:7;;-1:-1:-1;;;;;34538:9:0;;:32;;:41;;34571:7;;34538:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32689:120::-;32773:9;;:28;;;-1:-1:-1;;;32773:28:0;;;;32740:13;;-1:-1:-1;;;;;32773:9:0;;:26;;:28;;;;;:9;;:28;;;;;;;:9;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32773:28:0;;;;;;;;;;;;:::i;36633:141::-;36730:6;;:36;;-1:-1:-1;;;36730:36:0;;36703:7;;36730:6;;;-1:-1:-1;;;;;36730:6:0;;:27;;:36;;36758:7;;36730:36;;;:::i;19807:134::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;19894:9:::1;19888:3;:15;19880:24;;;::::0;::::1;;19915:12;:18:::0;19807:134::o;32960:130::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;33043:9:::1;::::0;:39:::1;::::0;-1:-1:-1;;;33043:39:0;;-1:-1:-1;;;;;33043:9:0;;::::1;::::0;:24:::1;::::0;:39:::1;::::0;33068:5;;33075:6;;33043:39:::1;;;:::i;22870:127::-:0;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;22953:8:::1;22945:4;:16;;22936:26;;;::::0;::::1;;22973:9;:16:::0;22870:127::o;27422:242::-;27493:3;27500:1;27493:8;27489:120;;-1:-1:-1;27524:12:0;;27489:120;;;27584:12;;27577:3;:19;;27569:28;;;;;;27623:9;;:22;;-1:-1:-1;;;27623:22:0;;;;;368:25:1;;;-1:-1:-1;;;;;27623:9:0;;;;:17;;341:18:1;;27623:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27619:38;27422:242;:::o;18975:193::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;19081:19:::1;:30:::0;;-1:-1:-1;;19081:30:0::1;;::::0;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;19122:14:::1;:38:::0;;-1:-1:-1;;19122:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18975:193::o;19949:542::-;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;20018:20:::1;20051:9;20018:43;;20072:16;20102:10;-1:-1:-1::0;;;;;20102:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20091:40:0::1;;20140:4;20147:10;-1:-1:-1::0;;;;;20147:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20091:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20072:94:::0;-1:-1:-1;;;;;;20181:22:0;::::1;20177:201;;20240:10;-1:-1:-1::0;;;;;20240:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20229:43:0::1;;20281:4;20288:10;-1:-1:-1::0;;;;;20288:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20229:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20220:6;:87:::0;;-1:-1:-1;;;;;;20220:87:0::1;-1:-1:-1::0;;;;;20220:87:0;;;::::1;::::0;;;::::1;::::0;;20177:201:::1;;;20349:6;:17:::0;;-1:-1:-1;;;;;;20349:17:0::1;-1:-1:-1::0;;;;;20349:17:0;::::1;;::::0;;20177:201:::1;20388:9;:22:::0;;-1:-1:-1;;;;;;20388:22:0::1;-1:-1:-1::0;;;;;20388:22:0;::::1;::::0;;::::1;::::0;;;20421:62:::1;::::0;20438:4:::1;::::0;-1:-1:-1;;20421:8:0::1;:62::i;17178:459::-:0;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;7936:4:::1;17303:6;:21;;;;:65;;;;;7986:4;17345:7;:23;;;;17303:65;:117;;;;;8040:4;17389:11;:31;;;;17303:117;:163;;;;;8090:4;17441:9;:25;;;;17303:163;17295:172;;;::::0;::::1;;17478:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17514:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;17598:31:0;-1:-1:-1;;;17552:35:0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;17598:31:0;;;;;-1:-1:-1;;;17598:31:0;;;::::1;;::::0;;;::::1;::::0;;17178:459::o;17645:773::-;17793:6;;-1:-1:-1;;;;;17793:6:0;17779:10;:20;;:53;;-1:-1:-1;17817:15:0;;-1:-1:-1;;;;;17817:15:0;17803:10;:29;17779:53;17771:62;;;;;;17862:15;;-1:-1:-1;;;;;17862:15:0;17848:10;:29;17844:339;;17909:3;17902;:10;;;;17894:19;;;;;;17928:7;:17;;-1:-1:-1;;;;17928:17:0;-1:-1:-1;;;17928:17:0;;;;;;;17844:339;;;17981:6;;-1:-1:-1;;;;;17981:6:0;17967:10;:20;17963:220;;18004:7;:25;;;;;;-1:-1:-1;;18044:29:0;;;;;;;;;;;;;-1:-1:-1;;18132:39:0;-1:-1:-1;;;18088:29:0;;;;-1:-1:-1;;;;18132:39:0;;-1:-1:-1;;;18132:39:0;;;;;;;;;;17963:220;18260:3;18243:14;18231:9;18209:19;18219:9;18209:7;:19;:::i;:::-;:31;;;;:::i;:::-;:48;;;;:::i;:::-;:54;;;;:::i;:::-;18193:7;:70;;-1:-1:-1;;;;18193:70:0;-1:-1:-1;;;18193:70:0;;;;;;;;:13;18309:17;-1:-1:-1;;18290:36:0;;18309:17;;;;;;18290:16;:36;:::i;:::-;18345:7;:13;18274:52;;;;;-1:-1:-1;;;;18345:13:0;;;:21;-1:-1:-1;18345:21:0;18337:73;;;;-1:-1:-1;;;18337:73:0;;27694:2:1;18337:73:0;;;27676:21:1;27733:2;27713:18;;;27706:30;27772:34;27752:18;;;27745:62;-1:-1:-1;;;27823:18:1;;;27816:37;27870:19;;18337:73:0;27492:403:1;32817:135:0;32917:9;;:27;;-1:-1:-1;;;32917:27:0;;32875:4;;;;;;-1:-1:-1;;;;;32917:9:0;;:20;;:27;;32938:5;;32917:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32910:34;;;;;;32817:135;;;;;:::o;31898:118::-;31977:9;;:31;;;-1:-1:-1;;;31977:31:0;;;;31950:7;;-1:-1:-1;;;;;31977:9:0;;:29;;:31;;;;;;;;;;;;;;:9;:31;;;;;;;;;;;;;;35407:117;9729:6;;-1:-1:-1;;;;;9729:6:0;9739:10;9729:20;9721:65;;;;-1:-1:-1;;;9721:65:0;;;;;;;:::i;:::-;35482:6:::1;::::0;:34:::1;::::0;-1:-1:-1;;;35482:34:0;;::::1;::::0;::::1;368:25:1::0;;;35482:6:0::1;::::0;;::::1;-1:-1:-1::0;;;;;35482:6:0::1;::::0;:28:::1;::::0;341:18:1;;35482:34:0::1;222:177:1::0;15472:125:0;15557:9;;:32;;-1:-1:-1;;;15557:32:0;;15533:4;;15557:9;;;-1:-1:-1;;;;;15557:9:0;;:23;;:32;;15581:7;;15557:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23794:2073::-;23873:4;-1:-1:-1;;;;;23898:18:0;;23890:68;;;;-1:-1:-1;;;23890:68:0;;28870:2:1;23890:68:0;;;28852:21:1;28909:2;28889:18;;;28882:30;28948:34;28928:18;;;28921:62;-1:-1:-1;;;28999:18:1;;;28992:35;29044:19;;23890:68:0;28668:401:1;23890:68:0;-1:-1:-1;;;;;23977:16:0;;23969:64;;;;-1:-1:-1;;;23969:64:0;;29276:2:1;23969:64:0;;;29258:21:1;29315:2;29295:18;;;29288:30;29354:34;29334:18;;;29327:62;-1:-1:-1;;;29405:18:1;;;29398:33;29448:19;;23969:64:0;29074:399:1;23969:64:0;24061:1;24052:6;:10;24044:64;;;;-1:-1:-1;;;24044:64:0;;29680:2:1;24044:64:0;;;29662:21:1;29719:2;29699:18;;;29692:30;29758:34;29738:18;;;29731:62;-1:-1:-1;;;29809:18:1;;;29802:39;29858:19;;24044:64:0;29478:405:1;24044:64:0;-1:-1:-1;;;;;24207:13:0;;24119:8;24207:13;;;:7;:13;;;;;;24119:8;;;;24207:13;;24203:162;;;24243:4;24237:10;;24203:162;;;-1:-1:-1;;;;;24269:11:0;;;;;;:7;:11;;;;;;;;24265:100;;;24304:4;24297:11;;24265:100;;;-1:-1:-1;24349:4:0;24265:100;24378:20;24389:4;24395:2;24378:10;:20::i;:::-;24375:641;;;24419:14;;;;;;;24415:89;;24454:34;;-1:-1:-1;;;24454:34:0;;30090:2:1;24454:34:0;;;30072:21:1;30129:2;30109:18;;;30102:30;-1:-1:-1;;;30148:18:1;;;30141:54;30212:18;;24454:34:0;29888:348:1;24415:89:0;24521:3;:11;;;;24528:4;24521:11;24518:231;;;-1:-1:-1;;;;;24557:27:0;;;;;;:21;:27;;;;;;;;24556:28;:58;;;;-1:-1:-1;;;;;;24589:25:0;;;;;;:21;:25;;;;;;;;24588:26;24556:58;24552:182;;;24657:12;;24647:6;:22;;24639:75;;;;-1:-1:-1;;;24639:75:0;;30443:2:1;24639:75:0;;;30425:21:1;30482:2;30462:18;;;30455:30;30521:34;30501:18;;;30494:62;-1:-1:-1;;;30572:18:1;;;30565:38;30620:19;;24639:75:0;30241:404:1;24639:75:0;24780:9;;-1:-1:-1;;;;;24766:24:0;;;24780:9;;24766:24;;;;:33;;;24795:4;24794:5;24766:33;24763:242;;;-1:-1:-1;;;;;24825:25:0;;;;;;:21;:25;;;;;;;;24820:170;;24909:14;;24899:6;24883:13;24893:2;24883:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;24875:95;;;;-1:-1:-1;;;24875:95:0;;30852:2:1;24875:95:0;;;30834:21:1;30891:2;30871:18;;;30864:30;30930:34;30910:18;;;30903:62;-1:-1:-1;;;30981:18:1;;;30974:40;31031:19;;24875:95:0;30650:406:1;24875:95:0;-1:-1:-1;;;;;25071:25:0;;25028:12;25071:25;;;:19;:25;;;;;;25043:4;;25071:25;;;:52;;-1:-1:-1;;;;;;25100:23:0;;;;;;:19;:23;;;;;;;;25071:52;25068:98;;;-1:-1:-1;25149:5:0;25068:98;25182:4;25178:599;;;25208:6;;;;25207:7;:47;;;;-1:-1:-1;25235:19:0;;;;;;;25207:47;25203:557;;;25324:15;25304:17;;25293:8;;:28;;;;:::i;:::-;:46;25289:456;;;25364:28;25395:24;25413:4;25395:9;:24::i;:::-;25364:55;;25470:13;;25446:20;:37;25442:284;;25539:10;;25515:20;:34;25512:77;;-1:-1:-1;25576:10:0;;25512:77;25615:34;25628:20;25615:12;:34::i;:::-;25687:15;25676:8;:26;25442:284;25341:404;25289:456;25797:62;25815:4;25821:2;25825:6;25833:7;25842:3;25847:4;25853:5;25797:17;:62::i;:::-;25790:69;23794:2073;-1:-1:-1;;;;;;;;23794:2073:0:o;25875:1046::-;26031:16;;26009:4;;26031:16;;;;;26026:221;;26064:28;26083:4;26089:2;26064:18;:28::i;:::-;26112:16;;;;;;;26111:17;:41;;;;;26132:20;26143:4;26149:2;26132:10;:20::i;:::-;26107:129;;;26173:47;;-1:-1:-1;;;26173:47:0;;31263:2:1;26173:47:0;;;31245:21:1;31302:2;31282:18;;;31275:30;31341:34;31321:18;;;31314:62;-1:-1:-1;;;31392:18:1;;;31385:35;31437:19;;26173:47:0;31061:401:1;26107:129:0;26262:20;26273:4;26279:2;26262:10;:20::i;:::-;26259:313;;;26330:9;;:37;;-1:-1:-1;;;26330:37:0;;-1:-1:-1;;;;;31725:15:1;;;26330:37:0;;;31707:34:1;31777:15;;;31757:18;;;31750:43;31809:18;;;31802:34;;;26299:12:0;;26330:9;;;;;:19;;31642:18:1;;26330:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;26330:37:0;;;;;;;;-1:-1:-1;;26330:37:0;;;;;;;;;;;;:::i;:::-;;;26326:163;;26465:8;;;26326:163;26418:5;-1:-1:-1;26509:7:0;26505:56;;26537:8;;;26505:56;26284:288;26259:313;-1:-1:-1;;;;;26584:13:0;;;;;;:7;:13;;;;;:23;;26601:6;;26584:13;:23;;26601:6;;26584:23;:::i;:::-;;;;-1:-1:-1;26643:6:0;;-1:-1:-1;26660:98:0;;;;26705:41;26715:4;26721:6;26729:3;26734:4;26740:5;26705:9;:41::i;:::-;26688:58;;26660:98;-1:-1:-1;;;;;26768:11:0;;;;;;:7;:11;;;;;:29;;26783:14;;26768:11;:29;;26783:14;;26768:29;:::i;:::-;;;;-1:-1:-1;26810:29:0;;-1:-1:-1;26830:4:0;26836:2;26810:19;:29::i;:::-;26872:2;-1:-1:-1;;;;;26857:34:0;26866:4;-1:-1:-1;;;;;26857:34:0;-1:-1:-1;;;;;;;;;;;26876:14:0;26857:34;;;;368:25:1;;356:2;341:18;;222:177;26857:34:0;;;;;;;;-1:-1:-1;26909:4:0;;25875:1046;-1:-1:-1;;;;;;;;25875:1046:0:o;14468:341::-;-1:-1:-1;;;;;14562:20:0;;14554:69;;;;-1:-1:-1;;;14554:69:0;;32049:2:1;14554:69:0;;;32031:21:1;32088:2;32068:18;;;32061:30;32127:34;32107:18;;;32100:62;-1:-1:-1;;;32178:18:1;;;32171:34;32222:19;;14554:69:0;31847:400:1;14554:69:0;-1:-1:-1;;;;;14642:21:0;;14634:68;;;;-1:-1:-1;;;14634:68:0;;32454:2:1;14634:68:0;;;32436:21:1;32493:2;32473:18;;;32466:30;32532:34;32512:18;;;32505:62;-1:-1:-1;;;32583:18:1;;;32576:32;32625:19;;14634:68:0;32252:398:1;14634:68:0;-1:-1:-1;;;;;14715:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;14768:33;;368:25:1;;;14768:33:0;;341:18:1;14768:33:0;;;;;;;14468:341;;;:::o;23429:357::-;23497:4;23529:6;;-1:-1:-1;;;;;23521:14:0;;;23529:6;;23521:14;;;;:43;;-1:-1:-1;23558:6:0;;-1:-1:-1;;;;;23552:12:0;;;23558:6;;23552:12;;23521:43;:79;;;;-1:-1:-1;23594:6:0;;-1:-1:-1;;;;;23594:6:0;23581:9;:19;;23521:79;:118;;;;-1:-1:-1;;;;;;23618:21:0;;;;;;:17;:21;;;;;;;;23617:22;23521:118;:159;;;;-1:-1:-1;;;;;;23657:23:0;;;;;;:17;:23;;;;;;;;23656:24;23521:159;:186;;;;-1:-1:-1;;;;;;23697:10:0;;8245:42;23697:10;;23521:186;:219;;;;-1:-1:-1;;;;;;23724:16:0;;;;23521:219;:257;;;;-1:-1:-1;;;;;;;;23757:21:0;23773:4;23757:21;;;23429:357::o;28529:2167::-;9623:6;:13;;-1:-1:-1;;9623:13:0;9632:4;9623:13;;;28610:30:::1;::::0;;::::1;::::0;::::1;::::0;;28633:7:::1;28610:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;28610:30:0;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;28610:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;28610:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;28610:30:0;::::1;::::0;;::::1;::::0;;;;;;9623:6;28655:17;28651:56:::1;;28689:7;;;28651:56;28750:4;28730:26;::::0;;;:11:::1;:26;::::0;;;;;;;28765:9:::1;::::0;-1:-1:-1;;;;;28765:9:0::1;28730:46:::0;;;;;;;;-1:-1:-1;;28730:67:0::1;28727:165;;28834:4;28814:26;::::0;;;:11:::1;:26;::::0;;;;;;;28849:9:::1;::::0;-1:-1:-1;;;;;28849:9:0::1;28814:46:::0;;;;;;;-1:-1:-1;;28814:66:0;;28727:165:::1;28904:17;28987:1;28970:6;:12;;;28925:58;;28949:6;:16;;;28926:39;;:20;:39;;;;:::i;:::-;28925:58;;;;:::i;:::-;28924:64;;;;:::i;:::-;28904:84:::0;-1:-1:-1;28999:15:0::1;29017:32;28904:84:::0;29017:20;:32:::1;:::i;:::-;29086:16;::::0;;29100:1:::1;29086:16:::0;;;;;::::1;::::0;;28999:50;;-1:-1:-1;29062:21:0::1;::::0;29086:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;29086:16:0::1;29062:40;;29131:4;29113;29118:1;29113:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29113:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;29157:9:::1;::::0;:17:::1;::::0;;-1:-1:-1;;;29157:17:0;;;;:9;;;::::1;::::0;:15:::1;::::0;:17:::1;::::0;;::::1;::::0;29113:7;;29157:17;;;;;:9;:17:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29147:4;29152:1;29147:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29147:27:0;;::::1;:7;::::0;;::::1;::::0;;;;;:27;29187:9:::1;::::0;:187:::1;::::0;-1:-1:-1;;;29187:187:0;;:9;::::1;::::0;:61:::1;::::0;:187:::1;::::0;29263:7;;29187:9:::1;::::0;29301:4;;29328::::1;::::0;29348:15:::1;::::0;29187:187:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;29408:21:0::1;::::0;-1:-1:-1;29387:18:0::1;::::0;-1:-1:-1;29494:7:0;;-1:-1:-1;29468:22:0::1;29481:9:::0;29408:21;29468:22:::1;:::i;:::-;29467:34;;;;:::i;:::-;29440:61:::0;-1:-1:-1;29518:13:0;;29514:346:::1;;29548:9;::::0;29718:21;;29548:240:::1;::::0;-1:-1:-1;;;29548:240:0;;29626:4:::1;29548:240;::::0;::::1;33981:34:1::0;34031:18;;;34024:34;;;29548:9:0::1;34074:18:1::0;;;34067:34;;;34117:18;;;34110:34;-1:-1:-1;;;;;29718:21:0;;::::1;34160:19:1::0;;;34153:44;29758:15:0::1;34213:19:1::0;;;34206:35;29548:9:0;::::1;::::0;:26:::1;::::0;29582:16;;33915:19:1;;29548:240:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;29808:40:0::1;::::0;;16929:25:1;;;16985:2;16970:18;;16963:34;;;29808:40:0::1;::::0;-1:-1:-1;16902:18:1;29808:40:0::1;;;;;;;29514:346;29872:30;29886:16:::0;29872:30;::::1;:::i;:::-;;;29929:6;:16;;;29913:6;:12;;:32;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;30013:12:::1;::::0;::::1;::::0;29995:14;;29956:22:::1;::::0;-1:-1:-1;29981:44:0;;::::1;::::0;29982:27:::1;::::0;::::1;:10:::0;:27:::1;:::i;:::-;29981:44;;;;:::i;:::-;29956:69;;30036:29;30107:6;:12;;;30068:51;;30082:6;:21;;;30069:34;;:10;:34;;;;:::i;:::-;30068:51;;;;:::i;:::-;30036:83;;30130:18;30179:6;:12;;;30151:40;;30165:6;:10;;;30152:23;;:10;:23;;;;:::i;:::-;30151:40;;;;:::i;:::-;30130:61:::0;-1:-1:-1;30202:24:0::1;30130:61:::0;30243:38:::1;30260:21:::0;30243:14;:38:::1;:::i;:::-;:51;;;;:::i;:::-;30229:66;::::0;:10;:66:::1;:::i;:::-;30202:93;;30312:9;;;;;;;;;-1:-1:-1::0;;;;;30312:9:0::1;-1:-1:-1::0;;;;;30312:14:0::1;;30334;30312:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;30308:55:::0;30378:21:::1;::::0;::::1;::::0;:25:::1;;::::0;30375:114:::1;;30419:26:::0;;:58:::1;::::0;-1:-1:-1;;;;;30419:26:0;;::::1;::::0;:58;::::1;;;::::0;30455:21;;30419:26:::1;:58:::0;:26;:58;30455:21;30419:26;:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30375:114;30502:10;::::0;::::1;::::0;:14:::1;;::::0;30499:81:::1;;30532:15:::0;;:36:::1;::::0;-1:-1:-1;;;;;30532:15:0;;::::1;::::0;:36;::::1;;;::::0;30557:10;;30532:15:::1;:36:::0;:15;:36;30557:10;30532:15;:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30499:81;30593:16;::::0;::::1;::::0;:20:::1;;::::0;30590:99:::1;;30629:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;30629:21:0;;::::1;::::0;:48;::::1;;;::::0;30660:16;;30629:21:::1;:48:::0;:21;:48;30660:16;30629:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30590:99;28599:2097;;;;;;;;;;9647:1;-1:-1:-1::0;9659:6:0;:14;;-1:-1:-1;;9659:14:0;;;28529:2167::o;30704:630::-;30786:16;;;;;;;30785:17;30777:65;;;;-1:-1:-1;;;30777:65:0;;34987:2:1;30777:65:0;;;34969:21:1;35026:2;35006:18;;;34999:30;35065:34;35045:18;;;35038:62;-1:-1:-1;;;35116:18:1;;;35109:33;35159:19;;30777:65:0;34785:399:1;30777:65:0;30858:20;30869:4;30875:2;30858:10;:20::i;:::-;30857:21;:37;;;;-1:-1:-1;30888:6:0;;-1:-1:-1;;;;;30882:12:0;;;30888:6;;30882:12;30857:37;30853:474;;;-1:-1:-1;;;;;30911:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;30911:30:0;30937:4;30911:30;;;30956:16;:23;;-1:-1:-1;;30956:23:0;;;;;;;31005:9;;;;30994:108;;31050:9;:36;;-1:-1:-1;;;;;;31050:36:0;31080:4;31050:36;;;;;30994:108;31127:9;;-1:-1:-1;;;;;31127:9:0;31116:107;;31173:9;:34;;-1:-1:-1;;;;;;31173:34:0;31201:4;31173:34;;;31116:107;31237:19;:26;;-1:-1:-1;;31237:26:0;;;;;31283:32;;-1:-1:-1;2929:41:1;;31283:32:0;;2917:2:1;2902:18;31283:32:0;;;;;;;30704:630;;:::o;27672:849::-;27772:7;27792:18;27825:3;27821:407;;;-1:-1:-1;27858:9:0;:16;;;27821:407;;;27896:4;27892:336;;;27921:9;;:24;;-1:-1:-1;;;27921:24:0;;:9;;;;-1:-1:-1;;;;;27921:9:0;;:18;;:24;;27940:4;;27921:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:69;;;;;27975:15;27963:9;;27949:11;;:23;;;;:::i;:::-;:41;27921:69;:89;;;;-1:-1:-1;27994:16:0;;;;27921:89;27917:233;;;-1:-1:-1;28044:9:0;:19;-1:-1:-1;;;28044:19:0;;;;27892:336;;27917:233;-1:-1:-1;28117:9:0;:17;;;;;;27892:336;;;-1:-1:-1;28195:9:0;:21;-1:-1:-1;;;28195:21:0;;;;27892:336;28244:10;28258:1;28244:15;28240:61;;28283:6;28276:13;;;;;28240:61;28313:17;8137:5;28333:19;28342:10;28333:6;:19;:::i;:::-;:38;;;;:::i;:::-;28400:4;28384:22;;;;:7;:22;;;;;:35;;28313:58;;-1:-1:-1;28313:58:0;;28384:22;;;:35;;28313:58;;28384:35;:::i;:::-;;;;-1:-1:-1;;28435:40:0;;368:25:1;;;28458:4:0;;-1:-1:-1;;;;;28435:40:0;;;-1:-1:-1;;;;;;;;;;;28435:40:0;356:2:1;341:18;28435:40:0;;;;;;;28495:18;28504:9;28495:6;:18;:::i;:::-;28488:25;;;;27672:849;;;;;;;;:::o;26929:485::-;-1:-1:-1;;;;;27009:30:0;;;;;;:24;:30;;;;;;;;27004:149;;27060:9;;27098:6;;:31;;-1:-1:-1;;;27098:31:0;;-1:-1:-1;;;;;27060:9:0;;;;:15;;27076:4;;27060:9;27098:6;;;;;;;:25;;:31;;27076:4;;27098:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27082:13:0;;;;;;:7;:13;;;;;;:47;;;;:::i;:::-;27060:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27056:86;;-1:-1:-1;;;;;27168:28:0;;;;;;:24;:28;;;;;;;;27163:141;;27217:9;;27251:6;;:29;;-1:-1:-1;;;27251:29:0;;-1:-1:-1;;;;;27217:9:0;;;;:15;;27233:2;;27217:9;27251:6;;;;;;;:25;;:29;;27233:2;;27251:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27237:11:0;;;;;;:7;:11;;;;;;:43;;;;:::i;:::-;27217:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27213:80;;27318:14;;;;27314:93;;;27353:9;;27371:12;;27353:31;;-1:-1:-1;;;27353:31:0;;-1:-1:-1;;;;;27353:9:0;;;;:17;;:31;;;;368:25:1;;;356:2;341:18;;222:177;27353:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27349:47;;;26929:485;;:::o;14:203:1:-;-1:-1:-1;;;;;178:32:1;;;;160:51;;148:2;133:18;;14:203::o;404:118::-;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;527:376;589:6;597;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:28;746:5;724:28;:::i;:::-;771:5;-1:-1:-1;828:2:1;813:18;;800:32;841:30;800:32;841:30;:::i;:::-;890:7;880:17;;;527:376;;;;;:::o;1357:258::-;1429:1;1439:113;1453:6;1450:1;1447:13;1439:113;;;1529:11;;;1523:18;1510:11;;;1503:39;1475:2;1468:10;1439:113;;;1570:6;1567:1;1564:13;1561:48;;;-1:-1:-1;;1605:1:1;1587:16;;1580:27;1357:258::o;1620:::-;1662:3;1700:5;1694:12;1727:6;1722:3;1715:19;1743:63;1799:6;1792:4;1787:3;1783:14;1776:4;1769:5;1765:16;1743:63;:::i;:::-;1860:2;1839:15;-1:-1:-1;;1835:29:1;1826:39;;;;1867:4;1822:50;;1620:258;-1:-1:-1;;1620:258:1:o;1883:220::-;2032:2;2021:9;2014:21;1995:4;2052:45;2093:2;2082:9;2078:18;2070:6;2052:45;:::i;2333:131::-;-1:-1:-1;;;;;2408:31:1;;2398:42;;2388:70;;2454:1;2451;2444:12;2469:315;2537:6;2545;2598:2;2586:9;2577:7;2573:23;2569:32;2566:52;;;2614:1;2611;2604:12;2566:52;2653:9;2640:23;2672:31;2697:5;2672:31;:::i;:::-;2722:5;2774:2;2759:18;;;;2746:32;;-1:-1:-1;;;2469:315:1:o;2981:316::-;3058:6;3066;3074;3127:2;3115:9;3106:7;3102:23;3098:32;3095:52;;;3143:1;3140;3133:12;3095:52;-1:-1:-1;;3166:23:1;;;3236:2;3221:18;;3208:32;;-1:-1:-1;3287:2:1;3272:18;;;3259:32;;2981:316;-1:-1:-1;2981:316:1:o;3302:247::-;3361:6;3414:2;3402:9;3393:7;3389:23;3385:32;3382:52;;;3430:1;3427;3420:12;3382:52;3469:9;3456:23;3488:31;3513:5;3488:31;:::i;3554:241::-;3610:6;3663:2;3651:9;3642:7;3638:23;3634:32;3631:52;;;3679:1;3676;3669:12;3631:52;3718:9;3705:23;3737:28;3759:5;3737:28;:::i;3800:456::-;3877:6;3885;3893;3946:2;3934:9;3925:7;3921:23;3917:32;3914:52;;;3962:1;3959;3952:12;3914:52;4001:9;3988:23;4020:31;4045:5;4020:31;:::i;:::-;4070:5;-1:-1:-1;4127:2:1;4112:18;;4099:32;4140:33;4099:32;4140:33;:::i;:::-;3800:456;;4192:7;;-1:-1:-1;;;4246:2:1;4231:18;;;;4218:32;;3800:456::o;4261:248::-;4329:6;4337;4390:2;4378:9;4369:7;4365:23;4361:32;4358:52;;;4406:1;4403;4396:12;4358:52;-1:-1:-1;;4429:23:1;;;4499:2;4484:18;;;4471:32;;-1:-1:-1;4261:248:1:o;4514:127::-;4575:10;4570:3;4566:20;4563:1;4556:31;4606:4;4603:1;4596:15;4630:4;4627:1;4620:15;4646:275;4717:2;4711:9;4782:2;4763:13;;-1:-1:-1;;4759:27:1;4747:40;;-1:-1:-1;;;;;4802:34:1;;4838:22;;;4799:62;4796:88;;;4864:18;;:::i;:::-;4900:2;4893:22;4646:275;;-1:-1:-1;4646:275:1:o;4926:183::-;4986:4;-1:-1:-1;;;;;5011:6:1;5008:30;5005:56;;;5041:18;;:::i;:::-;-1:-1:-1;5086:1:1;5082:14;5098:4;5078:25;;4926:183::o;5114:662::-;5168:5;5221:3;5214:4;5206:6;5202:17;5198:27;5188:55;;5239:1;5236;5229:12;5188:55;5275:6;5262:20;5301:4;5325:60;5341:43;5381:2;5341:43;:::i;:::-;5325:60;:::i;:::-;5419:15;;;5505:1;5501:10;;;;5489:23;;5485:32;;;5450:12;;;;5529:15;;;5526:35;;;5557:1;5554;5547:12;5526:35;5593:2;5585:6;5581:15;5605:142;5621:6;5616:3;5613:15;5605:142;;;5687:17;;5675:30;;5725:12;;;;5638;;5605:142;;;-1:-1:-1;5765:5:1;5114:662;-1:-1:-1;;;;;;5114:662:1:o;5781:1215::-;5899:6;5907;5960:2;5948:9;5939:7;5935:23;5931:32;5928:52;;;5976:1;5973;5966:12;5928:52;6016:9;6003:23;-1:-1:-1;;;;;6086:2:1;6078:6;6075:14;6072:34;;;6102:1;6099;6092:12;6072:34;6140:6;6129:9;6125:22;6115:32;;6185:7;6178:4;6174:2;6170:13;6166:27;6156:55;;6207:1;6204;6197:12;6156:55;6243:2;6230:16;6265:4;6289:60;6305:43;6345:2;6305:43;:::i;6289:60::-;6383:15;;;6465:1;6461:10;;;;6453:19;;6449:28;;;6414:12;;;;6489:19;;;6486:39;;;6521:1;6518;6511:12;6486:39;6545:11;;;;6565:217;6581:6;6576:3;6573:15;6565:217;;;6661:3;6648:17;6678:31;6703:5;6678:31;:::i;:::-;6722:18;;6598:12;;;;6760;;;;6565:217;;;6801:5;-1:-1:-1;;6844:18:1;;6831:32;;-1:-1:-1;;6875:16:1;;;6872:36;;;6904:1;6901;6894:12;6872:36;;6927:63;6982:7;6971:8;6960:9;6956:24;6927:63;:::i;:::-;6917:73;;;5781:1215;;;;;:::o;7001:367::-;7064:8;7074:6;7128:3;7121:4;7113:6;7109:17;7105:27;7095:55;;7146:1;7143;7136:12;7095:55;-1:-1:-1;7169:20:1;;-1:-1:-1;;;;;7201:30:1;;7198:50;;;7244:1;7241;7234:12;7198:50;7281:4;7273:6;7269:17;7257:29;;7341:3;7334:4;7324:6;7321:1;7317:14;7309:6;7305:27;7301:38;7298:47;7295:67;;;7358:1;7355;7348:12;7295:67;7001:367;;;;;:::o;7373:773::-;7495:6;7503;7511;7519;7572:2;7560:9;7551:7;7547:23;7543:32;7540:52;;;7588:1;7585;7578:12;7540:52;7628:9;7615:23;-1:-1:-1;;;;;7698:2:1;7690:6;7687:14;7684:34;;;7714:1;7711;7704:12;7684:34;7753:70;7815:7;7806:6;7795:9;7791:22;7753:70;:::i;:::-;7842:8;;-1:-1:-1;7727:96:1;-1:-1:-1;7930:2:1;7915:18;;7902:32;;-1:-1:-1;7946:16:1;;;7943:36;;;7975:1;7972;7965:12;7943:36;;8014:72;8078:7;8067:8;8056:9;8052:24;8014:72;:::i;:::-;7373:773;;;;-1:-1:-1;8105:8:1;-1:-1:-1;;;;7373:773:1:o;8340:454::-;8435:6;8443;8451;8459;8467;8520:3;8508:9;8499:7;8495:23;8491:33;8488:53;;;8537:1;8534;8527:12;8488:53;-1:-1:-1;;8560:23:1;;;8630:2;8615:18;;8602:32;;-1:-1:-1;8681:2:1;8666:18;;8653:32;;8732:2;8717:18;;8704:32;;-1:-1:-1;8783:3:1;8768:19;8755:33;;-1:-1:-1;8340:454:1;-1:-1:-1;8340:454:1:o;8799:382::-;8864:6;8872;8925:2;8913:9;8904:7;8900:23;8896:32;8893:52;;;8941:1;8938;8931:12;8893:52;8980:9;8967:23;8999:31;9024:5;8999:31;:::i;9186:180::-;9245:6;9298:2;9286:9;9277:7;9273:23;9269:32;9266:52;;;9314:1;9311;9304:12;9266:52;-1:-1:-1;9337:23:1;;9186:180;-1:-1:-1;9186:180:1:o;9371:388::-;9439:6;9447;9500:2;9488:9;9479:7;9475:23;9471:32;9468:52;;;9516:1;9513;9506:12;9468:52;9555:9;9542:23;9574:31;9599:5;9574:31;:::i;:::-;9624:5;-1:-1:-1;9681:2:1;9666:18;;9653:32;9694:33;9653:32;9694:33;:::i;9764:875::-;10105:3;10094:9;10087:22;10068:4;10132:46;10173:3;10162:9;10158:19;10150:6;10132:46;:::i;:::-;10226:9;10218:6;10214:22;10209:2;10198:9;10194:18;10187:50;10260:33;10286:6;10278;10260:33;:::i;:::-;10246:47;;10341:9;10333:6;10329:22;10324:2;10313:9;10309:18;10302:50;10375:33;10401:6;10393;10375:33;:::i;:::-;10361:47;;10456:9;10448:6;10444:22;10439:2;10428:9;10424:18;10417:50;10490:33;10516:6;10508;10490:33;:::i;:::-;10476:47;;10572:9;10564:6;10560:22;10554:3;10543:9;10539:19;10532:51;10600:33;10626:6;10618;10600:33;:::i;10644:695::-;10754:6;10762;10770;10778;10831:3;10819:9;10810:7;10806:23;10802:33;10799:53;;;10848:1;10845;10838:12;10799:53;10887:9;10874:23;10906:31;10931:5;10906:31;:::i;:::-;10956:5;-1:-1:-1;11013:2:1;10998:18;;10985:32;11026:33;10985:32;11026:33;:::i;:::-;11078:7;-1:-1:-1;11137:2:1;11122:18;;11109:32;11150:33;11109:32;11150:33;:::i;:::-;11202:7;-1:-1:-1;11261:2:1;11246:18;;11233:32;11274:33;11233:32;11274:33;:::i;:::-;10644:695;;;;-1:-1:-1;10644:695:1;;-1:-1:-1;;10644:695:1:o;11344:529::-;11421:6;11429;11437;11490:2;11478:9;11469:7;11465:23;11461:32;11458:52;;;11506:1;11503;11496:12;11458:52;11545:9;11532:23;11564:31;11589:5;11564:31;:::i;:::-;11614:5;-1:-1:-1;11671:2:1;11656:18;;11643:32;11684:33;11643:32;11684:33;:::i;:::-;11736:7;-1:-1:-1;11795:2:1;11780:18;;11767:32;11808:33;11767:32;11808:33;:::i;:::-;11860:7;11850:17;;;11344:529;;;;;:::o;12485:159::-;12552:20;;12612:6;12601:18;;12591:29;;12581:57;;12634:1;12631;12624:12;12581:57;12485:159;;;:::o;12649:401::-;12731:6;12739;12747;12755;12808:3;12796:9;12787:7;12783:23;12779:33;12776:53;;;12825:1;12822;12815:12;12776:53;12848:28;12866:9;12848:28;:::i;:::-;12838:38;;12895:37;12928:2;12917:9;12913:18;12895:37;:::i;:::-;12885:47;;12951:37;12984:2;12973:9;12969:18;12951:37;:::i;:::-;12941:47;;13007:37;13040:2;13029:9;13025:18;13007:37;:::i;:::-;12997:47;;12649:401;;;;;;;:::o;13055:474::-;13145:6;13153;13161;13169;13177;13230:3;13218:9;13209:7;13205:23;13201:33;13198:53;;;13247:1;13244;13237:12;13198:53;13270:28;13288:9;13270:28;:::i;:::-;13260:38;;13317:37;13350:2;13339:9;13335:18;13317:37;:::i;:::-;13307:47;;13373:37;13406:2;13395:9;13391:18;13373:37;:::i;:::-;13363:47;;13429:37;13462:2;13451:9;13447:18;13429:37;:::i;:::-;13419:47;;13485:38;13518:3;13507:9;13503:19;13485:38;:::i;:::-;13475:48;;13055:474;;;;;;;;:::o;14442:356::-;14644:2;14626:21;;;14663:18;;;14656:30;14722:34;14717:2;14702:18;;14695:62;14789:2;14774:18;;14442:356::o;15076:127::-;15137:10;15132:3;15128:20;15125:1;15118:31;15168:4;15165:1;15158:15;15192:4;15189:1;15182:15;15208:422;15297:1;15340:5;15297:1;15354:270;15375:7;15365:8;15362:21;15354:270;;;15434:4;15430:1;15426:6;15422:17;15416:4;15413:27;15410:53;;;15443:18;;:::i;:::-;15493:7;15483:8;15479:22;15476:55;;;15513:16;;;;15476:55;15592:22;;;;15552:15;;;;15354:270;;;15358:3;15208:422;;;;;:::o;15635:806::-;15684:5;15714:8;15704:80;;-1:-1:-1;15755:1:1;15769:5;;15704:80;15803:4;15793:76;;-1:-1:-1;15840:1:1;15854:5;;15793:76;15885:4;15903:1;15898:59;;;;15971:1;15966:130;;;;15878:218;;15898:59;15928:1;15919:10;;15942:5;;;15966:130;16003:3;15993:8;15990:17;15987:43;;;16010:18;;:::i;:::-;-1:-1:-1;;16066:1:1;16052:16;;16081:5;;15878:218;;16180:2;16170:8;16167:16;16161:3;16155:4;16152:13;16148:36;16142:2;16132:8;16129:16;16124:2;16118:4;16115:12;16111:35;16108:77;16105:159;;;-1:-1:-1;16217:19:1;;;16249:5;;16105:159;16296:34;16321:8;16315:4;16296:34;:::i;:::-;16366:6;16362:1;16358:6;16354:19;16345:7;16342:32;16339:58;;;16377:18;;:::i;:::-;16415:20;;15635:806;-1:-1:-1;;;15635:806:1:o;16446:131::-;16506:5;16535:36;16562:8;16556:4;16535:36;:::i;16582:168::-;16622:7;16688:1;16684;16680:6;16676:14;16673:1;16670:21;16665:1;16658:9;16651:17;16647:45;16644:71;;;16695:18;;:::i;:::-;-1:-1:-1;16735:9:1;;16582:168::o;17008:140::-;17066:5;17095:47;17136:4;17126:8;17122:19;17116:4;17095:47;:::i;17153:217::-;17193:1;17219;17209:132;;17263:10;17258:3;17254:20;17251:1;17244:31;17298:4;17295:1;17288:15;17326:4;17323:1;17316:15;17209:132;-1:-1:-1;17355:9:1;;17153:217::o;17375:125::-;17415:4;17443:1;17440;17437:8;17434:34;;;17448:18;;:::i;:::-;-1:-1:-1;17485:9:1;;17375:125::o;18274:127::-;18335:10;18330:3;18326:20;18323:1;18316:31;18366:4;18363:1;18356:15;18390:4;18387:1;18380:15;18406:175;18443:3;18487:4;18480:5;18476:16;18516:4;18507:7;18504:17;18501:43;;18524:18;;:::i;:::-;18573:1;18560:15;;18406:175;-1:-1:-1;;18406:175:1:o;18586:522::-;18686:6;18681:3;18674:19;18656:3;18712:4;18741:2;18736:3;18732:12;18725:19;;18767:5;18790:1;18800:283;18814:6;18811:1;18808:13;18800:283;;;18891:6;18878:20;18911:33;18936:7;18911:33;:::i;:::-;-1:-1:-1;;;;;18969:33:1;18957:46;;19023:12;;;;19058:15;;;;18999:1;18829:9;18800:283;;;-1:-1:-1;19099:3:1;;18586:522;-1:-1:-1;;;;;18586:522:1:o;19113:519::-;19390:2;19379:9;19372:21;19353:4;19416:73;19485:2;19474:9;19470:18;19462:6;19454;19416:73;:::i;:::-;19537:9;19529:6;19525:22;19520:2;19509:9;19505:18;19498:50;19565:61;19619:6;19611;19603;19565:61;:::i;:::-;19557:69;19113:519;-1:-1:-1;;;;;;;19113:519:1:o;19637:184::-;19707:6;19760:2;19748:9;19739:7;19735:23;19731:32;19728:52;;;19776:1;19773;19766:12;19728:52;-1:-1:-1;19799:16:1;;19637:184;-1:-1:-1;19637:184:1:o;20250:425::-;20452:2;20434:21;;;20491:2;20471:18;;;20464:30;20530:34;20525:2;20510:18;;20503:62;20601:31;20596:2;20581:18;;20574:59;20665:3;20650:19;;20250:425::o;20680:274::-;-1:-1:-1;;;;;20872:32:1;;;;20854:51;;20936:2;20921:18;;20914:34;20842:2;20827:18;;20680:274::o;21721:304::-;-1:-1:-1;;;;;21951:15:1;;;21933:34;;22003:15;;21998:2;21983:18;;21976:43;21883:2;21868:18;;21721:304::o;22380:128::-;22420:3;22451:1;22447:6;22444:1;22441:13;22438:39;;;22457:18;;:::i;:::-;-1:-1:-1;22493:9:1;;22380:128::o;22513:497::-;22567:5;22620:3;22613:4;22605:6;22601:17;22597:27;22587:55;;22638:1;22635;22628:12;22587:55;22667:6;22661:13;-1:-1:-1;;;;;22689:2:1;22686:26;22683:52;;;22715:18;;:::i;:::-;22759:55;22802:2;22783:13;;-1:-1:-1;;22779:27:1;22808:4;22775:38;22759:55;:::i;:::-;22839:2;22830:7;22823:19;22885:3;22878:4;22873:2;22865:6;22861:15;22857:26;22854:35;22851:55;;;22902:1;22899;22892:12;22851:55;22915:64;22976:2;22969:4;22960:7;22956:18;22949:4;22941:6;22937:17;22915:64;:::i;23015:1176::-;23171:6;23179;23187;23195;23203;23256:3;23244:9;23235:7;23231:23;23227:33;23224:53;;;23273:1;23270;23263:12;23224:53;23306:9;23300:16;-1:-1:-1;;;;;23376:2:1;23368:6;23365:14;23362:34;;;23392:1;23389;23382:12;23362:34;23415:61;23468:7;23459:6;23448:9;23444:22;23415:61;:::i;:::-;23405:71;;23522:2;23511:9;23507:18;23501:25;23485:41;;23551:2;23541:8;23538:16;23535:36;;;23567:1;23564;23557:12;23535:36;23590:63;23645:7;23634:8;23623:9;23619:24;23590:63;:::i;:::-;23580:73;;23699:2;23688:9;23684:18;23678:25;23662:41;;23728:2;23718:8;23715:16;23712:36;;;23744:1;23741;23734:12;23712:36;23767:63;23822:7;23811:8;23800:9;23796:24;23767:63;:::i;:::-;23757:73;;23876:2;23865:9;23861:18;23855:25;23839:41;;23905:2;23895:8;23892:16;23889:36;;;23921:1;23918;23911:12;23889:36;23944:63;23999:7;23988:8;23977:9;23973:24;23944:63;:::i;:::-;23934:73;;24053:3;24042:9;24038:19;24032:26;24016:42;;24083:2;24073:8;24070:16;24067:36;;;24099:1;24096;24089:12;24067:36;;24122:63;24177:7;24166:8;24155:9;24151:24;24122:63;:::i;:::-;24112:73;;;23015:1176;;;;;;;;:::o;26665:251::-;26735:6;26788:2;26776:9;26767:7;26763:23;26759:32;26756:52;;;26804:1;26801;26794:12;26756:52;26836:9;26830:16;26855:31;26880:5;26855:31;:::i;26921:337::-;27001:6;27054:2;27042:9;27033:7;27029:23;27025:32;27022:52;;;27070:1;27067;27060:12;27022:52;27103:9;27097:16;-1:-1:-1;;;;;27128:6:1;27125:30;27122:50;;;27168:1;27165;27158:12;27122:50;27191:61;27244:7;27235:6;27224:9;27220:22;27191:61;:::i;27263:224::-;27302:3;27330:6;27363:2;27360:1;27356:10;27393:2;27390:1;27386:10;27424:3;27420:2;27416:12;27411:3;27408:21;27405:47;;;27432:18;;:::i;:::-;27468:13;;27263:224;-1:-1:-1;;;;27263:224:1:o;27900:513::-;27985:6;27993;28001;28054:2;28042:9;28033:7;28029:23;28025:32;28022:52;;;28070:1;28067;28060:12;28022:52;28102:9;28096:16;28121:28;28143:5;28121:28;:::i;:::-;28218:2;28203:18;;28197:25;28168:5;;-1:-1:-1;28231:33:1;28197:25;28231:33;:::i;:::-;28335:2;28320:18;;28314:25;28283:7;;-1:-1:-1;28348:33:1;28314:25;28348:33;:::i;28418:245::-;28485:6;28538:2;28526:9;28517:7;28513:23;28509:32;28506:52;;;28554:1;28551;28544:12;28506:52;28586:9;28580:16;28605:28;28627:5;28605:28;:::i;32655:980::-;32917:4;32965:3;32954:9;32950:19;32996:6;32985:9;32978:25;33022:2;33060:6;33055:2;33044:9;33040:18;33033:34;33103:3;33098:2;33087:9;33083:18;33076:31;33127:6;33162;33156:13;33193:6;33185;33178:22;33231:3;33220:9;33216:19;33209:26;;33270:2;33262:6;33258:15;33244:29;;33291:1;33301:195;33315:6;33312:1;33309:13;33301:195;;;33380:13;;-1:-1:-1;;;;;33376:39:1;33364:52;;33471:15;;;;33436:12;;;;33412:1;33330:9;33301:195;;;-1:-1:-1;;;;;;;33552:32:1;;;;33547:2;33532:18;;33525:60;-1:-1:-1;;;33616:3:1;33601:19;33594:35;33513:3;32655:980;-1:-1:-1;;;32655:980:1:o;34252:306::-;34340:6;34348;34356;34409:2;34397:9;34388:7;34384:23;34380:32;34377:52;;;34425:1;34422;34415:12;34377:52;34454:9;34448:16;34438:26;;34504:2;34493:9;34489:18;34483:25;34473:35;;34548:2;34537:9;34533:18;34527:25;34517:35;;34252:306;;;;;:::o;34563:217::-;34602:4;34631:6;34687:10;;;;34657;;34709:12;;;34706:38;;;34724:18;;:::i;:::-;34761:13;;34563:217;-1:-1:-1;;;34563:217:1:o

Swarm Source

ipfs://ef0445cd3382f163eb5430f2e5ab71ad8b85e2dc9be718d2faef3130b5a1ce4f

Block Transaction Gas Used Reward
view all blocks ##produced##

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

Validator Index Block Amount
View All Withdrawals

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