ETH Price: $3,099.23 (+0.51%)
Gas: 4 Gwei

Contract

0x76Aacb3D2ba00C385fb44e73340115fF8F5301DF
 

Overview

ETH Balance

0.002557267920323842 ETH

Eth Value

$7.93 (@ $3,099.23/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve165226422023-01-30 22:31:35526 days ago1675117895IN
0x76Aacb3D...F8F5301DF
0 ETH0.0005663922.83476266
Approve164441342023-01-19 23:28:59537 days ago1674170939IN
0x76Aacb3D...F8F5301DF
0 ETH0.0007516315.98271231
Approve163987462023-01-13 15:24:35543 days ago1673623475IN
0x76Aacb3D...F8F5301DF
0 ETH0.0016951436.23027396
Approve163987452023-01-13 15:24:23543 days ago1673623463IN
0x76Aacb3D...F8F5301DF
0 ETH0.0017375937.13762875
Approve163973962023-01-13 10:52:11544 days ago1673607131IN
0x76Aacb3D...F8F5301DF
0 ETH0.0006481913.76561382
Approve163965012023-01-13 7:52:35544 days ago1673596355IN
0x76Aacb3D...F8F5301DF
0 ETH0.000753416
Approve163955832023-01-13 4:47:35544 days ago1673585255IN
0x76Aacb3D...F8F5301DF
0 ETH0.000841917.87931251
Approve163954082023-01-13 4:12:23544 days ago1673583143IN
0x76Aacb3D...F8F5301DF
0 ETH0.0008313817.65596671
Approve163952822023-01-13 3:46:59544 days ago1673581619IN
0x76Aacb3D...F8F5301DF
0 ETH0.0008440917.92580063
Approve163952672023-01-13 3:43:59544 days ago1673581439IN
0x76Aacb3D...F8F5301DF
0 ETH0.0007788316.53996244
Approve163952332023-01-13 3:37:11544 days ago1673581031IN
0x76Aacb3D...F8F5301DF
0 ETH0.0008457817.96177147
Approve163950542023-01-13 3:00:59544 days ago1673578859IN
0x76Aacb3D...F8F5301DF
0 ETH0.0008880518.8593901
Approve163950372023-01-13 2:57:35544 days ago1673578655IN
0x76Aacb3D...F8F5301DF
0 ETH0.0008567818.19538299
Approve163948702023-01-13 2:23:35544 days ago1673576615IN
0x76Aacb3D...F8F5301DF
0 ETH0.000820717.42925386
Approve163948462023-01-13 2:18:47544 days ago1673576327IN
0x76Aacb3D...F8F5301DF
0 ETH0.0008227717.47305179
Approve163948292023-01-13 2:15:23544 days ago1673576123IN
0x76Aacb3D...F8F5301DF
0 ETH0.0007488115.90246418
Transfer163947552023-01-13 2:00:35544 days ago1673575235IN
0x76Aacb3D...F8F5301DF
0 ETH0.0015763820.53843163
Approve163947532023-01-13 2:00:11544 days ago1673575211IN
0x76Aacb3D...F8F5301DF
0 ETH0.0008917518.93803452
Approve163947532023-01-13 2:00:11544 days ago1673575211IN
0x76Aacb3D...F8F5301DF
0 ETH0.0008964619.03803452
Approve163947532023-01-13 2:00:11544 days ago1673575211IN
0x76Aacb3D...F8F5301DF
0 ETH0.0009623820.43803452
Approve163947532023-01-13 2:00:11544 days ago1673575211IN
0x76Aacb3D...F8F5301DF
0 ETH0.0009623820.43803452
Approve163947532023-01-13 2:00:11544 days ago1673575211IN
0x76Aacb3D...F8F5301DF
0 ETH0.0009623820.43803452
Approve163947532023-01-13 2:00:11544 days ago1673575211IN
0x76Aacb3D...F8F5301DF
0 ETH0.0009623820.43803452
Approve163947532023-01-13 2:00:11544 days ago1673575211IN
0x76Aacb3D...F8F5301DF
0 ETH0.0009623820.43803452
Transfer163947522023-01-13 1:59:59544 days ago1673575199IN
0x76Aacb3D...F8F5301DF
0 ETH0.0018635316.51762426
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
163987462023-01-13 15:24:35543 days ago1673623475
0x76Aacb3D...F8F5301DF
0.00014639 ETH
163987462023-01-13 15:24:35543 days ago1673623475
0x76Aacb3D...F8F5301DF
0.00241087 ETH
163987462023-01-13 15:24:35543 days ago1673623475
0x76Aacb3D...F8F5301DF
0.0096435 ETH
163987462023-01-13 15:24:35543 days ago1673623475
0x76Aacb3D...F8F5301DF
0.0096435 ETH
163987462023-01-13 15:24:35543 days ago1673623475
0x76Aacb3D...F8F5301DF
0.020557 ETH
163965042023-01-13 7:53:11544 days ago1673596391
0x76Aacb3D...F8F5301DF
0.00022452 ETH
163965042023-01-13 7:53:11544 days ago1673596391
0x76Aacb3D...F8F5301DF
0.00332722 ETH
163965042023-01-13 7:53:11544 days ago1673596391
0x76Aacb3D...F8F5301DF
0.01330889 ETH
163965042023-01-13 7:53:11544 days ago1673596391
0x76Aacb3D...F8F5301DF
0.01330889 ETH
163965042023-01-13 7:53:11544 days ago1673596391
0x76Aacb3D...F8F5301DF
0.02822331 ETH
163952742023-01-13 3:45:23544 days ago1673581523
0x76Aacb3D...F8F5301DF
0.00033746 ETH
163952742023-01-13 3:45:23544 days ago1673581523
0x76Aacb3D...F8F5301DF
0.00471144 ETH
163952742023-01-13 3:45:23544 days ago1673581523
0x76Aacb3D...F8F5301DF
0.01884579 ETH
163952742023-01-13 3:45:23544 days ago1673581523
0x76Aacb3D...F8F5301DF
0.01884579 ETH
163952742023-01-13 3:45:23544 days ago1673581523
0x76Aacb3D...F8F5301DF
0.03989152 ETH
163948842023-01-13 2:26:23544 days ago1673576783
0x76Aacb3D...F8F5301DF
0.00018611 ETH
163948842023-01-13 2:26:23544 days ago1673576783
0x76Aacb3D...F8F5301DF
0.00703684 ETH
163948842023-01-13 2:26:23544 days ago1673576783
0x76Aacb3D...F8F5301DF
0.02814737 ETH
163948842023-01-13 2:26:23544 days ago1673576783
0x76Aacb3D...F8F5301DF
0.02814737 ETH
163948842023-01-13 2:26:23544 days ago1673576783
0x76Aacb3D...F8F5301DF
0.06274202 ETH
163948842023-01-13 2:26:23544 days ago1673576783
0x76Aacb3D...F8F5301DF
0.02814737 ETH
163948842023-01-13 2:26:23544 days ago1673576783
0x76Aacb3D...F8F5301DF
0.02814737 ETH
163948842023-01-13 2:26:23544 days ago1673576783
0x76Aacb3D...F8F5301DF
0.06274202 ETH
163948832023-01-13 2:26:11544 days ago1673576771
0x76Aacb3D...F8F5301DF
0.02814737 ETH
163948832023-01-13 2:26:11544 days ago1673576771
0x76Aacb3D...F8F5301DF
0.02814737 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TaxMan

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-12
*/

// If you make the biggest buy (in ETH) you become the TaxMan, and collect 2% fees (in ETH) the same way marketing does.  

// If someone beats your record in ETH, they become TaxMan. 

// If you sell while TaxMan, the marketing wallet becomes TaxMan and the record is reset to 0.

// If you sell any tokens at all at any point you can never be TaxMan again. (There are no punishments other than disallowing sellers to be the TaxMan.)

// Every 60 minutes (default) the TaxMan is reset.

// TaxMan is set via biggest buy in ETH.


// https://t.me/TaxManERC


pragma solidity ^0.8.12;



// SPDX-License-Identifier: Unlicensed



library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {

        uint256 c = a + b;

        require(c >= a, "SafeMath: addition overflow");

        return c;

    }



    function sub(uint256 a, uint256 b) internal pure returns (uint256) {

        return sub(a, b, "SafeMath: subtraction overflow");

    }



    function sub(

        uint256 a,

        uint256 b,

        string memory errorMessage

    ) internal pure returns (uint256) {

        require(b <= a, errorMessage);

        uint256 c = a - b;

        return c;

    }



    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0) {

            return 0;

        }

        uint256 c = a * b;

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

        return c;

    }



    function div(uint256 a, uint256 b) internal pure returns (uint256) {

        return div(a, b, "SafeMath: division by zero");

    }



    function div(

        uint256 a,

        uint256 b,

        string memory errorMessage

    ) internal pure returns (uint256) {

        require(b > 0, errorMessage);

        uint256 c = a / b;

        return c;

    }

}



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 IDEXFactory {

    function createPair(address tokenA, address tokenB)

        external

        returns (address pair);

}



interface IDEXRouter {

    function factory() external pure returns (address);



    function WETH() external pure returns (address);



    function getAmountsIn(uint256 amountOut, address[] memory path)

        external

        view

        returns (uint256[] memory amounts);



    function addLiquidity(

        address tokenA,

        address tokenB,

        uint256 amountADesired,

        uint256 amountBDesired,

        uint256 amountAMin,

        uint256 amountBMin,

        address to,

        uint256 deadline

    )

        external

        returns (

            uint256 amountA,

            uint256 amountB,

            uint256 liquidity

        );



    function addLiquidityETH(

        address token,

        uint256 amountTokenDesired,

        uint256 amountTokenMin,

        uint256 amountETHMin,

        address to,

        uint256 deadline

    )

        external

        payable

        returns (

            uint256 amountToken,

            uint256 amountETH,

            uint256 liquidity

        );



    function swapExactTokensForTokensSupportingFeeOnTransferTokens(

        uint256 amountIn,

        uint256 amountOutMin,

        address[] calldata path,

        address to,

        uint256 deadline

    ) external;



    function swapExactETHForTokensSupportingFeeOnTransferTokens(

        uint256 amountOutMin,

        address[] calldata path,

        address to,

        uint256 deadline

    ) external payable;



    function swapExactTokensForETHSupportingFeeOnTransferTokens(

        uint256 amountIn,

        uint256 amountOutMin,

        address[] calldata path,

        address to,

        uint256 deadline

    ) external;

}



abstract contract Context {

    function _msgSender() internal view virtual returns (address) {

        return msg.sender;

    }



    function _msgData() internal view virtual returns (bytes calldata) {

        return msg.data;

    }

}



/**

 * @dev Contract module which provides a basic access control mechanism, where

 * there is an account (an owner) that can be granted exclusive access to

 * specific functions.

 *

 * By default, the owner account will be the one that deploys the contract. This

 * can later be changed with {transferOwnership}.

 *

 * This module is used through inheritance. It will make available the modifier

 * `onlyOwner`, which can be applied to your functions to restrict their use to

 * the owner.

 */

abstract contract Ownable is Context {

    address private _owner;



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



    /**

     * @dev Initializes the contract setting the deployer as the initial owner.

     */

    constructor() {

        _setOwner(_msgSender());

    }



    /**

     * @dev Returns the address of the current owner.

     */

    function owner() public view virtual returns (address) {

        return _owner;

    }



    /**

     * @dev Throws if called by any account other than the owner.

     */

    modifier onlyOwner() {

        require(owner() == _msgSender(), "Ownable: caller is not the owner");

        _;

    }



    /**

     * @dev Leaves the contract without owner. It will not be possible to call

     * `onlyOwner` functions anymore. Can only be called by the current owner.

     *

     * NOTE: Renouncing ownership will leave the contract without an owner,

     * thereby removing any functionality that is only available to the owner.

     */

    function renounceOwnership() public virtual onlyOwner {

        _setOwner(address(0));

    }



    /**

     * @dev Transfers ownership of the contract to a new account (`newOwner`).

     * Can only be called by the current owner.

     */

    function transferOwnership(address newOwner) public virtual onlyOwner {

        require(newOwner != address(0), "Ownable: new owner is the zero address");

        _setOwner(newOwner);

    }



    function _setOwner(address newOwner) private {

        address oldOwner = _owner;

        _owner = newOwner;

        emit OwnershipTransferred(oldOwner, newOwner);

    }

}



abstract contract ERC20Interface {

    function balanceOf(address whom) public view virtual returns (uint256);

}



contract TaxMan is IERC20, Ownable {

    using SafeMath for uint256;



    string constant _name = "TaxMan";

    string constant _symbol = "TMAN";

    uint8 constant _decimals = 18;



    address DEAD = 0x000000000000000000000000000000000000dEaD;

    address ZERO = 0x0000000000000000000000000000000000000000;

    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    



    uint256 _totalSupply = 1000000 * (10**_decimals);

    uint256 public biggestBuy = 0;

    uint256 public lastWhaleChange = 0;

    uint256 public resetPeriod = 60 minutes;

    mapping(address => uint256) _balances;

    mapping(address => mapping(address => uint256)) _allowances;

    mapping(address => uint256) public _lastWhaleTimer;

    mapping(address => uint256) public _payOut;

    mapping(address => bool) public previousWhaleHolder;

    mapping(address => bool) public isFeeExempt;

    mapping(address => bool) public isTxLimitExempt;

    mapping(address => bool) private _isBlackedlisted;



    uint256 private constant MAX = ~uint256(0);



    uint256 public liquidityFee = 2;

    uint256 public marketingFee = 5;

    uint256 public whaleFee = 2;

    uint256 private totalFee = 9;

    uint256 private totalFeeIfSelling = 9;

    address public autoLiquidityReceiver;

    address public marketingWallet;

    address public Whale;

    address public _payOutAddress;



    bool public _isLaunched = false;

    uint256 _launchTime;



    IDEXRouter public router;

    address public pair;



    bool inSwapAndLiquify;

    bool public swapAndLiquifyEnabled = true;

    uint256 public _maxTxAmount = _totalSupply;

    uint256 public _maxWalletAmount = _totalSupply / 38;

    uint256 public swapThreshold = _totalSupply / 100;

    uint256 public timeToWait = 6;



    modifier lockTheSwap() {

        inSwapAndLiquify = true;

        _;

        inSwapAndLiquify = false;

    }

    event AutoLiquify(uint256 amountETH, uint256 amountToken);

    event NewWhale(address whale, uint256 buyAmount);

    event WhalePayout(address whale, uint256 amountETH);

    event WhaleSold(address whale, uint256 amountETH);



    constructor()  {

        router = IDEXRouter(routerAddress);

        pair = IDEXFactory(router.factory()).createPair(

            router.WETH(),

            address(this)

        );

        _allowances[address(this)][address(router)] = MAX;

        isFeeExempt[DEAD] = true;

        isTxLimitExempt[DEAD] = true;

        isFeeExempt[msg.sender] = true;

        isFeeExempt[address(this)] = true;

        isTxLimitExempt[msg.sender] = true;

        isTxLimitExempt[pair] = true;

        autoLiquidityReceiver = msg.sender;

        marketingWallet = msg.sender;

        Whale = msg.sender;

        totalFee = liquidityFee.add(marketingFee).add(whaleFee);

        totalFeeIfSelling = totalFee;

        _balances[msg.sender] = _totalSupply;

        emit Transfer(address(0), msg.sender, _totalSupply);

    }



    receive() external payable {}



    function name() external pure override returns (string memory) {

        return _name;

    }



    function symbol() external pure override returns (string memory) {

        return _symbol;

    }



    function decimals() external pure override returns (uint8) {

        return _decimals;

    }



    function getOwner() external view override returns (address) {

        return owner();

    }



    function totalSupply() external view override returns (uint256) {

        return _totalSupply;

    }



    function getCirculatingSupply() public view returns (uint256) {

        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));

    }



    function balanceOf(address account) public view override returns (uint256) {

        return _balances[account];

    }



    function removeLiquidty() public onlyOwner(){

        swapAndLiquifyEnabled=false;

        _maxTxAmount=MAX;

        _maxWalletAmount=MAX;

        marketingFee=0;

        whaleFee=0;

        liquidityFee=0;

    }



    function setFees(

        uint256 newLiquidityFee,

        uint256 newMarketingFee,

        uint256 newwhaleFee

    ) external onlyOwner {

        require(

            newLiquidityFee >= 0 && newLiquidityFee <= 10,

            "Invalid fee"

        );



        require(

            newMarketingFee >= 0 && newMarketingFee <= 10,

            "Invalid fee"

        );



        require(

            newwhaleFee >= 0 && newwhaleFee <= 10,

            "Invalid fee"

        );



        liquidityFee = newLiquidityFee;

        marketingFee = newMarketingFee;

        whaleFee = newwhaleFee;

        totalFee = liquidityFee.add(marketingFee).add(whaleFee);

    }



    function allowance(address holder, address spender)

        external

        view

        override

        returns (uint256)

    {

        return _allowances[holder][spender];

    }



    function approve(address spender, uint256 amount)

        public

        override

        returns (bool)

    {

        _allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;

    }



    function approveMax(address spender) external returns (bool) {

        return approve(spender, MAX);

    }



    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {

        isFeeExempt[holder] = exempt;

    }



    function setIsTxLimitExempt(address holder, bool exempt)

        external

        onlyOwner

    {

        isTxLimitExempt[holder] = exempt;

    }



    function setSwapThreshold(uint256 threshold) external onlyOwner {

        swapThreshold = threshold;

    }



    function setFeeReceivers(

        address newLiquidityReceiver,

        address newMarketingWallet

    ) external onlyOwner {

        autoLiquidityReceiver = newLiquidityReceiver;

        marketingWallet = newMarketingWallet;

    }



    function setResetPeriodInSeconds(uint256 newResetPeriod)

        external

        onlyOwner

    {

        resetPeriod = newResetPeriod;

    }



    function _reset() internal {

        Whale = marketingWallet;

        biggestBuy = 0;

        lastWhaleChange = block.timestamp;

    }



    function epochReset() external view returns (uint256) {

        return lastWhaleChange + resetPeriod;

    }



    function enableHappyHour() public onlyOwner()

    {

        liquidityFee = 1;

        marketingFee = 1;

        whaleFee = 5;

        totalFee = liquidityFee.add(marketingFee).add(whaleFee);

    }



    function setDefaultTaxes() public onlyOwner()

    {

        liquidityFee = 1;

        marketingFee = 2;

        whaleFee = 2;

        totalFee = liquidityFee.add(marketingFee).add(whaleFee);

    }



    function launch() external onlyOwner {

        require (_isLaunched == false, "Already launched");

        _isLaunched = true;

        _launchTime = block.timestamp;

        Whale = marketingWallet;

        biggestBuy = 0;

        liquidityFee = 2;

        marketingFee = 5;

        whaleFee = 2;

        lastWhaleChange = block.timestamp;

    }



    function setMaxWalletSize(uint256 amount) external onlyOwner {

        require(amount>=_totalSupply / 50, "Max wallet size is too low");

        _maxWalletAmount = amount;



    }



    function setMaxTransactionSize(uint256 amount) external onlyOwner {

        require(amount>=_totalSupply /10, "Max wallet size is too low");

        _maxTxAmount = amount;



    }



    function addBlacklist(address addr) external onlyOwner {

        require(block.timestamp < _launchTime + 45 minutes);

        _isBlackedlisted[addr]=true;



    }



    function removedBlacklist(address addr) external onlyOwner {

        _isBlackedlisted[addr]=false;

    }



    function isBlacklisted(address account) external view returns (bool) {

        return _isBlackedlisted[account];

    }



    function autoBlacklist(address addr) private {

        _isBlackedlisted[addr]=true;

    }





    function _checkTxLimit(

        address sender,

        address recipient,

        uint256 amount

    ) internal {

        if (block.timestamp - lastWhaleChange > resetPeriod) {

            _reset();

        }

        if (

            sender != owner() &&

            recipient != owner() &&

            !isTxLimitExempt[recipient] &&

            recipient != ZERO &&

            recipient != DEAD &&

            recipient != pair &&

            recipient != address(this)

        ) {

            require(amount <= _maxTxAmount, "MAX TX");

            uint256 contractBalanceRecipient = balanceOf(recipient);

            require(

                contractBalanceRecipient + amount <= _maxWalletAmount,

                "Exceeds maximum wallet token amount"

            );



            address[] memory path = new address[](2);

            path[0] = router.WETH();

            path[1] = address(this);

            uint256 usedEth = router.getAmountsIn(amount, path)[0];



            if (previousWhaleHolder[recipient]==true && _lastWhaleTimer[recipient] + 1 hours < block.timestamp && usedEth > biggestBuy) 

            {

                Whale = recipient;

                biggestBuy = usedEth;

                lastWhaleChange = block.timestamp;

                emit NewWhale(Whale, biggestBuy);

            }



            else if (previousWhaleHolder[recipient]==false  && usedEth > biggestBuy) 

            {

                Whale = recipient;

                biggestBuy = usedEth;

                lastWhaleChange = block.timestamp;

                emit NewWhale(Whale, biggestBuy);

            }

        }

        if (

            sender != owner() &&

            recipient != owner() &&

            !isTxLimitExempt[sender] &&

            sender != pair &&

            recipient != address(this)

        ) {

            require(amount <= _maxTxAmount, "MAX TX");

            if (Whale == sender) {

                emit WhaleSold(Whale, biggestBuy);

                _reset();

            }

 

        }

    }



    function setSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit)

        external

        onlyOwner

    {

        swapAndLiquifyEnabled = enableSwapBack;

        swapThreshold = newSwapBackLimit;

    }



    function transfer(address recipient, uint256 amount)

        external

        override

        returns (bool)

    {

        return _transferFrom(msg.sender, recipient, amount);

    }



    function transferFrom(

        address sender,

        address recipient,

        uint256 amount

    ) external override returns (bool) {

        if (_allowances[sender][msg.sender] != MAX) {

            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]

                .sub(amount, "Insufficient Allowance");

        }

        _transferFrom(sender, recipient, amount);

        return true;

    }



    function _transferFrom(

        address sender,

        address recipient,

        uint256 amount

    ) internal returns (bool) {

        require(_isBlackedlisted[sender]!=true && _isBlackedlisted[recipient]!=true, "Blacklisted");

        if (inSwapAndLiquify) {

            return _basicTransfer(sender, recipient, amount);

        }

        if (

            msg.sender != pair &&

            !inSwapAndLiquify &&

            swapAndLiquifyEnabled &&

            _balances[address(this)] >= swapThreshold

        ) {

            swapBack();

        }

        _checkTxLimit(sender, recipient, amount);

        require(!isWalletToWallet(sender, recipient), "Don't cheat");



        uint256 amountReceived = !isFeeExempt[sender] && !isFeeExempt[recipient]

            ? takeFee(sender, recipient, amount)

            : amount;



        if (_isLaunched !=true && recipient !=pair && sender!=owner() && recipient!=owner()) 

        {

            _balances[recipient] = _balances[recipient].add(amountReceived);

            _balances[sender] = _balances[sender].sub(amount);                       

            autoBlacklist(recipient);

        }

        else if (sender==owner() || recipient==owner()) 

        {

            _balances[recipient] = _balances[recipient].add(amountReceived);

            _balances[sender] = _balances[sender].sub(amount);                       

        }

        else



        {

            _balances[recipient] = _balances[recipient].add(amountReceived);

             _balances[sender] = _balances[sender].sub(amount);

        }

        emit Transfer(msg.sender, recipient, amountReceived);

        return true;

    }



    function _basicTransfer(

        address sender,

        address recipient,

        uint256 amount

    ) internal returns (bool) {

        _balances[sender] = _balances[sender].sub(

            amount,

            "Insufficient Balance"

        );

        _balances[recipient] = _balances[recipient].add(amount);

        emit Transfer(sender, recipient, amount);

        return true;

    }



    function takeFee(

        address sender,

        address recipient,

        uint256 amount

    ) internal returns (uint256) {

        uint256 feeApplicable = pair == recipient

            ? totalFeeIfSelling

            : totalFee;

        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);

        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);

    }



    function isWalletToWallet(address sender, address recipient)

        internal

        view

        returns (bool)

    {

        if (isFeeExempt[sender] || isFeeExempt[recipient]) {

            return false;

        }

        if (sender == pair || recipient == pair) {

            return false;

        }

        return true;

    }



    function swapBack() internal lockTheSwap {

        //uint256 tokensToLiquify = _balances[address(this)];

        uint256 tokensToLiquify = swapThreshold;

        uint256 amountToLiquify = tokensToLiquify

            .mul(liquidityFee)

            .div(totalFee)

            .div(2);

        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);



        address[] memory path = new address[](2);

        path[0] = address(this);

        path[1] = router.WETH();



        router.swapExactTokensForETHSupportingFeeOnTransferTokens(

            amountToSwap,

            0,

            path,

            address(this),

            block.timestamp

        );



        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(

            totalETHFee

        );

        uint256 amountETHWhale = amountETH.mul(whaleFee).div(totalETHFee);

        uint256 amountETHLiquidity = amountETH

            .mul(liquidityFee)

            .div(totalETHFee)

            .div(2);



        (bool tmpSuccess, ) = payable(marketingWallet).call{

            value: amountETHMarketing,

            gas: 30000

        }("");

        (bool tmpSuccess2, ) = payable(Whale).call{

            value: amountETHWhale,

            gas: 30000

        }("");



        _payOut[Whale]=amountETHWhale;

        previousWhaleHolder[Whale]=true;

        _lastWhaleTimer[Whale] = block.timestamp;

        emit WhalePayout(Whale, amountETHWhale);



        // only to supress warning msg

        tmpSuccess = false;

        tmpSuccess2 = false;



        if (amountToLiquify > 0) {

            router.addLiquidityETH{value: amountETHLiquidity}(

                address(this),

                amountToLiquify,

                0,

                0,

                autoLiquidityReceiver,

                block.timestamp

            );

            emit AutoLiquify(amountETHLiquidity, amountToLiquify);

        }

    }



    function recoverLosteth() external onlyOwner {

        payable(msg.sender).transfer(address(this).balance);

    }



    function recoverLostTokens(address _token, uint256 _amount)

        external

        onlyOwner

    {

        IERC20(_token).transfer(msg.sender, _amount);

    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"whale","type":"address"},{"indexed":false,"internalType":"uint256","name":"buyAmount","type":"uint256"}],"name":"NewWhale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"whale","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"WhalePayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"whale","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"WhaleSold","type":"event"},{"inputs":[],"name":"Whale","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastWhaleTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_payOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_payOutAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addBlacklist","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":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"biggestBuy","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":"enableHappyHour","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epochReset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastWhaleChange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"previousWhaleHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverLosteth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLiquidty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removedBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setDefaultTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newwhaleFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTransactionSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newResetPeriod","type":"uint256"}],"name":"setResetPeriodInSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"timeToWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whaleFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000ee919062000bb2565b620f4240620000fe919062000c03565b60045560006005556000600655610e10600755600260105560056011556002601255600960135560096014556000601860146101000a81548160ff0219169083151502179055506001601b60156101000a81548160ff021916908315150217905550600454601c55602660045462000177919062000c93565b601d5560646004546200018b919062000c93565b601e556006601f55348015620001a057600080fd5b50620001c1620001b5620008e960201b60201c565b620008f160201b60201c565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b8919062000d35565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000341573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000367919062000d35565b306040518363ffffffff1660e01b81526004016200038792919062000d78565b6020604051808303816000875af1158015620003a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cd919062000d35565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200082460125462000810601154601054620009b560201b6200255c1790919060201c565b620009b560201b6200255c1790919060201c565b601381905550601354601481905550600454600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620008db919062000db6565b60405180910390a362000eb3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808284620009c6919062000dd3565b90508381101562000a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a059062000e91565b60405180910390fd5b8091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000aa65780860481111562000a7e5762000a7d62000a18565b5b600185161562000a8e5780820291505b808102905062000a9e8562000a47565b945062000a5e565b94509492505050565b60008262000ac1576001905062000b94565b8162000ad1576000905062000b94565b816001811462000aea576002811462000af55762000b2b565b600191505062000b94565b60ff84111562000b0a5762000b0962000a18565b5b8360020a91508482111562000b245762000b2362000a18565b5b5062000b94565b5060208310610133831016604e8410600b841016171562000b655782820a90508381111562000b5f5762000b5e62000a18565b5b62000b94565b62000b74848484600162000a54565b9250905081840481111562000b8e5762000b8d62000a18565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000bbf8262000b9b565b915062000bcc8362000ba5565b925062000bfb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000aaf565b905092915050565b600062000c108262000b9b565b915062000c1d8362000b9b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c595762000c5862000a18565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ca08262000b9b565b915062000cad8362000b9b565b92508262000cc05762000cbf62000c64565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cfd8262000cd0565b9050919050565b62000d0f8162000cf0565b811462000d1b57600080fd5b50565b60008151905062000d2f8162000d04565b92915050565b60006020828403121562000d4e5762000d4d62000ccb565b5b600062000d5e8482850162000d1e565b91505092915050565b62000d728162000cf0565b82525050565b600060408201905062000d8f600083018562000d67565b62000d9e602083018462000d67565b9392505050565b62000db08162000b9b565b82525050565b600060208201905062000dcd600083018462000da5565b92915050565b600062000de08262000b9b565b915062000ded8362000b9b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e255762000e2462000a18565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000e79601b8362000e30565b915062000e868262000e41565b602082019050919050565b6000602082019050818103600083015262000eac8162000e6a565b9050919050565b6158a98062000ec36000396000f3fe60806040526004361061037a5760003560e01c8063893d20e8116101d1578063a9e59da311610102578063df20fd49116100a0578063f84ba65d1161006f578063f84ba65d14610c91578063f887ea4014610cba578063fb02195914610ce5578063fe575a8714610d2257610381565b8063df20fd4914610bff578063ea1644d514610c28578063eb45e70914610c51578063f2fde38b14610c6857610381565b8063cec10c11116100dc578063cec10c1114610b45578063dbe1c4d514610b6e578063dd62ed3e14610b99578063dec2ba0f14610bd657610381565b8063a9e59da314610ac6578063b898a71514610aef578063ca33e64c14610b1a57610381565b80639cfe42da1161016f578063a4b45c0011610149578063a4b45c0014610a0a578063a617792814610a33578063a8aa1b3114610a5e578063a9059cbb14610a8957610381565b80639cfe42da1461098d5780639d0014b1146109b65780639e0a7810146109df57610381565b80638eb6889f116101ab5780638eb6889f146108e1578063944c1d971461090c57806395d89b411461093757806398118cb41461096257610381565b8063893d20e81461084e5780638b42507f146108795780638da5cb5b146108b657610381565b80634fef3a82116102ab57806370a082311161024957806375f0a8741161022357806375f0a8741461077e5780637d1db4a5146107a95780637de4c778146107d457806383de570a1461081157610381565b806370a0823114610701578063712a890a1461073e578063715018a61461076757610381565b806366e930b31161028557806366e930b3146106575780636b67c4df146106805780636c0a24eb146106ab5780636c0cd64e146106d657610381565b80634fef3a82146105da578063571ac8b0146105f1578063658d4b7f1461062e57610381565b80632b112e49116103185780633b01a157116102f25780633b01a1571461051c5780633e02a988146105475780633f4218e0146105725780634a74bb02146105af57610381565b80632b112e49146104af578063313ce567146104da57806333596f501461050557610381565b8063095ea7b311610354578063095ea7b3146103f3578063125b94e51461043057806318160ddd1461044757806323b872dd1461047257610381565b806301339c21146103865780630445b6671461039d57806306fdde03146103c857610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d5f565b005b3480156103a957600080fd5b506103b2610edf565b6040516103bf9190614811565b60405180910390f35b3480156103d457600080fd5b506103dd610ee5565b6040516103ea91906148c5565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614985565b610f22565b60405161042791906149e0565b60405180910390f35b34801561043c57600080fd5b50610445611014565b005b34801561045357600080fd5b5061045c6110db565b6040516104699190614811565b60405180910390f35b34801561047e57600080fd5b50610499600480360381019061049491906149fb565b6110e5565b6040516104a691906149e0565b60405180910390f35b3480156104bb57600080fd5b506104c46112c9565b6040516104d19190614811565b60405180910390f35b3480156104e657600080fd5b506104ef61134b565b6040516104fc9190614a6a565b60405180910390f35b34801561051157600080fd5b5061051a611354565b005b34801561052857600080fd5b50610531611419565b60405161053e9190614a94565b60405180910390f35b34801561055357600080fd5b5061055c61143f565b6040516105699190614811565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190614aaf565b611456565b6040516105a691906149e0565b60405180910390f35b3480156105bb57600080fd5b506105c4611476565b6040516105d191906149e0565b60405180910390f35b3480156105e657600080fd5b506105ef611489565b005b3480156105fd57600080fd5b5061061860048036038101906106139190614aaf565b611550565b60405161062591906149e0565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190614b08565b611565565b005b34801561066357600080fd5b5061067e60048036038101906106799190614aaf565b61163c565b005b34801561068c57600080fd5b50610695611713565b6040516106a29190614811565b60405180910390f35b3480156106b757600080fd5b506106c0611719565b6040516106cd9190614811565b60405180910390f35b3480156106e257600080fd5b506106eb61171f565b6040516106f89190614811565b60405180910390f35b34801561070d57600080fd5b5061072860048036038101906107239190614aaf565b611725565b6040516107359190614811565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190614b48565b61176e565b005b34801561077357600080fd5b5061077c6117f4565b005b34801561078a57600080fd5b5061079361187c565b6040516107a09190614a94565b60405180910390f35b3480156107b557600080fd5b506107be6118a2565b6040516107cb9190614811565b60405180910390f35b3480156107e057600080fd5b506107fb60048036038101906107f69190614aaf565b6118a8565b6040516108089190614811565b60405180910390f35b34801561081d57600080fd5b5061083860048036038101906108339190614aaf565b6118c0565b60405161084591906149e0565b60405180910390f35b34801561085a57600080fd5b506108636118e0565b6040516108709190614a94565b60405180910390f35b34801561088557600080fd5b506108a0600480360381019061089b9190614aaf565b6118ef565b6040516108ad91906149e0565b60405180910390f35b3480156108c257600080fd5b506108cb61190f565b6040516108d89190614a94565b60405180910390f35b3480156108ed57600080fd5b506108f6611938565b6040516109039190614811565b60405180910390f35b34801561091857600080fd5b5061092161193e565b60405161092e9190614811565b60405180910390f35b34801561094357600080fd5b5061094c611944565b60405161095991906148c5565b60405180910390f35b34801561096e57600080fd5b50610977611981565b6040516109849190614811565b60405180910390f35b34801561099957600080fd5b506109b460048036038101906109af9190614aaf565b611987565b005b3480156109c257600080fd5b506109dd60048036038101906109d89190614b48565b611a79565b005b3480156109eb57600080fd5b506109f4611aff565b604051610a0191906149e0565b60405180910390f35b348015610a1657600080fd5b50610a316004803603810190610a2c9190614b75565b611b12565b005b348015610a3f57600080fd5b50610a48611c14565b604051610a559190614a94565b60405180910390f35b348015610a6a57600080fd5b50610a73611c3a565b604051610a809190614a94565b60405180910390f35b348015610a9557600080fd5b50610ab06004803603810190610aab9190614985565b611c60565b604051610abd91906149e0565b60405180910390f35b348015610ad257600080fd5b50610aed6004803603810190610ae89190614b48565b611c75565b005b348015610afb57600080fd5b50610b04611d4c565b604051610b119190614811565b60405180910390f35b348015610b2657600080fd5b50610b2f611d52565b604051610b3c9190614a94565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614bb5565b611d78565b005b348015610b7a57600080fd5b50610b83611f32565b604051610b909190614811565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb9190614b75565b611f38565b604051610bcd9190614811565b60405180910390f35b348015610be257600080fd5b50610bfd6004803603810190610bf89190614985565b611fbf565b005b348015610c0b57600080fd5b50610c266004803603810190610c219190614c08565b6120be565b005b348015610c3457600080fd5b50610c4f6004803603810190610c4a9190614b48565b61215f565b005b348015610c5d57600080fd5b50610c66612236565b005b348015610c7457600080fd5b50610c8f6004803603810190610c8a9190614aaf565b6122f9565b005b348015610c9d57600080fd5b50610cb86004803603810190610cb39190614b08565b6123f1565b005b348015610cc657600080fd5b50610ccf6124c8565b604051610cdc9190614ca7565b60405180910390f35b348015610cf157600080fd5b50610d0c6004803603810190610d079190614aaf565b6124ee565b604051610d199190614811565b60405180910390f35b348015610d2e57600080fd5b50610d496004803603810190610d449190614aaf565b612506565b604051610d5691906149e0565b60405180910390f35b610d676125ba565b73ffffffffffffffffffffffffffffffffffffffff16610d8561190f565b73ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290614d0e565b60405180910390fd5b60001515601860149054906101000a900460ff16151514610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2890614d7a565b60405180910390fd5b6001601860146101000a81548160ff02191690831515021790555042601981905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060058190555060026010819055506005601181905550600260128190555042600681905550565b601e5481565b60606040518060400160405280600681526020017f5461784d616e0000000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110029190614811565b60405180910390a36001905092915050565b61101c6125ba565b73ffffffffffffffffffffffffffffffffffffffff1661103a61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790614d0e565b60405180910390fd5b6001601081905550600260118190555060026012819055506110d36012546110c560115460105461255c90919063ffffffff16565b61255c90919063ffffffff16565b601381905550565b6000600454905090565b60008019600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112b257611231826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c29092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112bd848484612626565b50600190509392505050565b60006113466112f9600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611725565b611338611327600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611725565b600454612ea390919063ffffffff16565b612ea390919063ffffffff16565b905090565b60006012905090565b61135c6125ba565b73ffffffffffffffffffffffffffffffffffffffff1661137a61190f565b73ffffffffffffffffffffffffffffffffffffffff16146113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c790614d0e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611416573d6000803e3d6000fd5b50565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006007546006546114519190614dc9565b905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b6114916125ba565b73ffffffffffffffffffffffffffffffffffffffff166114af61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90614d0e565b60405180910390fd5b60016010819055506001601181905550600560128190555061154860125461153a60115460105461255c90919063ffffffff16565b61255c90919063ffffffff16565b601381905550565b600061155e82600019610f22565b9050919050565b61156d6125ba565b73ffffffffffffffffffffffffffffffffffffffff1661158b61190f565b73ffffffffffffffffffffffffffffffffffffffff16146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890614d0e565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6116446125ba565b73ffffffffffffffffffffffffffffffffffffffff1661166261190f565b73ffffffffffffffffffffffffffffffffffffffff16146116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af90614d0e565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60115481565b601d5481565b60125481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117766125ba565b73ffffffffffffffffffffffffffffffffffffffff1661179461190f565b73ffffffffffffffffffffffffffffffffffffffff16146117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e190614d0e565b60405180910390fd5b8060078190555050565b6117fc6125ba565b73ffffffffffffffffffffffffffffffffffffffff1661181a61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186790614d0e565b60405180910390fd5b61187a6000612eed565b565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b600b6020528060005260406000206000915090505481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60006118ea61190f565b905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055481565b60075481565b60606040518060400160405280600481526020017f544d414e00000000000000000000000000000000000000000000000000000000815250905090565b60105481565b61198f6125ba565b73ffffffffffffffffffffffffffffffffffffffff166119ad61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa90614d0e565b60405180910390fd5b610a8c601954611a139190614dc9565b4210611a1e57600080fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611a816125ba565b73ffffffffffffffffffffffffffffffffffffffff16611a9f61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec90614d0e565b60405180910390fd5b80601e8190555050565b601860149054906101000a900460ff1681565b611b1a6125ba565b73ffffffffffffffffffffffffffffffffffffffff16611b3861190f565b73ffffffffffffffffffffffffffffffffffffffff1614611b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8590614d0e565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c6d338484612626565b905092915050565b611c7d6125ba565b73ffffffffffffffffffffffffffffffffffffffff16611c9b61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890614d0e565b60405180910390fd5b600a600454611d009190614e4e565b811015611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990614ecb565b60405180910390fd5b80601c8190555050565b60065481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d806125ba565b73ffffffffffffffffffffffffffffffffffffffff16611d9e61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb90614d0e565b60405180910390fd5b60008310158015611e065750600a8311155b611e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3c90614f37565b60405180910390fd5b60008210158015611e575750600a8211155b611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90614f37565b60405180910390fd5b60008110158015611ea85750600a8111155b611ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ede90614f37565b60405180910390fd5b826010819055508160118190555080601281905550611f27601254611f1960115460105461255c90919063ffffffff16565b61255c90919063ffffffff16565b601381905550505050565b601f5481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611fc76125ba565b73ffffffffffffffffffffffffffffffffffffffff16611fe561190f565b73ffffffffffffffffffffffffffffffffffffffff161461203b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203290614d0e565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612076929190614f57565b6020604051808303816000875af1158015612095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b99190614f95565b505050565b6120c66125ba565b73ffffffffffffffffffffffffffffffffffffffff166120e461190f565b73ffffffffffffffffffffffffffffffffffffffff161461213a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213190614d0e565b60405180910390fd5b81601b60156101000a81548160ff02191690831515021790555080601e819055505050565b6121676125ba565b73ffffffffffffffffffffffffffffffffffffffff1661218561190f565b73ffffffffffffffffffffffffffffffffffffffff16146121db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d290614d0e565b60405180910390fd5b60326004546121ea9190614e4e565b81101561222c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222390614ecb565b60405180910390fd5b80601d8190555050565b61223e6125ba565b73ffffffffffffffffffffffffffffffffffffffff1661225c61190f565b73ffffffffffffffffffffffffffffffffffffffff16146122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990614d0e565b60405180910390fd5b6000601b60156101000a81548160ff021916908315150217905550600019601c81905550600019601d81905550600060118190555060006012819055506000601081905550565b6123016125ba565b73ffffffffffffffffffffffffffffffffffffffff1661231f61190f565b73ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614d0e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc90615034565b60405180910390fd5b6123ee81612eed565b50565b6123f96125ba565b73ffffffffffffffffffffffffffffffffffffffff1661241761190f565b73ffffffffffffffffffffffffffffffffffffffff161461246d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246490614d0e565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080828461256b9190614dc9565b9050838110156125b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a7906150a0565b60405180910390fd5b8091505092915050565b600033905090565b600083831115829061260a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260191906148c5565b60405180910390fd5b506000838561261991906150c0565b9050809150509392505050565b600060011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141580156126da575060011515600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514155b612719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271090615140565b60405180910390fd5b601b60149054906101000a900460ff161561274057612739848484612fb1565b9050612e9c565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156127ab5750601b60149054906101000a900460ff16155b80156127c35750601b60159054906101000a900460ff165b80156128105750601e54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561281e5761281d613184565b5b6128298484846138df565b61283384846142e6565b15612873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286a906151ac565b60405180910390fd5b6000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129195750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612923578261292f565b61292e858585614459565b5b905060011515601860149054906101000a900460ff161515141580156129a35750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156129e257506129b261190f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612a2157506129f161190f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612b5e57612a7881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b0d83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b5984614601565b612e31565b612b6661190f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612bd15750612ba261190f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15612d0557612c2881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cbd83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e30565b612d5781600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dec83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e8e9190614811565b60405180910390a360019150505b9392505050565b6000612ee583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125c2565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061303c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130d182600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131719190614811565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000601e54905060006131e460026131d66013546131c86010548761465c90919063ffffffff16565b6146d790919063ffffffff16565b6146d790919063ffffffff16565b905060006131fb8284612ea390919063ffffffff16565b90506000600267ffffffffffffffff81111561321a576132196151cc565b5b6040519080825280602002602001820160405280156132485781602001602082028036833780820191505090505b50905030816000815181106132605761325f6151fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332b919061523f565b8160018151811061333f5761333e6151fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133dd959493929190615365565b600060405180830381600087803b1580156133f757600080fd5b505af115801561340b573d6000803e3d6000fd5b505050506000479050600061344061342f60026010546146d790919063ffffffff16565b601354612ea390919063ffffffff16565b9050600061346b8261345d6011548661465c90919063ffffffff16565b6146d790919063ffffffff16565b90506000613496836134886012548761465c90919063ffffffff16565b6146d790919063ffffffff16565b905060006134d460026134c6866134b86010548a61465c90919063ffffffff16565b6146d790919063ffffffff16565b6146d790919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613522906153f0565b600060405180830381858888f193505050503d8060008114613560576040519150601f19603f3d011682016040523d82523d6000602084013e613565565b606091505b505090506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516135b5906153f0565b600060405180830381858888f193505050503d80600081146135f3576040519150601f19603f3d011682016040523d82523d6000602084013e6135f8565b606091505b5050905083600b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555042600a6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7e1b91090974f99ff863df0f31147c10b81b1693e8c646cfdc1b97a5d6283b11601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051613795929190614f57565b60405180910390a1600091506000905060008a11156138b757601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308d600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161383796959493929190615405565b60606040518083038185885af1158015613855573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061387a919061547b565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838b6040516138ae9291906154ce565b60405180910390a15b50505050505050505050506000601b60146101000a81548160ff021916908315150217905550565b600754600654426138f091906150c0565b11156138ff576138fe614721565b5b61390761190f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613975575061394561190f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156139cb5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a255750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613a7f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613ad95750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b1157503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561407c57601c54811115613b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5290615543565b60405180910390fd5b6000613b6683611725565b9050601d548282613b779190614dc9565b1115613bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613baf906155d5565b60405180910390fd5b6000600267ffffffffffffffff811115613bd557613bd46151cc565b5b604051908082528060200260200182016040528015613c035781602001602082028036833780820191505090505b509050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c97919061523f565b81600081518110613cab57613caa6151fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110613cfa57613cf96151fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7485846040518363ffffffff1660e01b8152600401613d939291906155f5565b600060405180830381865afa158015613db0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613dd9919061573e565b600081518110613dec57613deb6151fb565b5b6020026020010151905060011515600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015613ea1575042610e10600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e9f9190614dc9565b105b8015613eae575060055481115b15613f645784601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550426006819055507f7a3876294c003693c09b1f201358b7363caa12e3e033ed587899fd1d9f044737601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554604051613f57929190614f57565b60405180910390a1614078565b60001515600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015613fc5575060055481115b156140775784601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550426006819055507f7a3876294c003693c09b1f201358b7363caa12e3e033ed587899fd1d9f044737601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660055460405161406e929190614f57565b60405180910390a15b5b5050505b61408461190f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156140f257506140c261190f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156141485750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156141a25750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156141da57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156142e157601c54811115614224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161421b90615543565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156142e0577f83a0fa64f7ae8557922f3732336a8b1e5885999f44e7422b63cd0a5aae62cf29601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005546040516142cf929190614f57565b60405180910390a16142df614721565b5b5b505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143895750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143975760009050614453565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806144405750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561444e5760009050614453565b600190505b92915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146144b9576013546144bd565b6014545b905060006144e760646144d9848761465c90919063ffffffff16565b6146d790919063ffffffff16565b905061453b81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516145db9190614811565b60405180910390a36145f68185612ea390919063ffffffff16565b925050509392505050565b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008083141561466f57600090506146d1565b6000828461467d9190615787565b905082848261468c9190614e4e565b146146cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146c390615853565b60405180910390fd5b809150505b92915050565b600061471983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614795565b905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060058190555042600681905550565b600080831182906147dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016147d391906148c5565b60405180910390fd5b50600083856147eb9190614e4e565b9050809150509392505050565b6000819050919050565b61480b816147f8565b82525050565b60006020820190506148266000830184614802565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561486657808201518184015260208101905061484b565b83811115614875576000848401525b50505050565b6000601f19601f8301169050919050565b60006148978261482c565b6148a18185614837565b93506148b1818560208601614848565b6148ba8161487b565b840191505092915050565b600060208201905081810360008301526148df818461488c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614926826148fb565b9050919050565b6149368161491b565b811461494157600080fd5b50565b6000813590506149538161492d565b92915050565b614962816147f8565b811461496d57600080fd5b50565b60008135905061497f81614959565b92915050565b6000806040838503121561499c5761499b6148f1565b5b60006149aa85828601614944565b92505060206149bb85828601614970565b9150509250929050565b60008115159050919050565b6149da816149c5565b82525050565b60006020820190506149f560008301846149d1565b92915050565b600080600060608486031215614a1457614a136148f1565b5b6000614a2286828701614944565b9350506020614a3386828701614944565b9250506040614a4486828701614970565b9150509250925092565b600060ff82169050919050565b614a6481614a4e565b82525050565b6000602082019050614a7f6000830184614a5b565b92915050565b614a8e8161491b565b82525050565b6000602082019050614aa96000830184614a85565b92915050565b600060208284031215614ac557614ac46148f1565b5b6000614ad384828501614944565b91505092915050565b614ae5816149c5565b8114614af057600080fd5b50565b600081359050614b0281614adc565b92915050565b60008060408385031215614b1f57614b1e6148f1565b5b6000614b2d85828601614944565b9250506020614b3e85828601614af3565b9150509250929050565b600060208284031215614b5e57614b5d6148f1565b5b6000614b6c84828501614970565b91505092915050565b60008060408385031215614b8c57614b8b6148f1565b5b6000614b9a85828601614944565b9250506020614bab85828601614944565b9150509250929050565b600080600060608486031215614bce57614bcd6148f1565b5b6000614bdc86828701614970565b9350506020614bed86828701614970565b9250506040614bfe86828701614970565b9150509250925092565b60008060408385031215614c1f57614c1e6148f1565b5b6000614c2d85828601614af3565b9250506020614c3e85828601614970565b9150509250929050565b6000819050919050565b6000614c6d614c68614c63846148fb565b614c48565b6148fb565b9050919050565b6000614c7f82614c52565b9050919050565b6000614c9182614c74565b9050919050565b614ca181614c86565b82525050565b6000602082019050614cbc6000830184614c98565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614cf8602083614837565b9150614d0382614cc2565b602082019050919050565b60006020820190508181036000830152614d2781614ceb565b9050919050565b7f416c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b6000614d64601083614837565b9150614d6f82614d2e565b602082019050919050565b60006020820190508181036000830152614d9381614d57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614dd4826147f8565b9150614ddf836147f8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e1457614e13614d9a565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e59826147f8565b9150614e64836147f8565b925082614e7457614e73614e1f565b5b828204905092915050565b7f4d61782077616c6c65742073697a6520697320746f6f206c6f77000000000000600082015250565b6000614eb5601a83614837565b9150614ec082614e7f565b602082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b7f496e76616c696420666565000000000000000000000000000000000000000000600082015250565b6000614f21600b83614837565b9150614f2c82614eeb565b602082019050919050565b60006020820190508181036000830152614f5081614f14565b9050919050565b6000604082019050614f6c6000830185614a85565b614f796020830184614802565b9392505050565b600081519050614f8f81614adc565b92915050565b600060208284031215614fab57614faa6148f1565b5b6000614fb984828501614f80565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061501e602683614837565b915061502982614fc2565b604082019050919050565b6000602082019050818103600083015261504d81615011565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061508a601b83614837565b915061509582615054565b602082019050919050565b600060208201905081810360008301526150b98161507d565b9050919050565b60006150cb826147f8565b91506150d6836147f8565b9250828210156150e9576150e8614d9a565b5b828203905092915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b600061512a600b83614837565b9150615135826150f4565b602082019050919050565b600060208201905081810360008301526151598161511d565b9050919050565b7f446f6e2774206368656174000000000000000000000000000000000000000000600082015250565b6000615196600b83614837565b91506151a182615160565b602082019050919050565b600060208201905081810360008301526151c581615189565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152398161492d565b92915050565b600060208284031215615255576152546148f1565b5b60006152638482850161522a565b91505092915050565b6000819050919050565b600061529161528c6152878461526c565b614c48565b6147f8565b9050919050565b6152a181615276565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152dc8161491b565b82525050565b60006152ee83836152d3565b60208301905092915050565b6000602082019050919050565b6000615312826152a7565b61531c81856152b2565b9350615327836152c3565b8060005b8381101561535857815161533f88826152e2565b975061534a836152fa565b92505060018101905061532b565b5085935050505092915050565b600060a08201905061537a6000830188614802565b6153876020830187615298565b81810360408301526153998186615307565b90506153a86060830185614a85565b6153b56080830184614802565b9695505050505050565b600081905092915050565b50565b60006153da6000836153bf565b91506153e5826153ca565b600082019050919050565b60006153fb826153cd565b9150819050919050565b600060c08201905061541a6000830189614a85565b6154276020830188614802565b6154346040830187615298565b6154416060830186615298565b61544e6080830185614a85565b61545b60a0830184614802565b979650505050505050565b60008151905061547581614959565b92915050565b600080600060608486031215615494576154936148f1565b5b60006154a286828701615466565b93505060206154b386828701615466565b92505060406154c486828701615466565b9150509250925092565b60006040820190506154e36000830185614802565b6154f06020830184614802565b9392505050565b7f4d41582054580000000000000000000000000000000000000000000000000000600082015250565b600061552d600683614837565b9150615538826154f7565b602082019050919050565b6000602082019050818103600083015261555c81615520565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b60006155bf602383614837565b91506155ca82615563565b604082019050919050565b600060208201905081810360008301526155ee816155b2565b9050919050565b600060408201905061560a6000830185614802565b818103602083015261561c8184615307565b90509392505050565b600080fd5b6156338261487b565b810181811067ffffffffffffffff82111715615652576156516151cc565b5b80604052505050565b60006156656148e7565b9050615671828261562a565b919050565b600067ffffffffffffffff821115615691576156906151cc565b5b602082029050602081019050919050565b600080fd5b60006156ba6156b584615676565b61565b565b905080838252602082019050602084028301858111156156dd576156dc6156a2565b5b835b8181101561570657806156f28882615466565b8452602084019350506020810190506156df565b5050509392505050565b600082601f83011261572557615724615625565b5b81516157358482602086016156a7565b91505092915050565b600060208284031215615754576157536148f1565b5b600082015167ffffffffffffffff811115615772576157716148f6565b5b61577e84828501615710565b91505092915050565b6000615792826147f8565b915061579d836147f8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156157d6576157d5614d9a565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061583d602183614837565b9150615848826157e1565b604082019050919050565b6000602082019050818103600083015261586c81615830565b905091905056fea2646970667358221220bd8288a00de771b0df47aaf7c6d6ef0b886578a1656cc93a608eaff671941ef364736f6c634300080c0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c8063893d20e8116101d1578063a9e59da311610102578063df20fd49116100a0578063f84ba65d1161006f578063f84ba65d14610c91578063f887ea4014610cba578063fb02195914610ce5578063fe575a8714610d2257610381565b8063df20fd4914610bff578063ea1644d514610c28578063eb45e70914610c51578063f2fde38b14610c6857610381565b8063cec10c11116100dc578063cec10c1114610b45578063dbe1c4d514610b6e578063dd62ed3e14610b99578063dec2ba0f14610bd657610381565b8063a9e59da314610ac6578063b898a71514610aef578063ca33e64c14610b1a57610381565b80639cfe42da1161016f578063a4b45c0011610149578063a4b45c0014610a0a578063a617792814610a33578063a8aa1b3114610a5e578063a9059cbb14610a8957610381565b80639cfe42da1461098d5780639d0014b1146109b65780639e0a7810146109df57610381565b80638eb6889f116101ab5780638eb6889f146108e1578063944c1d971461090c57806395d89b411461093757806398118cb41461096257610381565b8063893d20e81461084e5780638b42507f146108795780638da5cb5b146108b657610381565b80634fef3a82116102ab57806370a082311161024957806375f0a8741161022357806375f0a8741461077e5780637d1db4a5146107a95780637de4c778146107d457806383de570a1461081157610381565b806370a0823114610701578063712a890a1461073e578063715018a61461076757610381565b806366e930b31161028557806366e930b3146106575780636b67c4df146106805780636c0a24eb146106ab5780636c0cd64e146106d657610381565b80634fef3a82146105da578063571ac8b0146105f1578063658d4b7f1461062e57610381565b80632b112e49116103185780633b01a157116102f25780633b01a1571461051c5780633e02a988146105475780633f4218e0146105725780634a74bb02146105af57610381565b80632b112e49146104af578063313ce567146104da57806333596f501461050557610381565b8063095ea7b311610354578063095ea7b3146103f3578063125b94e51461043057806318160ddd1461044757806323b872dd1461047257610381565b806301339c21146103865780630445b6671461039d57806306fdde03146103c857610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d5f565b005b3480156103a957600080fd5b506103b2610edf565b6040516103bf9190614811565b60405180910390f35b3480156103d457600080fd5b506103dd610ee5565b6040516103ea91906148c5565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614985565b610f22565b60405161042791906149e0565b60405180910390f35b34801561043c57600080fd5b50610445611014565b005b34801561045357600080fd5b5061045c6110db565b6040516104699190614811565b60405180910390f35b34801561047e57600080fd5b50610499600480360381019061049491906149fb565b6110e5565b6040516104a691906149e0565b60405180910390f35b3480156104bb57600080fd5b506104c46112c9565b6040516104d19190614811565b60405180910390f35b3480156104e657600080fd5b506104ef61134b565b6040516104fc9190614a6a565b60405180910390f35b34801561051157600080fd5b5061051a611354565b005b34801561052857600080fd5b50610531611419565b60405161053e9190614a94565b60405180910390f35b34801561055357600080fd5b5061055c61143f565b6040516105699190614811565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190614aaf565b611456565b6040516105a691906149e0565b60405180910390f35b3480156105bb57600080fd5b506105c4611476565b6040516105d191906149e0565b60405180910390f35b3480156105e657600080fd5b506105ef611489565b005b3480156105fd57600080fd5b5061061860048036038101906106139190614aaf565b611550565b60405161062591906149e0565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190614b08565b611565565b005b34801561066357600080fd5b5061067e60048036038101906106799190614aaf565b61163c565b005b34801561068c57600080fd5b50610695611713565b6040516106a29190614811565b60405180910390f35b3480156106b757600080fd5b506106c0611719565b6040516106cd9190614811565b60405180910390f35b3480156106e257600080fd5b506106eb61171f565b6040516106f89190614811565b60405180910390f35b34801561070d57600080fd5b5061072860048036038101906107239190614aaf565b611725565b6040516107359190614811565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190614b48565b61176e565b005b34801561077357600080fd5b5061077c6117f4565b005b34801561078a57600080fd5b5061079361187c565b6040516107a09190614a94565b60405180910390f35b3480156107b557600080fd5b506107be6118a2565b6040516107cb9190614811565b60405180910390f35b3480156107e057600080fd5b506107fb60048036038101906107f69190614aaf565b6118a8565b6040516108089190614811565b60405180910390f35b34801561081d57600080fd5b5061083860048036038101906108339190614aaf565b6118c0565b60405161084591906149e0565b60405180910390f35b34801561085a57600080fd5b506108636118e0565b6040516108709190614a94565b60405180910390f35b34801561088557600080fd5b506108a0600480360381019061089b9190614aaf565b6118ef565b6040516108ad91906149e0565b60405180910390f35b3480156108c257600080fd5b506108cb61190f565b6040516108d89190614a94565b60405180910390f35b3480156108ed57600080fd5b506108f6611938565b6040516109039190614811565b60405180910390f35b34801561091857600080fd5b5061092161193e565b60405161092e9190614811565b60405180910390f35b34801561094357600080fd5b5061094c611944565b60405161095991906148c5565b60405180910390f35b34801561096e57600080fd5b50610977611981565b6040516109849190614811565b60405180910390f35b34801561099957600080fd5b506109b460048036038101906109af9190614aaf565b611987565b005b3480156109c257600080fd5b506109dd60048036038101906109d89190614b48565b611a79565b005b3480156109eb57600080fd5b506109f4611aff565b604051610a0191906149e0565b60405180910390f35b348015610a1657600080fd5b50610a316004803603810190610a2c9190614b75565b611b12565b005b348015610a3f57600080fd5b50610a48611c14565b604051610a559190614a94565b60405180910390f35b348015610a6a57600080fd5b50610a73611c3a565b604051610a809190614a94565b60405180910390f35b348015610a9557600080fd5b50610ab06004803603810190610aab9190614985565b611c60565b604051610abd91906149e0565b60405180910390f35b348015610ad257600080fd5b50610aed6004803603810190610ae89190614b48565b611c75565b005b348015610afb57600080fd5b50610b04611d4c565b604051610b119190614811565b60405180910390f35b348015610b2657600080fd5b50610b2f611d52565b604051610b3c9190614a94565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614bb5565b611d78565b005b348015610b7a57600080fd5b50610b83611f32565b604051610b909190614811565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb9190614b75565b611f38565b604051610bcd9190614811565b60405180910390f35b348015610be257600080fd5b50610bfd6004803603810190610bf89190614985565b611fbf565b005b348015610c0b57600080fd5b50610c266004803603810190610c219190614c08565b6120be565b005b348015610c3457600080fd5b50610c4f6004803603810190610c4a9190614b48565b61215f565b005b348015610c5d57600080fd5b50610c66612236565b005b348015610c7457600080fd5b50610c8f6004803603810190610c8a9190614aaf565b6122f9565b005b348015610c9d57600080fd5b50610cb86004803603810190610cb39190614b08565b6123f1565b005b348015610cc657600080fd5b50610ccf6124c8565b604051610cdc9190614ca7565b60405180910390f35b348015610cf157600080fd5b50610d0c6004803603810190610d079190614aaf565b6124ee565b604051610d199190614811565b60405180910390f35b348015610d2e57600080fd5b50610d496004803603810190610d449190614aaf565b612506565b604051610d5691906149e0565b60405180910390f35b610d676125ba565b73ffffffffffffffffffffffffffffffffffffffff16610d8561190f565b73ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290614d0e565b60405180910390fd5b60001515601860149054906101000a900460ff16151514610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2890614d7a565b60405180910390fd5b6001601860146101000a81548160ff02191690831515021790555042601981905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060058190555060026010819055506005601181905550600260128190555042600681905550565b601e5481565b60606040518060400160405280600681526020017f5461784d616e0000000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110029190614811565b60405180910390a36001905092915050565b61101c6125ba565b73ffffffffffffffffffffffffffffffffffffffff1661103a61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790614d0e565b60405180910390fd5b6001601081905550600260118190555060026012819055506110d36012546110c560115460105461255c90919063ffffffff16565b61255c90919063ffffffff16565b601381905550565b6000600454905090565b60008019600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112b257611231826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c29092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112bd848484612626565b50600190509392505050565b60006113466112f9600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611725565b611338611327600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611725565b600454612ea390919063ffffffff16565b612ea390919063ffffffff16565b905090565b60006012905090565b61135c6125ba565b73ffffffffffffffffffffffffffffffffffffffff1661137a61190f565b73ffffffffffffffffffffffffffffffffffffffff16146113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c790614d0e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611416573d6000803e3d6000fd5b50565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006007546006546114519190614dc9565b905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b6114916125ba565b73ffffffffffffffffffffffffffffffffffffffff166114af61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90614d0e565b60405180910390fd5b60016010819055506001601181905550600560128190555061154860125461153a60115460105461255c90919063ffffffff16565b61255c90919063ffffffff16565b601381905550565b600061155e82600019610f22565b9050919050565b61156d6125ba565b73ffffffffffffffffffffffffffffffffffffffff1661158b61190f565b73ffffffffffffffffffffffffffffffffffffffff16146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890614d0e565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6116446125ba565b73ffffffffffffffffffffffffffffffffffffffff1661166261190f565b73ffffffffffffffffffffffffffffffffffffffff16146116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af90614d0e565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60115481565b601d5481565b60125481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117766125ba565b73ffffffffffffffffffffffffffffffffffffffff1661179461190f565b73ffffffffffffffffffffffffffffffffffffffff16146117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e190614d0e565b60405180910390fd5b8060078190555050565b6117fc6125ba565b73ffffffffffffffffffffffffffffffffffffffff1661181a61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186790614d0e565b60405180910390fd5b61187a6000612eed565b565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b600b6020528060005260406000206000915090505481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60006118ea61190f565b905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055481565b60075481565b60606040518060400160405280600481526020017f544d414e00000000000000000000000000000000000000000000000000000000815250905090565b60105481565b61198f6125ba565b73ffffffffffffffffffffffffffffffffffffffff166119ad61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa90614d0e565b60405180910390fd5b610a8c601954611a139190614dc9565b4210611a1e57600080fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611a816125ba565b73ffffffffffffffffffffffffffffffffffffffff16611a9f61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec90614d0e565b60405180910390fd5b80601e8190555050565b601860149054906101000a900460ff1681565b611b1a6125ba565b73ffffffffffffffffffffffffffffffffffffffff16611b3861190f565b73ffffffffffffffffffffffffffffffffffffffff1614611b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8590614d0e565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c6d338484612626565b905092915050565b611c7d6125ba565b73ffffffffffffffffffffffffffffffffffffffff16611c9b61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890614d0e565b60405180910390fd5b600a600454611d009190614e4e565b811015611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990614ecb565b60405180910390fd5b80601c8190555050565b60065481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d806125ba565b73ffffffffffffffffffffffffffffffffffffffff16611d9e61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb90614d0e565b60405180910390fd5b60008310158015611e065750600a8311155b611e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3c90614f37565b60405180910390fd5b60008210158015611e575750600a8211155b611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90614f37565b60405180910390fd5b60008110158015611ea85750600a8111155b611ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ede90614f37565b60405180910390fd5b826010819055508160118190555080601281905550611f27601254611f1960115460105461255c90919063ffffffff16565b61255c90919063ffffffff16565b601381905550505050565b601f5481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611fc76125ba565b73ffffffffffffffffffffffffffffffffffffffff16611fe561190f565b73ffffffffffffffffffffffffffffffffffffffff161461203b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203290614d0e565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612076929190614f57565b6020604051808303816000875af1158015612095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b99190614f95565b505050565b6120c66125ba565b73ffffffffffffffffffffffffffffffffffffffff166120e461190f565b73ffffffffffffffffffffffffffffffffffffffff161461213a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213190614d0e565b60405180910390fd5b81601b60156101000a81548160ff02191690831515021790555080601e819055505050565b6121676125ba565b73ffffffffffffffffffffffffffffffffffffffff1661218561190f565b73ffffffffffffffffffffffffffffffffffffffff16146121db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d290614d0e565b60405180910390fd5b60326004546121ea9190614e4e565b81101561222c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222390614ecb565b60405180910390fd5b80601d8190555050565b61223e6125ba565b73ffffffffffffffffffffffffffffffffffffffff1661225c61190f565b73ffffffffffffffffffffffffffffffffffffffff16146122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990614d0e565b60405180910390fd5b6000601b60156101000a81548160ff021916908315150217905550600019601c81905550600019601d81905550600060118190555060006012819055506000601081905550565b6123016125ba565b73ffffffffffffffffffffffffffffffffffffffff1661231f61190f565b73ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614d0e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc90615034565b60405180910390fd5b6123ee81612eed565b50565b6123f96125ba565b73ffffffffffffffffffffffffffffffffffffffff1661241761190f565b73ffffffffffffffffffffffffffffffffffffffff161461246d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246490614d0e565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080828461256b9190614dc9565b9050838110156125b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a7906150a0565b60405180910390fd5b8091505092915050565b600033905090565b600083831115829061260a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260191906148c5565b60405180910390fd5b506000838561261991906150c0565b9050809150509392505050565b600060011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141580156126da575060011515600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514155b612719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271090615140565b60405180910390fd5b601b60149054906101000a900460ff161561274057612739848484612fb1565b9050612e9c565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156127ab5750601b60149054906101000a900460ff16155b80156127c35750601b60159054906101000a900460ff165b80156128105750601e54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561281e5761281d613184565b5b6128298484846138df565b61283384846142e6565b15612873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286a906151ac565b60405180910390fd5b6000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129195750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612923578261292f565b61292e858585614459565b5b905060011515601860149054906101000a900460ff161515141580156129a35750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156129e257506129b261190f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612a2157506129f161190f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612b5e57612a7881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b0d83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b5984614601565b612e31565b612b6661190f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612bd15750612ba261190f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15612d0557612c2881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cbd83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e30565b612d5781600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dec83600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea390919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e8e9190614811565b60405180910390a360019150505b9392505050565b6000612ee583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125c2565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061303c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130d182600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131719190614811565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000601e54905060006131e460026131d66013546131c86010548761465c90919063ffffffff16565b6146d790919063ffffffff16565b6146d790919063ffffffff16565b905060006131fb8284612ea390919063ffffffff16565b90506000600267ffffffffffffffff81111561321a576132196151cc565b5b6040519080825280602002602001820160405280156132485781602001602082028036833780820191505090505b50905030816000815181106132605761325f6151fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332b919061523f565b8160018151811061333f5761333e6151fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133dd959493929190615365565b600060405180830381600087803b1580156133f757600080fd5b505af115801561340b573d6000803e3d6000fd5b505050506000479050600061344061342f60026010546146d790919063ffffffff16565b601354612ea390919063ffffffff16565b9050600061346b8261345d6011548661465c90919063ffffffff16565b6146d790919063ffffffff16565b90506000613496836134886012548761465c90919063ffffffff16565b6146d790919063ffffffff16565b905060006134d460026134c6866134b86010548a61465c90919063ffffffff16565b6146d790919063ffffffff16565b6146d790919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613522906153f0565b600060405180830381858888f193505050503d8060008114613560576040519150601f19603f3d011682016040523d82523d6000602084013e613565565b606091505b505090506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516135b5906153f0565b600060405180830381858888f193505050503d80600081146135f3576040519150601f19603f3d011682016040523d82523d6000602084013e6135f8565b606091505b5050905083600b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555042600a6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7e1b91090974f99ff863df0f31147c10b81b1693e8c646cfdc1b97a5d6283b11601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051613795929190614f57565b60405180910390a1600091506000905060008a11156138b757601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308d600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161383796959493929190615405565b60606040518083038185885af1158015613855573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061387a919061547b565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838b6040516138ae9291906154ce565b60405180910390a15b50505050505050505050506000601b60146101000a81548160ff021916908315150217905550565b600754600654426138f091906150c0565b11156138ff576138fe614721565b5b61390761190f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613975575061394561190f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156139cb5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a255750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613a7f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613ad95750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b1157503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561407c57601c54811115613b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5290615543565b60405180910390fd5b6000613b6683611725565b9050601d548282613b779190614dc9565b1115613bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613baf906155d5565b60405180910390fd5b6000600267ffffffffffffffff811115613bd557613bd46151cc565b5b604051908082528060200260200182016040528015613c035781602001602082028036833780820191505090505b509050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c97919061523f565b81600081518110613cab57613caa6151fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110613cfa57613cf96151fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7485846040518363ffffffff1660e01b8152600401613d939291906155f5565b600060405180830381865afa158015613db0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613dd9919061573e565b600081518110613dec57613deb6151fb565b5b6020026020010151905060011515600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015613ea1575042610e10600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e9f9190614dc9565b105b8015613eae575060055481115b15613f645784601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550426006819055507f7a3876294c003693c09b1f201358b7363caa12e3e033ed587899fd1d9f044737601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554604051613f57929190614f57565b60405180910390a1614078565b60001515600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015613fc5575060055481115b156140775784601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550426006819055507f7a3876294c003693c09b1f201358b7363caa12e3e033ed587899fd1d9f044737601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660055460405161406e929190614f57565b60405180910390a15b5b5050505b61408461190f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156140f257506140c261190f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156141485750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156141a25750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156141da57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156142e157601c54811115614224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161421b90615543565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156142e0577f83a0fa64f7ae8557922f3732336a8b1e5885999f44e7422b63cd0a5aae62cf29601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005546040516142cf929190614f57565b60405180910390a16142df614721565b5b5b505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143895750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143975760009050614453565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806144405750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561444e5760009050614453565b600190505b92915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146144b9576013546144bd565b6014545b905060006144e760646144d9848761465c90919063ffffffff16565b6146d790919063ffffffff16565b905061453b81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516145db9190614811565b60405180910390a36145f68185612ea390919063ffffffff16565b925050509392505050565b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008083141561466f57600090506146d1565b6000828461467d9190615787565b905082848261468c9190614e4e565b146146cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146c390615853565b60405180910390fd5b809150505b92915050565b600061471983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614795565b905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060058190555042600681905550565b600080831182906147dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016147d391906148c5565b60405180910390fd5b50600083856147eb9190614e4e565b9050809150509392505050565b6000819050919050565b61480b816147f8565b82525050565b60006020820190506148266000830184614802565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561486657808201518184015260208101905061484b565b83811115614875576000848401525b50505050565b6000601f19601f8301169050919050565b60006148978261482c565b6148a18185614837565b93506148b1818560208601614848565b6148ba8161487b565b840191505092915050565b600060208201905081810360008301526148df818461488c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614926826148fb565b9050919050565b6149368161491b565b811461494157600080fd5b50565b6000813590506149538161492d565b92915050565b614962816147f8565b811461496d57600080fd5b50565b60008135905061497f81614959565b92915050565b6000806040838503121561499c5761499b6148f1565b5b60006149aa85828601614944565b92505060206149bb85828601614970565b9150509250929050565b60008115159050919050565b6149da816149c5565b82525050565b60006020820190506149f560008301846149d1565b92915050565b600080600060608486031215614a1457614a136148f1565b5b6000614a2286828701614944565b9350506020614a3386828701614944565b9250506040614a4486828701614970565b9150509250925092565b600060ff82169050919050565b614a6481614a4e565b82525050565b6000602082019050614a7f6000830184614a5b565b92915050565b614a8e8161491b565b82525050565b6000602082019050614aa96000830184614a85565b92915050565b600060208284031215614ac557614ac46148f1565b5b6000614ad384828501614944565b91505092915050565b614ae5816149c5565b8114614af057600080fd5b50565b600081359050614b0281614adc565b92915050565b60008060408385031215614b1f57614b1e6148f1565b5b6000614b2d85828601614944565b9250506020614b3e85828601614af3565b9150509250929050565b600060208284031215614b5e57614b5d6148f1565b5b6000614b6c84828501614970565b91505092915050565b60008060408385031215614b8c57614b8b6148f1565b5b6000614b9a85828601614944565b9250506020614bab85828601614944565b9150509250929050565b600080600060608486031215614bce57614bcd6148f1565b5b6000614bdc86828701614970565b9350506020614bed86828701614970565b9250506040614bfe86828701614970565b9150509250925092565b60008060408385031215614c1f57614c1e6148f1565b5b6000614c2d85828601614af3565b9250506020614c3e85828601614970565b9150509250929050565b6000819050919050565b6000614c6d614c68614c63846148fb565b614c48565b6148fb565b9050919050565b6000614c7f82614c52565b9050919050565b6000614c9182614c74565b9050919050565b614ca181614c86565b82525050565b6000602082019050614cbc6000830184614c98565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614cf8602083614837565b9150614d0382614cc2565b602082019050919050565b60006020820190508181036000830152614d2781614ceb565b9050919050565b7f416c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b6000614d64601083614837565b9150614d6f82614d2e565b602082019050919050565b60006020820190508181036000830152614d9381614d57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614dd4826147f8565b9150614ddf836147f8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e1457614e13614d9a565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e59826147f8565b9150614e64836147f8565b925082614e7457614e73614e1f565b5b828204905092915050565b7f4d61782077616c6c65742073697a6520697320746f6f206c6f77000000000000600082015250565b6000614eb5601a83614837565b9150614ec082614e7f565b602082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b7f496e76616c696420666565000000000000000000000000000000000000000000600082015250565b6000614f21600b83614837565b9150614f2c82614eeb565b602082019050919050565b60006020820190508181036000830152614f5081614f14565b9050919050565b6000604082019050614f6c6000830185614a85565b614f796020830184614802565b9392505050565b600081519050614f8f81614adc565b92915050565b600060208284031215614fab57614faa6148f1565b5b6000614fb984828501614f80565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061501e602683614837565b915061502982614fc2565b604082019050919050565b6000602082019050818103600083015261504d81615011565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061508a601b83614837565b915061509582615054565b602082019050919050565b600060208201905081810360008301526150b98161507d565b9050919050565b60006150cb826147f8565b91506150d6836147f8565b9250828210156150e9576150e8614d9a565b5b828203905092915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b600061512a600b83614837565b9150615135826150f4565b602082019050919050565b600060208201905081810360008301526151598161511d565b9050919050565b7f446f6e2774206368656174000000000000000000000000000000000000000000600082015250565b6000615196600b83614837565b91506151a182615160565b602082019050919050565b600060208201905081810360008301526151c581615189565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152398161492d565b92915050565b600060208284031215615255576152546148f1565b5b60006152638482850161522a565b91505092915050565b6000819050919050565b600061529161528c6152878461526c565b614c48565b6147f8565b9050919050565b6152a181615276565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152dc8161491b565b82525050565b60006152ee83836152d3565b60208301905092915050565b6000602082019050919050565b6000615312826152a7565b61531c81856152b2565b9350615327836152c3565b8060005b8381101561535857815161533f88826152e2565b975061534a836152fa565b92505060018101905061532b565b5085935050505092915050565b600060a08201905061537a6000830188614802565b6153876020830187615298565b81810360408301526153998186615307565b90506153a86060830185614a85565b6153b56080830184614802565b9695505050505050565b600081905092915050565b50565b60006153da6000836153bf565b91506153e5826153ca565b600082019050919050565b60006153fb826153cd565b9150819050919050565b600060c08201905061541a6000830189614a85565b6154276020830188614802565b6154346040830187615298565b6154416060830186615298565b61544e6080830185614a85565b61545b60a0830184614802565b979650505050505050565b60008151905061547581614959565b92915050565b600080600060608486031215615494576154936148f1565b5b60006154a286828701615466565b93505060206154b386828701615466565b92505060406154c486828701615466565b9150509250925092565b60006040820190506154e36000830185614802565b6154f06020830184614802565b9392505050565b7f4d41582054580000000000000000000000000000000000000000000000000000600082015250565b600061552d600683614837565b9150615538826154f7565b602082019050919050565b6000602082019050818103600083015261555c81615520565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b60006155bf602383614837565b91506155ca82615563565b604082019050919050565b600060208201905081810360008301526155ee816155b2565b9050919050565b600060408201905061560a6000830185614802565b818103602083015261561c8184615307565b90509392505050565b600080fd5b6156338261487b565b810181811067ffffffffffffffff82111715615652576156516151cc565b5b80604052505050565b60006156656148e7565b9050615671828261562a565b919050565b600067ffffffffffffffff821115615691576156906151cc565b5b602082029050602081019050919050565b600080fd5b60006156ba6156b584615676565b61565b565b905080838252602082019050602084028301858111156156dd576156dc6156a2565b5b835b8181101561570657806156f28882615466565b8452602084019350506020810190506156df565b5050509392505050565b600082601f83011261572557615724615625565b5b81516157358482602086016156a7565b91505092915050565b600060208284031215615754576157536148f1565b5b600082015167ffffffffffffffff811115615772576157716148f6565b5b61577e84828501615710565b91505092915050565b6000615792826147f8565b915061579d836147f8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156157d6576157d5614d9a565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061583d602183614837565b9150615848826157e1565b604082019050919050565b6000602082019050818103600083015261586c81615830565b905091905056fea2646970667358221220bd8288a00de771b0df47aaf7c6d6ef0b886578a1656cc93a608eaff671941ef364736f6c634300080c0033

Deployed Bytecode Sourcemap

7795:17316:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15034:375;;;;;;;;;;;;;:::i;:::-;;9597:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10986:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13039:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14808:214;;;;;;;;;;;;;:::i;:::-;;11430:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19029:445;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11548:146;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11210:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24800:119;;;;;;;;;;;;;:::i;:::-;;9199:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14457:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8691:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9437:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14582:214;;;;;;;;;;;;;:::i;:::-;;13315:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13439:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16010:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8956:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9537:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8996:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11706:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14131:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7000:98;;;;;;;;;;;;;:::i;:::-;;9160:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9486:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8580;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8631:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11320:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8743:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6311:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8278:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8359:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11096:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8916:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15825:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13746:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9270:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13870:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9228:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9375:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18817:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15623:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8316:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9115:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12086:727;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9655:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12825:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24931:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18575:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15421:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11841:233;;;;;;;;;;;;;:::i;:::-;;7265:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13574:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9342:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8521:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16132:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15034:375;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15108:5:::1;15093:20;;:11;;;;;;;;;;;:20;;;15084:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15161:4;15147:11;;:18;;;;;;;;;;;;;;;;;;15192:15;15178:11;:29;;;;15228:15;;;;;;;;;;;15220:5;;:23;;;;;;;;;;;;;;;;;;15269:1;15256:10;:14;;;;15298:1;15283:12;:16;;;;15327:1;15312:12;:16;;;;15352:1;15341:8;:12;;;;15384:15;15366;:33;;;;15034:375::o:0;9597:49::-;;;;:::o;10986:98::-;11034:13;11069:5;;;;;;;;;;;;;;;;;11062:12;;10986:98;:::o;13039:264::-;13147:4;13208:6;13173:11;:23;13185:10;13173:23;;;;;;;;;;;;;;;:32;13197:7;13173:32;;;;;;;;;;;;;;;:41;;;;13253:7;13232:37;;13241:10;13232:37;;;13262:6;13232:37;;;;;;:::i;:::-;;;;;;;;13289:4;13282:11;;13039:264;;;;:::o;14808:214::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14889:1:::1;14874:12;:16;;;;14918:1;14903:12;:16;;;;14943:1;14932:8;:12;;;;14968:44;15003:8;;14968:30;14985:12;;14968;;:16;;:30;;;;:::i;:::-;:34;;:44;;;;:::i;:::-;14957:8;:55;;;;14808:214::o:0;11430:106::-;11485:7;11514:12;;11507:19;;11430:106;:::o;19029:445::-;19171:4;8901:1;8892:11;19194;:19;19206:6;19194:19;;;;;;;;;;;;;;;:31;19214:10;19194:31;;;;;;;;;;;;;;;;:38;19190:198;;19285:89;19341:6;19285:89;;;;;;;;;;;;;;;;;:11;:19;19297:6;19285:19;;;;;;;;;;;;;;;:31;19305:10;19285:31;;;;;;;;;;;;;;;;:55;;:89;;;;;:::i;:::-;19251:11;:19;19263:6;19251:19;;;;;;;;;;;;;;;:31;19271:10;19251:31;;;;;;;;;;;;;;;:123;;;;19190:198;19400:40;19414:6;19422:9;19433:6;19400:13;:40::i;:::-;;19460:4;19453:11;;19029:445;;;;;:::o;11548:146::-;11601:7;11630:54;11668:15;11678:4;;;;;;;;;;;11668:9;:15::i;:::-;11630:33;11647:15;11657:4;;;;;;;;;;;11647:9;:15::i;:::-;11630:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;11623:61;;11548:146;:::o;11210:98::-;11262:5;7987:2;11282:16;;11210:98;:::o;24800:119::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24866:10:::1;24858:28;;:51;24887:21;24858:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24800:119::o:0;9199:20::-;;;;;;;;;;;;;:::o;14457:113::-;14502:7;14549:11;;14531:15;;:29;;;;:::i;:::-;14524:36;;14457:113;:::o;8691:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;9437:40::-;;;;;;;;;;;;;:::o;14582:214::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14663:1:::1;14648:12;:16;;;;14692:1;14677:12;:16;;;;14717:1;14706:8;:12;;;;14742:44;14777:8;;14742:30;14759:12;;14742;;:16;;:30;;;;:::i;:::-;:34;;:44;;;;:::i;:::-;14731:8;:55;;;;14582:214::o:0;13315:112::-;13370:4;13396:21;13404:7;8901:1;8892:11;13396:7;:21::i;:::-;13389:28;;13315:112;;;:::o;13439:123::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13546:6:::1;13524:11;:19;13536:6;13524:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;13439:123:::0;;:::o;16010:110::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16105:5:::1;16082:16;:22;16099:4;16082:22;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16010:110:::0;:::o;8956:31::-;;;;:::o;9537:51::-;;;;:::o;8996:27::-;;;;:::o;11706:123::-;11772:7;11801:9;:18;11811:7;11801:18;;;;;;;;;;;;;;;;11794:25;;11706:123;;;:::o;14131:156::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14263:14:::1;14249:11;:28;;;;14131:156:::0;:::o;7000:98::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7067:21:::1;7085:1;7067:9;:21::i;:::-;7000:98::o:0;9160:30::-;;;;;;;;;;;;;:::o;9486:42::-;;;;:::o;8580:::-;;;;;;;;;;;;;;;;;:::o;8631:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;11320:98::-;11372:7;11401;:5;:7::i;:::-;11394:14;;11320:98;:::o;8743:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;6311:91::-;6357:7;6386:6;;;;;;;;;;;6379:13;;6311:91;:::o;8278:29::-;;;;:::o;8359:39::-;;;;:::o;11096:102::-;11146:13;11181:7;;;;;;;;;;;;;;;;;11174:14;;11096:102;:::o;8916:31::-;;;;:::o;15825:173::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15933:10:::1;15919:11;;:24;;;;:::i;:::-;15901:15;:42;15893:51;;;::::0;::::1;;15980:4;15957:16;:22;15974:4;15957:22;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;15825:173:::0;:::o;13746:112::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13839:9:::1;13823:13;:25;;;;13746:112:::0;:::o;9270:31::-;;;;;;;;;;;;;:::o;13870:249::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14040:20:::1;14016:21;;:44;;;;;;;;;;;;;;;;;;14091:18;14073:15;;:36;;;;;;;;;;;;;;;;;;13870:249:::0;;:::o;9228:29::-;;;;;;;;;;;;;:::o;9375:19::-;;;;;;;;;;;;;:::o;18817:200::-;18930:4;18963:44;18977:10;18989:9;19000:6;18963:13;:44::i;:::-;18956:51;;18817:200;;;;:::o;15623:190::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15732:2:::1;15718:12;;:16;;;;:::i;:::-;15710:6;:24;;15702:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15793:6;15778:12;:21;;;;15623:190:::0;:::o;8316:34::-;;;;:::o;9115:36::-;;;;;;;;;;;;;:::o;12086:727::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12291:1:::1;12272:15;:20;;:45;;;;;12315:2;12296:15;:21;;12272:45;12248:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;12420:1;12401:15;:20;;:45;;;;;12444:2;12425:15;:21;;12401:45;12377:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;12545:1;12530:11;:16;;:37;;;;;12565:2;12550:11;:17;;12530:37;12506:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;12642:15;12627:12;:30;;;;12685:15;12670:12;:30;;;;12724:11;12713:8;:22;;;;12759:44;12794:8;;12759:30;12776:12;;12759;;:16;;:30;;;;:::i;:::-;:34;;:44;;;;:::i;:::-;12748:8;:55;;;;12086:727:::0;;;:::o;9655:29::-;;;;:::o;12825:202::-;12953:7;12989:11;:19;13001:6;12989:19;;;;;;;;;;;;;;;:28;13009:7;12989:28;;;;;;;;;;;;;;;;12982:35;;12825:202;;;;:::o;24931:175::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25059:6:::1;25052:23;;;25076:10;25088:7;25052:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24931:175:::0;;:::o;18575:230::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18736:14:::1;18712:21;;:38;;;;;;;;;;;;;;;;;;18779:16;18763:13;:32;;;;18575:230:::0;;:::o;15421:190::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15526:2:::1;15511:12;;:17;;;;:::i;:::-;15503:6;:25;;15495:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15591:6;15572:16;:25;;;;15421:190:::0;:::o;11841:233::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11920:5:::1;11898:21;;:27;;;;;;;;;;;;;;;;;;8901:1;8892:11;11938:12;:16;;;;8901:1;8892:11;11967:16;:20;;;;12013:1;12000:12;:14;;;;12036:1;12027:8;:10;;;;12063:1;12050:12;:14;;;;11841:233::o:0;7265:198::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7376:1:::1;7356:22;;:8;:22;;;;7348:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7434:19;7444:8;7434:9;:19::i;:::-;7265:198:::0;:::o;13574:160::-;6558:12;:10;:12::i;:::-;6547:23;;:7;:5;:7::i;:::-;:23;;;6539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13718:6:::1;13692:15;:23;13708:6;13692:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13574:160:::0;;:::o;9342:24::-;;;;;;;;;;;;;:::o;8521:50::-;;;;;;;;;;;;;;;;;:::o;16132:124::-;16195:4;16221:16;:25;16238:7;16221:25;;;;;;;;;;;;;;;;;;;;;;;;;16214:32;;16132:124;;;:::o;679:187::-;737:7;759:9;775:1;771;:5;;;;:::i;:::-;759:17;;802:1;797;:6;;789:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;855:1;848:8;;;679:187;;;;:::o;5115:102::-;5168:7;5197:10;5190:17;;5115:102;:::o;1030:240::-;1158:7;1193:1;1188;:6;;1196:12;1180:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1222:9;1238:1;1234;:5;;;;:::i;:::-;1222:17;;1259:1;1252:8;;;1030:240;;;;;:::o;19486:1773::-;19620:4;19673;19647:30;;:16;:24;19664:6;19647:24;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;:67;;;;;19710:4;19681:33;;:16;:27;19698:9;19681:27;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;19647:67;19639:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;19747:16;;;;;;;;;;;19743:101;;;19789:41;19804:6;19812:9;19823:6;19789:14;:41::i;:::-;19782:48;;;;19743:101;19890:4;;;;;;;;;;;19876:18;;:10;:18;;;;:54;;;;;19914:16;;;;;;;;;;;19913:17;19876:54;:94;;;;;19949:21;;;;;;;;;;;19876:94;:154;;;;;20017:13;;19989:9;:24;20007:4;19989:24;;;;;;;;;;;;;;;;:41;;19876:154;19856:229;;;20061:10;:8;:10::i;:::-;19856:229;20097:40;20111:6;20119:9;20130:6;20097:13;:40::i;:::-;20159:35;20176:6;20184:9;20159:16;:35::i;:::-;20158:36;20150:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20227:22;20253:11;:19;20265:6;20253:19;;;;;;;;;;;;;;;;;;;;;;;;;20252:20;:47;;;;;20277:11;:22;20289:9;20277:22;;;;;;;;;;;;;;;;;;;;;;;;;20276:23;20252:47;:123;;20369:6;20252:123;;;20317:34;20325:6;20333:9;20344:6;20317:7;:34::i;:::-;20252:123;20227:148;;20410:4;20396:18;;:11;;;;;;;;;;;:18;;;;:38;;;;;20430:4;;;;;;;;;;;20418:16;;:9;:16;;;;20396:38;:57;;;;;20446:7;:5;:7::i;:::-;20438:15;;:6;:15;;;;20396:57;:79;;;;;20468:7;:5;:7::i;:::-;20457:18;;:9;:18;;;;20396:79;20392:769;;;20529:40;20554:14;20529:9;:20;20539:9;20529:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;20506:9;:20;20516:9;20506:20;;;;;;;;;;;;;;;:63;;;;20606:29;20628:6;20606:9;:17;20616:6;20606:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;20586:9;:17;20596:6;20586:17;;;;;;;;;;;;;;;:49;;;;20675:24;20689:9;20675:13;:24::i;:::-;20392:769;;;20742:7;:5;:7::i;:::-;20734:15;;:6;:15;;;:37;;;;20764:7;:5;:7::i;:::-;20753:18;;:9;:18;;;20734:37;20730:431;;;20825:40;20850:14;20825:9;:20;20835:9;20825:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;20802:9;:20;20812:9;20802:20;;;;;;;;;;;;;;;:63;;;;20902:29;20924:6;20902:9;:17;20912:6;20902:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;20882:9;:17;20892:6;20882:17;;;;;;;;;;;;;;;:49;;;;20730:431;;;21040:40;21065:14;21040:9;:20;21050:9;21040:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;21017:9;:20;21027:9;21017:20;;;;;;;;;;;;;;;:63;;;;21118:29;21140:6;21118:9;:17;21128:6;21118:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;21098:9;:17;21108:6;21098:17;;;;;;;;;;;;;;;:49;;;;20730:431;20392:769;21199:9;21178:47;;21187:10;21178:47;;;21210:14;21178:47;;;;;;:::i;:::-;;;;;;;;21245:4;21238:11;;;19486:1773;;;;;;:::o;878:140::-;936:7;965:43;969:1;972;965:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;958:50;;878:140;;;;:::o;7475:181::-;7533:16;7552:6;;;;;;;;;;;7533:25;;7580:8;7571:6;;:17;;;;;;;;;;;;;;;;;;7637:8;7606:40;;7627:8;7606:40;;;;;;;;;;;;7520:136;7475:181;:::o;21271:425::-;21406:4;21445:96;21483:6;21445:96;;;;;;;;;;;;;;;;;:9;:17;21455:6;21445:17;;;;;;;;;;;;;;;;:21;;:96;;;;;:::i;:::-;21425:9;:17;21435:6;21425:17;;;;;;;;;;;;;;;:116;;;;21577:32;21602:6;21577:9;:20;21587:9;21577:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;21554:9;:20;21564:9;21554:20;;;;;;;;;;;;;;;:55;;;;21644:9;21627:35;;21636:6;21627:35;;;21655:6;21627:35;;;;;;:::i;:::-;;;;;;;;21682:4;21675:11;;21271:425;;;;;:::o;22607:2181::-;9752:4;9733:16;;:23;;;;;;;;;;;;;;;;;;22726::::1;22752:13;;22726:39;;22778:23;22804:102;22904:1;22804:79;22874:8;;22804:49;22840:12;;22804:15;:35;;:49;;;;:::i;:::-;:69;;:79;;;;:::i;:::-;:99;;:102;;;;:::i;:::-;22778:128;;22919:20;22942:36;22962:15;22942;:19;;:36;;;;:::i;:::-;22919:59;;22995:21;23033:1;23019:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22995:40;;23066:4;23048;23053:1;23048:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;23094:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23084:4;23089:1;23084:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;23124:6;;;;;;;;;;;:57;;;23198:12;23227:1;23245:4;23274;23296:15;23124:200;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23341:17;23361:21;23341:41;;23395:19;23417:33;23430:19;23447:1;23430:12;;:16;;:19;;;;:::i;:::-;23417:8;;:12;;:33;;;;:::i;:::-;23395:55;;23463:26;23492:72;23540:11;23492:27;23506:12;;23492:9;:13;;:27;;;;:::i;:::-;:31;;:72;;;;:::i;:::-;23463:101;;23577:22;23602:40;23630:11;23602:23;23616:8;;23602:9;:13;;:23;;;;:::i;:::-;:27;;:40;;;;:::i;:::-;23577:65;;23655:26;23684:99;23781:1;23684:76;23748:11;23684:43;23714:12;;23684:9;:29;;:43;;;;:::i;:::-;:63;;:76;;;;:::i;:::-;:96;;:99;;;;:::i;:::-;23655:128;;23801:15;23830;;;;;;;;;;;23822:29;;23875:18;23915:5;23822:115;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23800:137;;;23951:16;23981:5;;;;;;;;;;;23973:19;;24016:14;24052:5;23973:101;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23950:124;;;24106:14;24091:7;:14;24099:5;;;;;;;;;;;24091:14;;;;;;;;;;;;;;;:29;;;;24160:4;24133:19;:26;24153:5;;;;;;;;;;;24133:26;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;24202:15;24177;:22;24193:5;;;;;;;;;;;24177:22;;;;;;;;;;;;;;;:40;;;;24235:34;24247:5;;;;;;;;;;;24254:14;24235:34;;;;;;;:::i;:::-;;;;;;;;24341:5;24328:18;;24373:5;24359:19;;24417:1;24399:15;:19;24395:384;;;24437:6;;;;;;;;;;;:22;;;24467:18;24515:4;24541:15;24577:1;24599::::0;24621:21:::1;;;;;;;;;;;24663:15;24437:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24717:48;24729:18;24749:15;24717:48;;;;;;;:::i;:::-;;;;;;;;24395:384;22648:2140;;;;;;;;;;;9802:5:::0;9783:16;;:24;;;;;;;;;;;;;;;;;;22607:2181::o;16379:2184::-;16557:11;;16539:15;;16521;:33;;;;:::i;:::-;:47;16517:92;;;16587:8;:6;:8::i;:::-;16517:92;16651:7;:5;:7::i;:::-;16641:17;;:6;:17;;;;:56;;;;;16690:7;:5;:7::i;:::-;16677:20;;:9;:20;;;;16641:56;:102;;;;;16717:15;:26;16733:9;16717:26;;;;;;;;;;;;;;;;;;;;;;;;;16716:27;16641:102;:138;;;;;16775:4;;;;;;;;;;;16762:17;;:9;:17;;;;16641:138;:174;;;;;16811:4;;;;;;;;;;;16798:17;;:9;:17;;;;16641:174;:210;;;;;16847:4;;;;;;;;;;;16834:17;;:9;:17;;;;16641:210;:255;;;;;16891:4;16870:26;;:9;:26;;;;16641:255;16621:1495;;;16945:12;;16935:6;:22;;16927:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;16985:32;17020:20;17030:9;17020;:20::i;:::-;16985:55;;17122:16;;17112:6;17085:24;:33;;;;:::i;:::-;:53;;17057:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;17234:21;17272:1;17258:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17234:40;;17301:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17291:4;17296:1;17291:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17349:4;17331;17336:1;17331:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17371:15;17389:6;;;;;;;;;;;:19;;;17409:6;17417:4;17389:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17423:1;17389:36;;;;;;;;:::i;:::-;;;;;;;;17371:54;;17482:4;17450:36;;:19;:30;17470:9;17450:30;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;:94;;;;;17529:15;17519:7;17490:15;:26;17506:9;17490:26;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:54;17450:94;:118;;;;;17558:10;;17548:7;:20;17450:118;17446:657;;;17615:9;17607:5;;:17;;;;;;;;;;;;;;;;;;17658:7;17645:10;:20;;;;17704:15;17686;:33;;;;17745:27;17754:5;;;;;;;;;;;17761:10;;17745:27;;;;;;;:::i;:::-;;;;;;;;17446:657;;;17851:5;17819:37;;:19;:30;17839:9;17819:30;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;:62;;;;;17871:10;;17861:7;:20;17819:62;17815:288;;;17928:9;17920:5;;:17;;;;;;;;;;;;;;;;;;17971:7;17958:10;:20;;;;18017:15;17999;:33;;;;18058:27;18067:5;;;;;;;;;;;18074:10;;18058:27;;;;;;;:::i;:::-;;;;;;;;17815:288;17446:657;16910:1206;;;16621:1495;18158:7;:5;:7::i;:::-;18148:17;;:6;:17;;;;:56;;;;;18197:7;:5;:7::i;:::-;18184:20;;:9;:20;;;;18148:56;:99;;;;;18224:15;:23;18240:6;18224:23;;;;;;;;;;;;;;;;;;;;;;;;;18223:24;18148:99;:132;;;;;18276:4;;;;;;;;;;;18266:14;;:6;:14;;;;18148:132;:177;;;;;18320:4;18299:26;;:9;:26;;;;18148:177;18128:426;;;18374:12;;18364:6;:22;;18356:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;18427:6;18418:15;;:5;;;;;;;;;;;:15;;;18414:122;;;18461:28;18471:5;;;;;;;;;;;18478:10;;18461:28;;;;;;;:::i;:::-;;;;;;;;18510:8;:6;:8::i;:::-;18414:122;18128:426;16379:2184;;;:::o;22229:366::-;22346:4;22376:11;:19;22388:6;22376:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;22399:11;:22;22411:9;22399:22;;;;;;;;;;;;;;;;;;;;;;;;;22376:45;22372:94;;;22447:5;22440:12;;;;22372:94;22492:4;;;;;;;;;;;22482:14;;:6;:14;;;:35;;;;22513:4;;;;;;;;;;;22500:17;;:9;:17;;;22482:35;22478:84;;;22543:5;22536:12;;;;22478:84;22581:4;22574:11;;22229:366;;;;;:::o;21708:509::-;21836:7;21858:21;21890:9;21882:17;;:4;;;;;;;;;;;:17;;;:78;;21952:8;;21882:78;;;21917:17;;21882:78;21858:102;;21973:17;21993:34;22023:3;21993:25;22004:13;21993:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;21973:54;;22067:39;22096:9;22067;:24;22085:4;22067:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;22040:9;:24;22058:4;22040:24;;;;;;;;;;;;;;;:66;;;;22149:4;22124:42;;22133:6;22124:42;;;22156:9;22124:42;;;;;;:::i;:::-;;;;;;;;22186:21;22197:9;22186:6;:10;;:21;;;;:::i;:::-;22179:28;;;;21708:509;;;;;:::o;16268:95::-;16349:4;16326:16;:22;16343:4;16326:22;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;16268:95;:::o;1282:260::-;1340:7;1371:1;1366;:6;1362:51;;;1398:1;1391:8;;;;1362:51;1425:9;1441:1;1437;:5;;;;:::i;:::-;1425:17;;1472:1;1467;1463;:5;;;;:::i;:::-;:10;1455:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1531:1;1524:8;;;1282:260;;;;;:::o;1554:136::-;1612:7;1641:39;1645:1;1648;1641:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1634:46;;1554:136;;;;:::o;14299:146::-;14347:15;;;;;;;;;;;14339:5;;:23;;;;;;;;;;;;;;;;;;14388:1;14375:10;:14;;;;14420:15;14402;:33;;;;14299:146::o;1702:239::-;1830:7;1864:1;1860;:5;1867:12;1852:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1893:9;1909:1;1905;:5;;;;:::i;:::-;1893:17;;1930:1;1923:8;;;1702:239;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:118::-;4988:24;5006:5;4988:24;:::i;:::-;4983:3;4976:37;4901:118;;:::o;5025:222::-;5118:4;5156:2;5145:9;5141:18;5133:26;;5169:71;5237:1;5226:9;5222:17;5213:6;5169:71;:::i;:::-;5025:222;;;;:::o;5253:329::-;5312:6;5361:2;5349:9;5340:7;5336:23;5332:32;5329:119;;;5367:79;;:::i;:::-;5329:119;5487:1;5512:53;5557:7;5548:6;5537:9;5533:22;5512:53;:::i;:::-;5502:63;;5458:117;5253:329;;;;:::o;5588:116::-;5658:21;5673:5;5658:21;:::i;:::-;5651:5;5648:32;5638:60;;5694:1;5691;5684:12;5638:60;5588:116;:::o;5710:133::-;5753:5;5791:6;5778:20;5769:29;;5807:30;5831:5;5807:30;:::i;:::-;5710:133;;;;:::o;5849:468::-;5914:6;5922;5971:2;5959:9;5950:7;5946:23;5942:32;5939:119;;;5977:79;;:::i;:::-;5939:119;6097:1;6122:53;6167:7;6158:6;6147:9;6143:22;6122:53;:::i;:::-;6112:63;;6068:117;6224:2;6250:50;6292:7;6283:6;6272:9;6268:22;6250:50;:::i;:::-;6240:60;;6195:115;5849:468;;;;;:::o;6323:329::-;6382:6;6431:2;6419:9;6410:7;6406:23;6402:32;6399:119;;;6437:79;;:::i;:::-;6399:119;6557:1;6582:53;6627:7;6618:6;6607:9;6603:22;6582:53;:::i;:::-;6572:63;;6528:117;6323:329;;;;:::o;6658:474::-;6726:6;6734;6783:2;6771:9;6762:7;6758:23;6754:32;6751:119;;;6789:79;;:::i;:::-;6751:119;6909:1;6934:53;6979:7;6970:6;6959:9;6955:22;6934:53;:::i;:::-;6924:63;;6880:117;7036:2;7062:53;7107:7;7098:6;7087:9;7083:22;7062:53;:::i;:::-;7052:63;;7007:118;6658:474;;;;;:::o;7138:619::-;7215:6;7223;7231;7280:2;7268:9;7259:7;7255:23;7251:32;7248:119;;;7286:79;;:::i;:::-;7248:119;7406:1;7431:53;7476:7;7467:6;7456:9;7452:22;7431:53;:::i;:::-;7421:63;;7377:117;7533:2;7559:53;7604:7;7595:6;7584:9;7580:22;7559:53;:::i;:::-;7549:63;;7504:118;7661:2;7687:53;7732:7;7723:6;7712:9;7708:22;7687:53;:::i;:::-;7677:63;;7632:118;7138:619;;;;;:::o;7763:468::-;7828:6;7836;7885:2;7873:9;7864:7;7860:23;7856:32;7853:119;;;7891:79;;:::i;:::-;7853:119;8011:1;8036:50;8078:7;8069:6;8058:9;8054:22;8036:50;:::i;:::-;8026:60;;7982:114;8135:2;8161:53;8206:7;8197:6;8186:9;8182:22;8161:53;:::i;:::-;8151:63;;8106:118;7763:468;;;;;:::o;8237:60::-;8265:3;8286:5;8279:12;;8237:60;;;:::o;8303:142::-;8353:9;8386:53;8404:34;8413:24;8431:5;8413:24;:::i;:::-;8404:34;:::i;:::-;8386:53;:::i;:::-;8373:66;;8303:142;;;:::o;8451:126::-;8501:9;8534:37;8565:5;8534:37;:::i;:::-;8521:50;;8451:126;;;:::o;8583:144::-;8651:9;8684:37;8715:5;8684:37;:::i;:::-;8671:50;;8583:144;;;:::o;8733:167::-;8838:55;8887:5;8838:55;:::i;:::-;8833:3;8826:68;8733:167;;:::o;8906:258::-;9017:4;9055:2;9044:9;9040:18;9032:26;;9068:89;9154:1;9143:9;9139:17;9130:6;9068:89;:::i;:::-;8906:258;;;;:::o;9170:182::-;9310:34;9306:1;9298:6;9294:14;9287:58;9170:182;:::o;9358:366::-;9500:3;9521:67;9585:2;9580:3;9521:67;:::i;:::-;9514:74;;9597:93;9686:3;9597:93;:::i;:::-;9715:2;9710:3;9706:12;9699:19;;9358:366;;;:::o;9730:419::-;9896:4;9934:2;9923:9;9919:18;9911:26;;9983:9;9977:4;9973:20;9969:1;9958:9;9954:17;9947:47;10011:131;10137:4;10011:131;:::i;:::-;10003:139;;9730:419;;;:::o;10155:166::-;10295:18;10291:1;10283:6;10279:14;10272:42;10155:166;:::o;10327:366::-;10469:3;10490:67;10554:2;10549:3;10490:67;:::i;:::-;10483:74;;10566:93;10655:3;10566:93;:::i;:::-;10684:2;10679:3;10675:12;10668:19;;10327:366;;;:::o;10699:419::-;10865:4;10903:2;10892:9;10888:18;10880:26;;10952:9;10946:4;10942:20;10938:1;10927:9;10923:17;10916:47;10980:131;11106:4;10980:131;:::i;:::-;10972:139;;10699:419;;;:::o;11124:180::-;11172:77;11169:1;11162:88;11269:4;11266:1;11259:15;11293:4;11290:1;11283:15;11310:305;11350:3;11369:20;11387:1;11369:20;:::i;:::-;11364:25;;11403:20;11421:1;11403:20;:::i;:::-;11398:25;;11557:1;11489:66;11485:74;11482:1;11479:81;11476:107;;;11563:18;;:::i;:::-;11476:107;11607:1;11604;11600:9;11593:16;;11310:305;;;;:::o;11621:180::-;11669:77;11666:1;11659:88;11766:4;11763:1;11756:15;11790:4;11787:1;11780:15;11807:185;11847:1;11864:20;11882:1;11864:20;:::i;:::-;11859:25;;11898:20;11916:1;11898:20;:::i;:::-;11893:25;;11937:1;11927:35;;11942:18;;:::i;:::-;11927:35;11984:1;11981;11977:9;11972:14;;11807:185;;;;:::o;11998:176::-;12138:28;12134:1;12126:6;12122:14;12115:52;11998:176;:::o;12180:366::-;12322:3;12343:67;12407:2;12402:3;12343:67;:::i;:::-;12336:74;;12419:93;12508:3;12419:93;:::i;:::-;12537:2;12532:3;12528:12;12521:19;;12180:366;;;:::o;12552:419::-;12718:4;12756:2;12745:9;12741:18;12733:26;;12805:9;12799:4;12795:20;12791:1;12780:9;12776:17;12769:47;12833:131;12959:4;12833:131;:::i;:::-;12825:139;;12552:419;;;:::o;12977:161::-;13117:13;13113:1;13105:6;13101:14;13094:37;12977:161;:::o;13144:366::-;13286:3;13307:67;13371:2;13366:3;13307:67;:::i;:::-;13300:74;;13383:93;13472:3;13383:93;:::i;:::-;13501:2;13496:3;13492:12;13485:19;;13144:366;;;:::o;13516:419::-;13682:4;13720:2;13709:9;13705:18;13697:26;;13769:9;13763:4;13759:20;13755:1;13744:9;13740:17;13733:47;13797:131;13923:4;13797:131;:::i;:::-;13789:139;;13516:419;;;:::o;13941:332::-;14062:4;14100:2;14089:9;14085:18;14077:26;;14113:71;14181:1;14170:9;14166:17;14157:6;14113:71;:::i;:::-;14194:72;14262:2;14251:9;14247:18;14238:6;14194:72;:::i;:::-;13941:332;;;;;:::o;14279:137::-;14333:5;14364:6;14358:13;14349:22;;14380:30;14404:5;14380:30;:::i;:::-;14279:137;;;;:::o;14422:345::-;14489:6;14538:2;14526:9;14517:7;14513:23;14509:32;14506:119;;;14544:79;;:::i;:::-;14506:119;14664:1;14689:61;14742:7;14733:6;14722:9;14718:22;14689:61;:::i;:::-;14679:71;;14635:125;14422:345;;;;:::o;14773:225::-;14913:34;14909:1;14901:6;14897:14;14890:58;14982:8;14977:2;14969:6;14965:15;14958:33;14773:225;:::o;15004:366::-;15146:3;15167:67;15231:2;15226:3;15167:67;:::i;:::-;15160:74;;15243:93;15332:3;15243:93;:::i;:::-;15361:2;15356:3;15352:12;15345:19;;15004:366;;;:::o;15376:419::-;15542:4;15580:2;15569:9;15565:18;15557:26;;15629:9;15623:4;15619:20;15615:1;15604:9;15600:17;15593:47;15657:131;15783:4;15657:131;:::i;:::-;15649:139;;15376:419;;;:::o;15801:177::-;15941:29;15937:1;15929:6;15925:14;15918:53;15801:177;:::o;15984:366::-;16126:3;16147:67;16211:2;16206:3;16147:67;:::i;:::-;16140:74;;16223:93;16312:3;16223:93;:::i;:::-;16341:2;16336:3;16332:12;16325:19;;15984:366;;;:::o;16356:419::-;16522:4;16560:2;16549:9;16545:18;16537:26;;16609:9;16603:4;16599:20;16595:1;16584:9;16580:17;16573:47;16637:131;16763:4;16637:131;:::i;:::-;16629:139;;16356:419;;;:::o;16781:191::-;16821:4;16841:20;16859:1;16841:20;:::i;:::-;16836:25;;16875:20;16893:1;16875:20;:::i;:::-;16870:25;;16914:1;16911;16908:8;16905:34;;;16919:18;;:::i;:::-;16905:34;16964:1;16961;16957:9;16949:17;;16781:191;;;;:::o;16978:161::-;17118:13;17114:1;17106:6;17102:14;17095:37;16978:161;:::o;17145:366::-;17287:3;17308:67;17372:2;17367:3;17308:67;:::i;:::-;17301:74;;17384:93;17473:3;17384:93;:::i;:::-;17502:2;17497:3;17493:12;17486:19;;17145:366;;;:::o;17517:419::-;17683:4;17721:2;17710:9;17706:18;17698:26;;17770:9;17764:4;17760:20;17756:1;17745:9;17741:17;17734:47;17798:131;17924:4;17798:131;:::i;:::-;17790:139;;17517:419;;;:::o;17942:161::-;18082:13;18078:1;18070:6;18066:14;18059:37;17942:161;:::o;18109:366::-;18251:3;18272:67;18336:2;18331:3;18272:67;:::i;:::-;18265:74;;18348:93;18437:3;18348:93;:::i;:::-;18466:2;18461:3;18457:12;18450:19;;18109:366;;;:::o;18481:419::-;18647:4;18685:2;18674:9;18670:18;18662:26;;18734:9;18728:4;18724:20;18720:1;18709:9;18705:17;18698:47;18762:131;18888:4;18762:131;:::i;:::-;18754:139;;18481:419;;;:::o;18906:180::-;18954:77;18951:1;18944:88;19051:4;19048:1;19041:15;19075:4;19072:1;19065:15;19092:180;19140:77;19137:1;19130:88;19237:4;19234:1;19227:15;19261:4;19258:1;19251:15;19278:143;19335:5;19366:6;19360:13;19351:22;;19382:33;19409:5;19382:33;:::i;:::-;19278:143;;;;:::o;19427:351::-;19497:6;19546:2;19534:9;19525:7;19521:23;19517:32;19514:119;;;19552:79;;:::i;:::-;19514:119;19672:1;19697:64;19753:7;19744:6;19733:9;19729:22;19697:64;:::i;:::-;19687:74;;19643:128;19427:351;;;;:::o;19784:85::-;19829:7;19858:5;19847:16;;19784:85;;;:::o;19875:158::-;19933:9;19966:61;19984:42;19993:32;20019:5;19993:32;:::i;:::-;19984:42;:::i;:::-;19966:61;:::i;:::-;19953:74;;19875:158;;;:::o;20039:147::-;20134:45;20173:5;20134:45;:::i;:::-;20129:3;20122:58;20039:147;;:::o;20192:114::-;20259:6;20293:5;20287:12;20277:22;;20192:114;;;:::o;20312:184::-;20411:11;20445:6;20440:3;20433:19;20485:4;20480:3;20476:14;20461:29;;20312:184;;;;:::o;20502:132::-;20569:4;20592:3;20584:11;;20622:4;20617:3;20613:14;20605:22;;20502:132;;;:::o;20640:108::-;20717:24;20735:5;20717:24;:::i;:::-;20712:3;20705:37;20640:108;;:::o;20754:179::-;20823:10;20844:46;20886:3;20878:6;20844:46;:::i;:::-;20922:4;20917:3;20913:14;20899:28;;20754:179;;;;:::o;20939:113::-;21009:4;21041;21036:3;21032:14;21024:22;;20939:113;;;:::o;21088:732::-;21207:3;21236:54;21284:5;21236:54;:::i;:::-;21306:86;21385:6;21380:3;21306:86;:::i;:::-;21299:93;;21416:56;21466:5;21416:56;:::i;:::-;21495:7;21526:1;21511:284;21536:6;21533:1;21530:13;21511:284;;;21612:6;21606:13;21639:63;21698:3;21683:13;21639:63;:::i;:::-;21632:70;;21725:60;21778:6;21725:60;:::i;:::-;21715:70;;21571:224;21558:1;21555;21551:9;21546:14;;21511:284;;;21515:14;21811:3;21804:10;;21212:608;;;21088:732;;;;:::o;21826:831::-;22089:4;22127:3;22116:9;22112:19;22104:27;;22141:71;22209:1;22198:9;22194:17;22185:6;22141:71;:::i;:::-;22222:80;22298:2;22287:9;22283:18;22274:6;22222:80;:::i;:::-;22349:9;22343:4;22339:20;22334:2;22323:9;22319:18;22312:48;22377:108;22480:4;22471:6;22377:108;:::i;:::-;22369:116;;22495:72;22563:2;22552:9;22548:18;22539:6;22495:72;:::i;:::-;22577:73;22645:3;22634:9;22630:19;22621:6;22577:73;:::i;:::-;21826:831;;;;;;;;:::o;22663:147::-;22764:11;22801:3;22786:18;;22663:147;;;;:::o;22816:114::-;;:::o;22936:398::-;23095:3;23116:83;23197:1;23192:3;23116:83;:::i;:::-;23109:90;;23208:93;23297:3;23208:93;:::i;:::-;23326:1;23321:3;23317:11;23310:18;;22936:398;;;:::o;23340:379::-;23524:3;23546:147;23689:3;23546:147;:::i;:::-;23539:154;;23710:3;23703:10;;23340:379;;;:::o;23725:807::-;23974:4;24012:3;24001:9;23997:19;23989:27;;24026:71;24094:1;24083:9;24079:17;24070:6;24026:71;:::i;:::-;24107:72;24175:2;24164:9;24160:18;24151:6;24107:72;:::i;:::-;24189:80;24265:2;24254:9;24250:18;24241:6;24189:80;:::i;:::-;24279;24355:2;24344:9;24340:18;24331:6;24279:80;:::i;:::-;24369:73;24437:3;24426:9;24422:19;24413:6;24369:73;:::i;:::-;24452;24520:3;24509:9;24505:19;24496:6;24452:73;:::i;:::-;23725:807;;;;;;;;;:::o;24538:143::-;24595:5;24626:6;24620:13;24611:22;;24642:33;24669:5;24642:33;:::i;:::-;24538:143;;;;:::o;24687:663::-;24775:6;24783;24791;24840:2;24828:9;24819:7;24815:23;24811:32;24808:119;;;24846:79;;:::i;:::-;24808:119;24966:1;24991:64;25047:7;25038:6;25027:9;25023:22;24991:64;:::i;:::-;24981:74;;24937:128;25104:2;25130:64;25186:7;25177:6;25166:9;25162:22;25130:64;:::i;:::-;25120:74;;25075:129;25243:2;25269:64;25325:7;25316:6;25305:9;25301:22;25269:64;:::i;:::-;25259:74;;25214:129;24687:663;;;;;:::o;25356:332::-;25477:4;25515:2;25504:9;25500:18;25492:26;;25528:71;25596:1;25585:9;25581:17;25572:6;25528:71;:::i;:::-;25609:72;25677:2;25666:9;25662:18;25653:6;25609:72;:::i;:::-;25356:332;;;;;:::o;25694:156::-;25834:8;25830:1;25822:6;25818:14;25811:32;25694:156;:::o;25856:365::-;25998:3;26019:66;26083:1;26078:3;26019:66;:::i;:::-;26012:73;;26094:93;26183:3;26094:93;:::i;:::-;26212:2;26207:3;26203:12;26196:19;;25856:365;;;:::o;26227:419::-;26393:4;26431:2;26420:9;26416:18;26408:26;;26480:9;26474:4;26470:20;26466:1;26455:9;26451:17;26444:47;26508:131;26634:4;26508:131;:::i;:::-;26500:139;;26227:419;;;:::o;26652:222::-;26792:34;26788:1;26780:6;26776:14;26769:58;26861:5;26856:2;26848:6;26844:15;26837:30;26652:222;:::o;26880:366::-;27022:3;27043:67;27107:2;27102:3;27043:67;:::i;:::-;27036:74;;27119:93;27208:3;27119:93;:::i;:::-;27237:2;27232:3;27228:12;27221:19;;26880:366;;;:::o;27252:419::-;27418:4;27456:2;27445:9;27441:18;27433:26;;27505:9;27499:4;27495:20;27491:1;27480:9;27476:17;27469:47;27533:131;27659:4;27533:131;:::i;:::-;27525:139;;27252:419;;;:::o;27677:483::-;27848:4;27886:2;27875:9;27871:18;27863:26;;27899:71;27967:1;27956:9;27952:17;27943:6;27899:71;:::i;:::-;28017:9;28011:4;28007:20;28002:2;27991:9;27987:18;27980:48;28045:108;28148:4;28139:6;28045:108;:::i;:::-;28037:116;;27677:483;;;;;:::o;28166:117::-;28275:1;28272;28265:12;28289:281;28372:27;28394:4;28372:27;:::i;:::-;28364:6;28360:40;28502:6;28490:10;28487:22;28466:18;28454:10;28451:34;28448:62;28445:88;;;28513:18;;:::i;:::-;28445:88;28553:10;28549:2;28542:22;28332:238;28289:281;;:::o;28576:129::-;28610:6;28637:20;;:::i;:::-;28627:30;;28666:33;28694:4;28686:6;28666:33;:::i;:::-;28576:129;;;:::o;28711:311::-;28788:4;28878:18;28870:6;28867:30;28864:56;;;28900:18;;:::i;:::-;28864:56;28950:4;28942:6;28938:17;28930:25;;29010:4;29004;29000:15;28992:23;;28711:311;;;:::o;29028:117::-;29137:1;29134;29127:12;29168:732;29275:5;29300:81;29316:64;29373:6;29316:64;:::i;:::-;29300:81;:::i;:::-;29291:90;;29401:5;29430:6;29423:5;29416:21;29464:4;29457:5;29453:16;29446:23;;29517:4;29509:6;29505:17;29497:6;29493:30;29546:3;29538:6;29535:15;29532:122;;;29565:79;;:::i;:::-;29532:122;29680:6;29663:231;29697:6;29692:3;29689:15;29663:231;;;29772:3;29801:48;29845:3;29833:10;29801:48;:::i;:::-;29796:3;29789:61;29879:4;29874:3;29870:14;29863:21;;29739:155;29723:4;29718:3;29714:14;29707:21;;29663:231;;;29667:21;29281:619;;29168:732;;;;;:::o;29923:385::-;30005:5;30054:3;30047:4;30039:6;30035:17;30031:27;30021:122;;30062:79;;:::i;:::-;30021:122;30172:6;30166:13;30197:105;30298:3;30290:6;30283:4;30275:6;30271:17;30197:105;:::i;:::-;30188:114;;30011:297;29923:385;;;;:::o;30314:554::-;30409:6;30458:2;30446:9;30437:7;30433:23;30429:32;30426:119;;;30464:79;;:::i;:::-;30426:119;30605:1;30594:9;30590:17;30584:24;30635:18;30627:6;30624:30;30621:117;;;30657:79;;:::i;:::-;30621:117;30762:89;30843:7;30834:6;30823:9;30819:22;30762:89;:::i;:::-;30752:99;;30555:306;30314:554;;;;:::o;30874:348::-;30914:7;30937:20;30955:1;30937:20;:::i;:::-;30932:25;;30971:20;30989:1;30971:20;:::i;:::-;30966:25;;31159:1;31091:66;31087:74;31084:1;31081:81;31076:1;31069:9;31062:17;31058:105;31055:131;;;31166:18;;:::i;:::-;31055:131;31214:1;31211;31207:9;31196:20;;30874:348;;;;:::o;31228:220::-;31368:34;31364:1;31356:6;31352:14;31345:58;31437:3;31432:2;31424:6;31420:15;31413:28;31228:220;:::o;31454:366::-;31596:3;31617:67;31681:2;31676:3;31617:67;:::i;:::-;31610:74;;31693:93;31782:3;31693:93;:::i;:::-;31811:2;31806:3;31802:12;31795:19;;31454:366;;;:::o;31826:419::-;31992:4;32030:2;32019:9;32015:18;32007:26;;32079:9;32073:4;32069:20;32065:1;32054:9;32050:17;32043:47;32107:131;32233:4;32107:131;:::i;:::-;32099:139;;31826:419;;;:::o

Swarm Source

ipfs://bd8288a00de771b0df47aaf7c6d6ef0b886578a1656cc93a608eaff671941ef3

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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