ETH Price: $3,048.72 (+2.23%)
Gas: 2 Gwei

Contract

0xa48F7A48BDAFf54587A1C4e4B2f35459a2328E29
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer195847502024-04-04 20:22:5993 days ago1712262179IN
0xa48F7A48...9a2328E29
0 ETH0.0019933236.47699972
Approve195554192024-03-31 17:42:1197 days ago1711906931IN
0xa48F7A48...9a2328E29
0 ETH0.0005206320.84472375
Approve191251602024-01-31 8:04:23157 days ago1706688263IN
0xa48F7A48...9a2328E29
0 ETH0.0004401317.62142369
Approve189011532023-12-30 21:58:11189 days ago1703973491IN
0xa48F7A48...9a2328E29
0 ETH0.0007562116.02120561
Approve188942712023-12-29 22:44:11190 days ago1703889851IN
0xa48F7A48...9a2328E29
0 ETH0.0008490517.98810072
Approve187599892023-12-11 2:29:23208 days ago1702261763IN
0xa48F7A48...9a2328E29
0 ETH0.00515482109.93678829
Approve187592472023-12-11 0:00:11209 days ago1702252811IN
0xa48F7A48...9a2328E29
0 ETH0.0005252521.02953779
Approve187581002023-12-10 20:09:35209 days ago1702238975IN
0xa48F7A48...9a2328E29
0 ETH0.0017501537.03179205
Approve186304842023-11-22 23:13:35227 days ago1700694815IN
0xa48F7A48...9a2328E29
0 ETH0.0014074151.55186994
Approve186304832023-11-22 23:13:23227 days ago1700694803IN
0xa48F7A48...9a2328E29
0 ETH0.0024649652.22281127
Approve185947472023-11-17 23:02:47232 days ago1700262167IN
0xa48F7A48...9a2328E29
0 ETH0.0006354425.4411509
Approve185575862023-11-12 18:21:59237 days ago1699813319IN
0xa48F7A48...9a2328E29
0 ETH0.0013215927.99935207
Approve185545312023-11-12 8:05:59237 days ago1699776359IN
0xa48F7A48...9a2328E29
0 ETH0.0008947819.08296951
Transfer183997872023-10-21 16:10:47259 days ago1697904647IN
0xa48F7A48...9a2328E29
0 ETH0.0008650814.55536851
Approve183960432023-10-21 3:36:11259 days ago1697859371IN
0xa48F7A48...9a2328E29
0 ETH0.000352357.46506127
Approve183416832023-10-13 13:10:23267 days ago1697202623IN
0xa48F7A48...9a2328E29
0 ETH0.000445469.50288807
Transfer183416722023-10-13 13:08:11267 days ago1697202491IN
0xa48F7A48...9a2328E29
0 ETH0.000571049.60806677
Approve183134122023-10-09 14:08:11271 days ago1696860491IN
0xa48F7A48...9a2328E29
0 ETH0.0005499111.65042784
Approve183030392023-10-08 3:19:23272 days ago1696735163IN
0xa48F7A48...9a2328E29
0 ETH0.000245175.19433285
Approve182994332023-10-07 15:14:11273 days ago1696691651IN
0xa48F7A48...9a2328E29
0 ETH0.000348727.38810183
Approve182918952023-10-06 13:55:59274 days ago1696600559IN
0xa48F7A48...9a2328E29
0 ETH0.00036887.86752774
Transfer182918892023-10-06 13:54:47274 days ago1696600487IN
0xa48F7A48...9a2328E29
0 ETH0.000317948.47083691
Approve182851242023-10-05 15:12:11275 days ago1696518731IN
0xa48F7A48...9a2328E29
0 ETH0.0007907916.75367641
Approve182831102023-10-05 8:26:59275 days ago1696494419IN
0xa48F7A48...9a2328E29
0 ETH0.000275255.83152767
Approve182800032023-10-04 22:01:47276 days ago1696456907IN
0xa48F7A48...9a2328E29
0 ETH0.0004955410.49865735
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
182785362023-10-04 17:06:11276 days ago1696439171
0xa48F7A48...9a2328E29
0.00292949 ETH
182785362023-10-04 17:06:11276 days ago1696439171
0xa48F7A48...9a2328E29
0.00292949 ETH
181307972023-09-13 23:57:47297 days ago1694649467
0xa48F7A48...9a2328E29
0.02719407 ETH
181307972023-09-13 23:57:47297 days ago1694649467
0xa48F7A48...9a2328E29
0.02719407 ETH
180330002023-08-31 7:15:59310 days ago1693466159
0xa48F7A48...9a2328E29
0.0367436 ETH
180330002023-08-31 7:15:59310 days ago1693466159
0xa48F7A48...9a2328E29
0.0367436 ETH
179510842023-08-19 20:04:59322 days ago1692475499
0xa48F7A48...9a2328E29
0.01021646 ETH
179510842023-08-19 20:04:59322 days ago1692475499
0xa48F7A48...9a2328E29
0.01021646 ETH
179510552023-08-19 19:59:11322 days ago1692475151
0xa48F7A48...9a2328E29
0.01087267 ETH
179510552023-08-19 19:59:11322 days ago1692475151
0xa48F7A48...9a2328E29
0.01087267 ETH
177378392023-07-21 0:05:47352 days ago1689897947
0xa48F7A48...9a2328E29
0.01483407 ETH
177378392023-07-21 0:05:47352 days ago1689897947
0xa48F7A48...9a2328E29
0.01483407 ETH
177329492023-07-20 7:39:59352 days ago1689838799
0xa48F7A48...9a2328E29
0.01255449 ETH
177329492023-07-20 7:39:59352 days ago1689838799
0xa48F7A48...9a2328E29
0.01255449 ETH
177329092023-07-20 7:31:59352 days ago1689838319
0xa48F7A48...9a2328E29
0.01385551 ETH
177329092023-07-20 7:31:59352 days ago1689838319
0xa48F7A48...9a2328E29
0.01385551 ETH
177328052023-07-20 7:10:35352 days ago1689837035
0xa48F7A48...9a2328E29
0.07143047 ETH
177328052023-07-20 7:10:35352 days ago1689837035
0xa48F7A48...9a2328E29
0.07143047 ETH
176097922023-07-03 0:08:35370 days ago1688342915
0xa48F7A48...9a2328E29
0.00492979 ETH
176097922023-07-03 0:08:35370 days ago1688342915
0xa48F7A48...9a2328E29
0.00492979 ETH
175573092023-06-25 15:12:23377 days ago1687705943
0xa48F7A48...9a2328E29
0.03028722 ETH
175573092023-06-25 15:12:23377 days ago1687705943
0xa48F7A48...9a2328E29
0.03028722 ETH
172639432023-05-15 8:17:23418 days ago1684138643
0xa48F7A48...9a2328E29
0.00725373 ETH
172639432023-05-15 8:17:23418 days ago1684138643
0xa48F7A48...9a2328E29
0.00725373 ETH
169717232023-04-03 23:24:59460 days ago1680564299
0xa48F7A48...9a2328E29
0.05437582 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BattleFish

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-30
*/

//SPDX-License-Identifier: Unlicense



pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}


pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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


pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


pragma solidity ^0.8.0;
interface IStakable {
	function stakedBalanceOf(address account) external view returns (uint256);
    function getStake(address account) external view returns (uint256, uint256, uint256);
    function stake(address account, uint256 amount, uint256 unstakeTime, bool isPlayer, uint256 adjustedStake) external;
    function unstake(address account, uint256 unstakeAmount, bool isPlayer, uint256 adjustedStake) external;
    function sync(address account, uint256 adjustedStake) external;
    function toggleStaking() external;
    event Stake(address indexed staker, uint256 amount, uint256 stakeTime, uint256 stakeExpire);
    event Unstake(address indexed staker, uint256 amount, uint256 stakeAmountRemaining);
    event Adjust(address indexed staker, uint256 oldStake, uint256 newStake);
    event ToggleStaking(bool enabled);
}


pragma solidity ^0.8.0;


interface IBattleFish is IERC20, IStakable {
	event ChangeBuyTax(uint256 prevTax, uint256 newTax);
    event ChangeSellTax(uint256 prevTax, uint256 newTax);
    event ChangeRewards(uint256 prevRew, uint256 newRew);
    event SetStakingContract(address stakingCon);
    event SetPool(address isNowPool);
    event FailsafeTokenSwap(uint256 amount);
    event FailsafeETHTransfer(uint256 amount);
    event FreezeMint(uint256 mintLockTime);
    event ThawMint(uint256 mintLockTime);

    function freezeMint(uint256 timestamp) external;
    function thawMint() external;
    function mint(uint256 amount, address recipient) external;
    function setStakingContract(address addr) external;
    function getStakingContract() external view returns (address);
    function setBuyTax(uint8 newTax) external;
    function setSellTax(uint8 newTax) external;
    function setRewards(uint8 newRewards) external;
    function setPool(address addr) external;
    function isPool(address addr) external view returns (bool);
    function failsafeTokenSwap(uint256 amount) external;
    function failsafeETHtransfer() external;
}

pragma solidity ^0.8.0;

contract BattleFish is IBattleFish, Context {
    /**
     * =====================
     * =====================
     * =====           =====
     * ===== Variables =====
     * =====           =====
     * =====================
     * =====================
     */
    
    // Fair Launch
    bool private _trading; // Trading stage, used for fair launch
    uint256 private _timeWalletQuantityLimit = 2000000000;
    uint256 private _timeTxCountLimit = 2000000000;
    uint256 private _gasLimit;
    mapping (address => bool) private _oneTx;
    mapping (address => uint256) private _buyCounter;

    // States
    bool private _swapping;
    bool public stakingEnabled = false;
    bool public mintLocked = true;
    uint public mintLockTime = 1651438800;

    // Mappings
    mapping (address => bool) private _isPool;
    mapping (address => uint256) private _balances;
    mapping (address => uint256) private _stakedBalances;
    mapping (address => uint256) private _stakeExpireTime;
    mapping (address => uint256) private _stakeBeginTime;
    mapping (address => mapping (address => uint256)) private _allowances;

    // ERC20
    uint256 private _totalSupply = 10 * 10**6 * 10**9; 
    string private constant _name = "Battle.Fish";
    string private constant _symbol = "$BATTLE";
    uint8 private constant _decimals = 9;

    // Tax and staking
    uint8 private _buyTax = 10;
    uint8 private _sellTax = 10;
    uint8 private _stakingRewards = 20;

    // Addresses
    address immutable private _lp;
    address payable immutable private _vault;
    address payable immutable private _multiSig;
    address payable private _stakingContract;
    address private constant _uniRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    IUniswapV2Router02 private UniV2Router;

    constructor(address vault, address multiSig) {
        require(vault != address(0) && multiSig != address(0), "$BATTLE: cannot assign privilege to zero address");
        _lp = multiSig;
        _balances[multiSig] = _totalSupply;
        UniV2Router = IUniswapV2Router02(_uniRouter);
        _vault = payable(vault);
        _multiSig = payable(multiSig);
    }

    modifier onlyMultiSig {
        require (_msgSender() == _multiSig, "$BATTLE: unauthorized");
        _;
    }

    modifier lockSwap {
        _swapping = true;
        _;
        _swapping = false;
    }

    /**
     * =====================
     * =====================
     * =====           =====
     * =====   ERC20   =====
     * =====           =====
     * =====================
     * =====================
     */
    function name() external pure returns (string memory) {
        return _name;
    }

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

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

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require (_allowances[sender][_msgSender()] >= amount, "ERC20: transfer amount exceeds allowance");
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

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

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(_balances[sender] >= amount, "ERC20: transfer exceeds balance");
        require(amount > 0, "$BATTLE: cannot transfer zero");
        require(!(_isPool[sender] && _isPool[recipient]), "$BATTLE: cannot transfer pool to pool");

        if (!_trading) {
            require(sender == _lp, "$BATTLE: trading disabled");
        }
        
        unchecked {
            _balances[sender] -= amount;
        }

        uint256 taxedAmount = amount;
        uint256 tax = 0;
    
        if (_isPool[sender] == true && recipient != _lp && recipient != _uniRouter) {
            tax = amount * _buyTax / 100;
            taxedAmount = amount - tax;
            _balances[address(this)] += tax;
            if (block.timestamp < _timeTxCountLimit) {
                require(tx.gasprice <= _gasLimit || sender == _lp, "$BATTLE: excessive gas");
                require(!_oneTx[tx.origin], "$BATTLE: transaction count limit");
                _buyCounter[tx.origin] += taxedAmount;
                _oneTx[tx.origin] = true;
            }
            if (block.timestamp < _timeWalletQuantityLimit) {
                require((_balances[recipient] + taxedAmount) <= 50000000000000, "$BATTLE: exceeds wallet limit");
            }
        }
        if (_isPool[recipient] == true && sender != _lp && sender != _uniRouter){ 
            tax = amount * _sellTax / 100;
            taxedAmount = amount - tax;
            _balances[address(this)] += tax;

            if (_balances[address(this)] > 100 * 10**9 && !_swapping) {
                uint256 _swapAmount = _balances[address(this)];
                if (_swapAmount > amount * 40 / 100) _swapAmount = amount * 40 / 100;
                _tokensToETH(_swapAmount);
            }
        }
    
        _balances[recipient] += taxedAmount;

        emit Transfer(sender, recipient, amount);
    }

    /**
     * =====================
     * =====================
     * =====           =====
     * =====  Staking  =====
     * =====           =====
     * =====================
     * =====================
     */
    function stakedBalanceOf(address account) external view override returns (uint256) {
        return _stakedBalances[account];    
    }

    function getStake(address account) external view override returns (uint256, uint256, uint256) {
        if (stakingEnabled && _stakedBalances[account] > 0)
            return (_stakedBalances[account], _stakeBeginTime[account], _stakeExpireTime[account]);
        else return (0,0,0);
    }

    function stake(address account, uint256 amount, uint256 unstakeTime, bool isPlayer, uint256 adjustedStake) external override {
        require (_msgSender() == _stakingContract, "$BATTLE: must stake through staking contract");
        require (account != address(0), "$BATTLE: cannot stake zero address");
        require (stakingEnabled, "$BATTLE: staking currently not enabled"); 

        if (isPlayer)
        { 
            if (_stakedBalances[account] != adjustedStake){
                emit Adjust(account, _stakedBalances[account], adjustedStake);
                _stakedBalances[account] = adjustedStake;
            }
        }

        require (unstakeTime > (block.timestamp + 86100),"$BATTLE: minimum stake time 23 hours 55 min"); 
        require (unstakeTime >= _stakeExpireTime[account], "$BATTLE: new stake time cannot be shorter");
        require (_balances[account] >= amount, "$BATTLE: stake exceeds available balance");
        if (_stakedBalances[account] == 0) require (amount > 0, "$BATTLE: cannot stake 0 tokens");

        _balances[account] = _balances[account] - amount;
        _balances[_stakingContract] = _balances[_stakingContract] + amount;
        _stakedBalances[account] = _stakedBalances[account] + amount;

        _stakeExpireTime[account] = unstakeTime;
        _stakeBeginTime[account] = block.timestamp;

        emit Stake(account, amount, block.timestamp, unstakeTime);
    }

    function unstake(address account, uint256 unstakeAmount, bool isPlayer, uint256 adjustedStake) external override {
        require (_msgSender() == _stakingContract, "$BATTLE: must unstake through staking contract");
        require (account != address(0), "$BATTLE: cannot unstake zero address");
        require(unstakeAmount > 0, "$BATTLE: cannot unstake zero tokens");

        if (isPlayer)
        { 
            if (_stakedBalances[account] != adjustedStake){
                emit Adjust(account, _stakedBalances[account], adjustedStake);
                _stakedBalances[account] = adjustedStake;
            }
        }

        require(unstakeAmount <= _stakedBalances[account], "$BATTLE: unstake exceeds staked balance");
        
        _stakedBalances[account] = _stakedBalances[account] - unstakeAmount;
        _balances[account] = _balances[account] + unstakeAmount;
        _balances[_stakingContract] = _balances[_stakingContract] - unstakeAmount;
        
        emit Unstake(account, unstakeAmount, _stakedBalances[account]);
    }

    function sync(address account, uint256 adjustedStake) external override {
        require (_msgSender() == _stakingContract, "$BATTLE: unauthorized");
        require (account != address(0), "$BATTLE: cannot sync zero address");
        emit Adjust(account, _stakedBalances[account], adjustedStake);
        _stakedBalances[account] = adjustedStake;
    }

    function toggleStaking() external override onlyMultiSig {
        require (_stakingContract != address(0), "$BATTLE: staking contract not set");
        if (stakingEnabled == true) stakingEnabled = false;
        else stakingEnabled = true;
        emit ToggleStaking(stakingEnabled);
    }

    function setStakingContract(address addr) external override onlyMultiSig {
        require(addr != address(0), "$BATTLE: cannot be zero address");
        _stakingContract = payable(addr);
        emit SetStakingContract(addr);
    }

    function getStakingContract() external view override returns (address) {
        return _stakingContract;
    }

    /**
     * =====================
     * =====================
     * =====           =====
     * =====  Minting  =====
     * =====           =====
     * =====================
     * =====================
     */
    function freezeMint(uint256 timestamp) external override onlyMultiSig {
        require (timestamp > mintLockTime, "$BATTLE: cannot reduce lock time");
        mintLocked = true;
        mintLockTime = timestamp;

        emit FreezeMint(mintLockTime);
    }

    function thawMint() external override onlyMultiSig {
        require (block.timestamp >= mintLockTime, "$BATTLE: still frozen");
        mintLocked = false;
        mintLockTime = block.timestamp + 86400;

        emit ThawMint(mintLockTime);
    } 

    function mint(uint256 amount, address recipient) external override onlyMultiSig {
        require (block.timestamp > mintLockTime && mintLocked == false, "$BATTLE: still frozen");
        _totalSupply = _totalSupply + amount;
        _balances[recipient] = _balances[recipient] + amount;

        emit Transfer(address(0), recipient, amount);
    }
    
    /**
     * =====================
     * =====================
     * =====           =====
     * =====    Tax    =====
     * =====           =====
     * =====================
     * =====================
     */
    function setBuyTax(uint8 newTax) external override onlyMultiSig {
        require (newTax <= 10, "$BATTLE: tax cannot exceed 10%");
        emit ChangeBuyTax(_buyTax, newTax);
        _buyTax = newTax;
    }

    function setSellTax(uint8 newTax) external override onlyMultiSig {
        require (newTax <= 10, "$BATTLE: tax cannot exceed 10%");
        emit ChangeSellTax(_sellTax, newTax);
        _sellTax = newTax;
    }

    function setRewards(uint8 newRewards) external override onlyMultiSig {
        require (newRewards >= 20, "$BATTLE: rewards minimum 20%");
        require (newRewards <= 100, "$BATTLE: rewards maximum 100%");
        emit ChangeRewards(_stakingRewards, newRewards);
        _stakingRewards = newRewards;
    }

    function setPool(address addr) external override onlyMultiSig {
        require(addr != address(0), "$BATTLE: zero address cannot be pool");
        _isPool[addr] = true;
        emit SetPool(addr);
    }
    
    function isPool(address addr) external view override returns (bool){
        return _isPool[addr];
    }

     /**
     * =====================
     * =====================
     * =====           =====
     * =====  Utility  =====
     * =====           =====
     * =====================
     * =====================
     */
    function _transferETH(uint256 amount, address payable _to) private {
        (bool sent,) = _to.call{value: amount}("");
        require(sent, "Failed to send Ether");
    }

    function _tokensToETH(uint256 amount) private lockSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = UniV2Router.WETH();

        _approve(address(this), _uniRouter, amount);
        UniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(amount, 0, path, address(this), block.timestamp);

        if (address(this).balance > 0) 
        {
            if (stakingEnabled) {
                uint stakingShare = address(this).balance * _stakingRewards / 100;
                _transferETH(stakingShare, _stakingContract);
            }
            _transferETH(address(this).balance, _vault);
        }
    }
    
    function failsafeTokenSwap(uint256 amount) external override onlyMultiSig {
        _tokensToETH(amount);
        emit FailsafeTokenSwap(amount);
    }

    function failsafeETHtransfer() external override onlyMultiSig {
        emit FailsafeETHTransfer(address(this).balance);
        (bool sent,) = _msgSender().call{value: address(this).balance}("");
        require(sent, "Failed to send Ether");
    }

    function timeToBattle(uint256 gasLimit) external onlyMultiSig {
        require(!_trading, "$BATTLE: trading already enabled");
        _trading = true;
        _timeWalletQuantityLimit = block.timestamp + 30 minutes;
        _timeTxCountLimit = block.timestamp + 5 minutes;
        _gasLimit = gasLimit;
    }

    receive() external payable {}

    fallback() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"multiSig","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldStake","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newStake","type":"uint256"}],"name":"Adjust","type":"event"},{"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":"prevTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTax","type":"uint256"}],"name":"ChangeBuyTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"prevRew","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newRew","type":"uint256"}],"name":"ChangeRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"prevTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTax","type":"uint256"}],"name":"ChangeSellTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FailsafeETHTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FailsafeTokenSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"mintLockTime","type":"uint256"}],"name":"FreezeMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"isNowPool","type":"address"}],"name":"SetPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"stakingCon","type":"address"}],"name":"SetStakingContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakeTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakeExpire","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"mintLockTime","type":"uint256"}],"name":"ThawMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ToggleStaking","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":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakeAmountRemaining","type":"uint256"}],"name":"Unstake","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"failsafeETHtransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"failsafeTokenSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"freezeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStakingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8","name":"newTax","type":"uint8"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newRewards","type":"uint8"}],"name":"setRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newTax","type":"uint8"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"unstakeTime","type":"uint256"},{"internalType":"bool","name":"isPlayer","type":"bool"},{"internalType":"uint256","name":"adjustedStake","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"stakedBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"adjustedStake","type":"uint256"}],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"thawMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gasLimit","type":"uint256"}],"name":"timeToBattle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleStaking","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"},{"internalType":"uint256","name":"unstakeAmount","type":"uint256"},{"internalType":"bool","name":"isPlayer","type":"bool"},{"internalType":"uint256","name":"adjustedStake","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052637735940060015563773594006002556000600660016101000a81548160ff0219169083151502179055506001600660026101000a81548160ff02191690831515021790555063626ef4d0600755662386f26fc10000600e55600a600f60006101000a81548160ff021916908360ff160217905550600a600f60016101000a81548160ff021916908360ff1602179055506014600f60026101000a81548160ff021916908360ff160217905550348015620000be57600080fd5b5060405162005c1638038062005c168339818101604052810190620000e49190620002f0565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156200014f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b62000191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001889062000358565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600e54600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505062000428565b600081519050620002ea816200040e565b92915050565b600080604083850312156200030457600080fd5b60006200031485828601620002d9565b92505060206200032785828601620002d9565b9150509250929050565b6000620003406030836200037a565b91506200034d82620003bf565b604082019050919050565b60006020820190508181036000830152620003738162000331565b9050919050565b600082825260208201905092915050565b600062000398826200039f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b7f24424154544c453a2063616e6e6f742061737369676e2070726976696c65676560008201527f20746f207a65726f206164647265737300000000000000000000000000000000602082015250565b62000419816200038b565b81146200042557600080fd5b50565b60805160601c60a05160601c60c05160601c615753620004c36000396000818161075a015281816108e401528181610c5301528181610e1a01528181610fb101528181611149015281816114410152818161157e015281816117bf015281816119040152818161273801526128aa01526000613bf801526000818161307d015281816131bb0152818161330301526135c801526157536000f3fe6080604052600436106101dc5760003560e01c80637a76646011610102578063a2bad69211610095578063dd62ed3e11610064578063dd62ed3e1461069e578063df3c3a30146106db578063e3ed399514610706578063ef4fcafa1461072f576101e3565b8063a2bad692146105e6578063a9059cbb1461060f578063bb11c6271461064c578063d8fda58d14610675576101e3565b806394bf804d116100d157806394bf804d1461055257806395d89b411461057b578063962b5df9146105a65780639dd373b9146105bd576101e3565b80637a766460146104945780638e68dce4146104d3578063938caa38146104fe57806393fea3f814610527576101e3565b806323b872dd1161017a57806349abdc141161014957806349abdc14146103c85780635b16ebb7146103f15780636081752b1461042e57806370a0823114610457576101e3565b806323b872dd14610320578063313ce5671461035d5780633b8105b3146103885780634437152a1461039f576101e3565b80631023231c116101b65780631023231c14610276578063167653911461028d57806318160ddd146102ca5780631cfff51b146102f5576101e3565b806304c93731146101e557806306fdde031461020e578063095ea7b314610239576101e3565b366101e357005b005b3480156101f157600080fd5b5061020c60048036038101906102079190613f49565b610758565b005b34801561021a57600080fd5b50610223610887565b6040516102309190614626565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190613e33565b6108c4565b60405161026d919061460b565b60405180910390f35b34801561028257600080fd5b5061028b6108e2565b005b34801561029957600080fd5b506102b460048036038101906102af9190613d56565b610a64565b6040516102c19190614aa8565b60405180910390f35b3480156102d657600080fd5b506102df610aad565b6040516102ec9190614aa8565b60405180910390f35b34801561030157600080fd5b5061030a610ab7565b604051610317919061460b565b60405180910390f35b34801561032c57600080fd5b5061034760048036038101906103429190613de4565b610aca565b604051610354919061460b565b60405180910390f35b34801561036957600080fd5b50610372610c48565b60405161037f9190614b7d565b60405180910390f35b34801561039457600080fd5b5061039d610c51565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190613d56565b610e18565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190613fae565b610faf565b005b3480156103fd57600080fd5b5061041860048036038101906104139190613d56565b6110f1565b604051610425919061460b565b60405180910390f35b34801561043a57600080fd5b5061045560048036038101906104509190613fae565b611147565b005b34801561046357600080fd5b5061047e60048036038101906104799190613d56565b611289565b60405161048b9190614aa8565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190613d56565b6112d2565b6040516104ca93929190614b46565b60405180910390f35b3480156104df57600080fd5b506104e8611415565b6040516104f591906145f0565b60405180910390f35b34801561050a57600080fd5b5061052560048036038101906105209190613f49565b61143f565b005b34801561053357600080fd5b5061053c611576565b6040516105499190614aa8565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190613f72565b61157c565b005b34801561058757600080fd5b50610590611780565b60405161059d9190614626565b60405180910390f35b3480156105b257600080fd5b506105bb6117bd565b005b3480156105c957600080fd5b506105e460048036038101906105df9190613d56565b611902565b005b3480156105f257600080fd5b5061060d60048036038101906106089190613ed2565b611a82565b005b34801561061b57600080fd5b5061063660048036038101906106319190613e33565b6121a8565b604051610643919061460b565b60405180910390f35b34801561065857600080fd5b50610673600480360381019061066e9190613e6f565b6121c6565b005b34801561068157600080fd5b5061069c60048036038101906106979190613f49565b612736565b005b3480156106aa57600080fd5b506106c560048036038101906106c09190613da8565b61280e565b6040516106d29190614aa8565b60405180910390f35b3480156106e757600080fd5b506106f0612895565b6040516106fd919061460b565b60405180910390f35b34801561071257600080fd5b5061072d60048036038101906107289190613fae565b6128a8565b005b34801561073b57600080fd5b5061075660048036038101906107519190613e33565b612a31565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610797612c0f565b73ffffffffffffffffffffffffffffffffffffffff16146107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e4906148c8565b60405180910390fd5b60008054906101000a900460ff161561083b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083290614648565b60405180910390fd5b60016000806101000a81548160ff021916908315150217905550610708426108639190614c21565b60018190555061012c426108779190614c21565b6002819055508060038190555050565b60606040518060400160405280600b81526020017f426174746c652e46697368000000000000000000000000000000000000000000815250905090565b60006108d86108d1612c0f565b8484612c17565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610921612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614610977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e906148c8565b60405180910390fd5b7f1f64c685e757b0c83e841acaf1a5ce47a4fb3aa43f46bdc8217f4a7a5e8d7ed8476040516109a69190614aa8565b60405180910390a160006109b8612c0f565b73ffffffffffffffffffffffffffffffffffffffff16476040516109db906145db565b60006040518083038185875af1925050503d8060008114610a18576040519150601f19603f3d011682016040523d82523d6000602084013e610a1d565b606091505b5050905080610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5890614748565b60405180910390fd5b50565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e54905090565b600660019054906101000a900460ff1681565b600081600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b16612c0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990614888565b60405180910390fd5b610b9d848484612de2565b610c3d84610ba9612c0f565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bf3612c0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c389190614d02565b612c17565b600190509392505050565b60006009905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610c90612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614610ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdd906148c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f90614a88565b60405180910390fd5b60011515600660019054906101000a900460ff1615151415610db4576000600660016101000a81548160ff021916908315150217905550610dd0565b6001600660016101000a81548160ff0219169083151502179055505b7f39c3c37112aa9f1b74ce99befb140716c3f946730c4b9d9f4939c003ce446c77600660019054906101000a900460ff16604051610e0e919061460b565b60405180910390a1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e57612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea4906148c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490614768565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f67816c9262630d6052ccaada1732fda377aa9e9abb3bc91cfd887a016a18a43a81604051610fa491906145f0565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610fee612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b906148c8565b60405180910390fd5b600a8160ff16111561108b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611082906147c8565b60405180910390fd5b7f6d9880198c1159f52707b61a6882da80275b14b90bd9e5f332b3ed9d39eeb42c600f60019054906101000a900460ff16826040516110cb929190614b98565b60405180910390a180600f60016101000a81548160ff021916908360ff16021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611186612c0f565b73ffffffffffffffffffffffffffffffffffffffff16146111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d3906148c8565b60405180910390fd5b600a8160ff161115611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a906147c8565b60405180910390fd5b7fae004c20b38d4d71a0cf8304ec672eacfd34dedc962fa7e5e82d9e55ac7444c0600f60009054906101000a900460ff1682604051611263929190614b98565b60405180910390a180600f60006101000a81548160ff021916908360ff16021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806000600660019054906101000a900460ff16801561133257506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561140257600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492509250925061140e565b60008060009250925092505b9193909250565b6000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661147e612c0f565b73ffffffffffffffffffffffffffffffffffffffff16146114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb906148c8565b60405180910390fd5b6007548111611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f90614788565b60405180910390fd5b6001600660026101000a81548160ff021916908315150217905550806007819055507f22d94bc7514daebac7d4ba58d9c133477215e3ca7d28fdc673301c1473345ea260075460405161156b9190614aa8565b60405180910390a150565b60075481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115bb612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614611611576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611608906148c8565b60405180910390fd5b60075442118015611635575060001515600660029054906101000a900460ff161515145b611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b90614a28565b60405180910390fd5b81600e546116829190614c21565b600e8190555081600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d39190614c21565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117749190614aa8565b60405180910390a35050565b60606040518060400160405280600781526020017f24424154544c4500000000000000000000000000000000000000000000000000815250905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117fc612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614611852576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611849906148c8565b60405180910390fd5b600754421015611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90614a28565b60405180910390fd5b6000600660026101000a81548160ff02191690831515021790555062015180426118c19190614c21565b6007819055507f69f59bb2e123082e696cc484745189309eda69163011dce939f71d19c714b3dc6007546040516118f89190614aa8565b60405180910390a1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611941612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e906148c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90614828565b60405180910390fd5b80600f60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f77da29da4ba6bf0a49e709076c8fc946886ea566b52a1429ac484d59f879be3781604051611a7791906145f0565b60405180910390a150565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ac3612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b10906149e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b80906149a8565b60405180910390fd5b600660019054906101000a900460ff16611bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcf90614928565b60405180910390fd5b8115611cf95780600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611cf8578473ffffffffffffffffffffffffffffffffffffffff167f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e7600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483604051611cab929190614b1d565b60405180910390a280600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6201505442611d089190614c21565b8311611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4090614968565b60405180910390fd5b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831015611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290614a48565b60405180910390fd5b83600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4490614728565b60405180910390fd5b6000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611ed95760008411611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf90614808565b60405180910390fd5b5b83600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f249190614d02565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd49190614c21565b60096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120849190614c21565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff167ff556991011e831bcfac4f406d547e5e32cdd98267efab83935230d5f8d02c44685428660405161219993929190614b46565b60405180910390a25050505050565b60006121bc6121b5612c0f565b8484612de2565b6001905092915050565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612207612c0f565b73ffffffffffffffffffffffffffffffffffffffff161461225d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612254906148a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156122cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c4906148e8565b60405180910390fd5b60008311612310576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612307906146a8565b60405180910390fd5b81156124315780600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612430578373ffffffffffffffffffffffffffffffffffffffff167f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e7600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836040516123e3929190614b1d565b60405180910390a280600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311156124b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124aa90614908565b60405180910390fd5b82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fe9190614d02565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258c9190614c21565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508260096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263c9190614d02565b60096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb28084600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051612728929190614b1d565b60405180910390a250505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612775612c0f565b73ffffffffffffffffffffffffffffffffffffffff16146127cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c2906148c8565b60405180910390fd5b6127d4816138ab565b7f8ae3c994b30b13928ab97e09c40c6723fd78cb4c761449737ecc51cb1f91d877816040516128039190614aa8565b60405180910390a150565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660029054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166128e7612c0f565b73ffffffffffffffffffffffffffffffffffffffff161461293d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612934906148c8565b60405180910390fd5b60148160ff161015612984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297b90614708565b60405180910390fd5b60648160ff1611156129cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c290614a68565b60405180910390fd5b7f717d38a0af5ed15f7369104a29a63331d40ff3543f1dbc8ad39b22689f88b517600f60029054906101000a900460ff1682604051612a0b929190614b98565b60405180910390a180600f60026101000a81548160ff021916908360ff16021790555050565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a72612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614612ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abf906148c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2f906146c8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e7600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483604051612bbf929190614b1d565b60405180910390a280600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7e90614a08565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cee906146e8565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612dd59190614aa8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e49906149c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb990614668565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3b906147e8565b60405180910390fd5b60008111612f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7e90614688565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130295750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306090614948565b60405180910390fd5b60008054906101000a900460ff1661310a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310090614848565b60405180910390fd5b5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506000819050600060011515600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561320a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156132565750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561356b576064600f60009054906101000a900460ff1660ff168461327b9190614ca8565b6132859190614c77565b905080836132939190614d02565b915080600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132e49190614c21565b925050819055506002544210156134cc576003543a11158061335157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b613390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338790614988565b60405180910390fd5b600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561341d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613414906147a8565b60405180910390fd5b81600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461346c9190614c21565b925050819055506001600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60015442101561356a57652d79883d200082600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135289190614c21565b1115613569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356090614868565b60405180910390fd5b5b5b60011515600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561361757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156136635750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156137e9576064600f60019054906101000a900460ff1660ff16846136889190614ca8565b6136929190614c77565b905080836136a09190614d02565b915080600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136f19190614c21565b9250508190555064174876e800600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156137585750600660009054906101000a900460ff16155b156137e8576000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060646028856137b09190614ca8565b6137ba9190614c77565b8111156137dd5760646028856137d09190614ca8565b6137da9190614c77565b90505b6137e6816138ab565b505b5b81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138389190614c21565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161389c9190614aa8565b60405180910390a35050505050565b6001600660006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613909577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156139375781602001602082028036833780820191505090505b5090503081600081518110613975577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a1757600080fd5b505afa158015613a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4f9190613d7f565b81600181518110613a89577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ae230737a250d5630b4cf539739df2c5dacb4c659f2488d84612c17565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b46959493929190614ac3565b600060405180830381600087803b158015613b6057600080fd5b505af1158015613b74573d6000803e3d6000fd5b505050506000471115613c1d57600660019054906101000a900460ff1615613bf25760006064600f60029054906101000a900460ff1660ff1647613bb89190614ca8565b613bc29190614c77565b9050613bf081600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613c3c565b505b613c1c477f0000000000000000000000000000000000000000000000000000000000000000613c3c565b5b506000600660006101000a81548160ff02191690831515021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff1683604051613c62906145db565b60006040518083038185875af1925050503d8060008114613c9f576040519150601f19603f3d011682016040523d82523d6000602084013e613ca4565b606091505b5050905080613ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cdf90614748565b60405180910390fd5b505050565b600081359050613cfc816156c1565b92915050565b600081519050613d11816156c1565b92915050565b600081359050613d26816156d8565b92915050565b600081359050613d3b816156ef565b92915050565b600081359050613d5081615706565b92915050565b600060208284031215613d6857600080fd5b6000613d7684828501613ced565b91505092915050565b600060208284031215613d9157600080fd5b6000613d9f84828501613d02565b91505092915050565b60008060408385031215613dbb57600080fd5b6000613dc985828601613ced565b9250506020613dda85828601613ced565b9150509250929050565b600080600060608486031215613df957600080fd5b6000613e0786828701613ced565b9350506020613e1886828701613ced565b9250506040613e2986828701613d2c565b9150509250925092565b60008060408385031215613e4657600080fd5b6000613e5485828601613ced565b9250506020613e6585828601613d2c565b9150509250929050565b60008060008060808587031215613e8557600080fd5b6000613e9387828801613ced565b9450506020613ea487828801613d2c565b9350506040613eb587828801613d17565b9250506060613ec687828801613d2c565b91505092959194509250565b600080600080600060a08688031215613eea57600080fd5b6000613ef888828901613ced565b9550506020613f0988828901613d2c565b9450506040613f1a88828901613d2c565b9350506060613f2b88828901613d17565b9250506080613f3c88828901613d2c565b9150509295509295909350565b600060208284031215613f5b57600080fd5b6000613f6984828501613d2c565b91505092915050565b60008060408385031215613f8557600080fd5b6000613f9385828601613d2c565b9250506020613fa485828601613ced565b9150509250929050565b600060208284031215613fc057600080fd5b6000613fce84828501613d41565b91505092915050565b6000613fe38383613fef565b60208301905092915050565b613ff881614d36565b82525050565b61400781614d36565b82525050565b600061401882614bd1565b6140228185614bf4565b935061402d83614bc1565b8060005b8381101561405e5781516140458882613fd7565b975061405083614be7565b925050600181019050614031565b5085935050505092915050565b61407481614d48565b82525050565b61408381614d8b565b82525050565b600061409482614bdc565b61409e8185614c10565b93506140ae818560208601614daf565b6140b781614e40565b840191505092915050565b60006140cf602083614c10565b91506140da82614e51565b602082019050919050565b60006140f2602383614c10565b91506140fd82614e7a565b604082019050919050565b6000614115601d83614c10565b915061412082614ec9565b602082019050919050565b6000614138602383614c10565b915061414382614ef2565b604082019050919050565b600061415b602183614c10565b915061416682614f41565b604082019050919050565b600061417e602283614c10565b915061418982614f90565b604082019050919050565b60006141a1601c83614c10565b91506141ac82614fdf565b602082019050919050565b60006141c4602883614c10565b91506141cf82615008565b604082019050919050565b60006141e7601483614c10565b91506141f282615057565b602082019050919050565b600061420a602483614c10565b915061421582615080565b604082019050919050565b600061422d602083614c10565b9150614238826150cf565b602082019050919050565b6000614250602083614c10565b915061425b826150f8565b602082019050919050565b6000614273601e83614c10565b915061427e82615121565b602082019050919050565b6000614296601f83614c10565b91506142a18261514a565b602082019050919050565b60006142b9601e83614c10565b91506142c482615173565b602082019050919050565b60006142dc601f83614c10565b91506142e78261519c565b602082019050919050565b60006142ff601983614c10565b915061430a826151c5565b602082019050919050565b6000614322601d83614c10565b915061432d826151ee565b602082019050919050565b6000614345602883614c10565b915061435082615217565b604082019050919050565b6000614368602e83614c10565b915061437382615266565b604082019050919050565b600061438b601583614c10565b9150614396826152b5565b602082019050919050565b60006143ae602483614c10565b91506143b9826152de565b604082019050919050565b60006143d1602783614c10565b91506143dc8261532d565b604082019050919050565b60006143f4602683614c10565b91506143ff8261537c565b604082019050919050565b6000614417602583614c10565b9150614422826153cb565b604082019050919050565b600061443a602b83614c10565b91506144458261541a565b604082019050919050565b600061445d601683614c10565b915061446882615469565b602082019050919050565b6000614480602283614c10565b915061448b82615492565b604082019050919050565b60006144a3602583614c10565b91506144ae826154e1565b604082019050919050565b60006144c6602c83614c10565b91506144d182615530565b604082019050919050565b60006144e9600083614c05565b91506144f48261557f565b600082019050919050565b600061450c602483614c10565b915061451782615582565b604082019050919050565b600061452f601583614c10565b915061453a826155d1565b602082019050919050565b6000614552602983614c10565b915061455d826155fa565b604082019050919050565b6000614575601d83614c10565b915061458082615649565b602082019050919050565b6000614598602183614c10565b91506145a382615672565b604082019050919050565b6145b781614d74565b82525050565b6145c681614d9d565b82525050565b6145d581614d7e565b82525050565b60006145e6826144dc565b9150819050919050565b60006020820190506146056000830184613ffe565b92915050565b6000602082019050614620600083018461406b565b92915050565b600060208201905081810360008301526146408184614089565b905092915050565b60006020820190508181036000830152614661816140c2565b9050919050565b60006020820190508181036000830152614681816140e5565b9050919050565b600060208201905081810360008301526146a181614108565b9050919050565b600060208201905081810360008301526146c18161412b565b9050919050565b600060208201905081810360008301526146e18161414e565b9050919050565b6000602082019050818103600083015261470181614171565b9050919050565b6000602082019050818103600083015261472181614194565b9050919050565b60006020820190508181036000830152614741816141b7565b9050919050565b60006020820190508181036000830152614761816141da565b9050919050565b60006020820190508181036000830152614781816141fd565b9050919050565b600060208201905081810360008301526147a181614220565b9050919050565b600060208201905081810360008301526147c181614243565b9050919050565b600060208201905081810360008301526147e181614266565b9050919050565b6000602082019050818103600083015261480181614289565b9050919050565b60006020820190508181036000830152614821816142ac565b9050919050565b60006020820190508181036000830152614841816142cf565b9050919050565b60006020820190508181036000830152614861816142f2565b9050919050565b6000602082019050818103600083015261488181614315565b9050919050565b600060208201905081810360008301526148a181614338565b9050919050565b600060208201905081810360008301526148c18161435b565b9050919050565b600060208201905081810360008301526148e18161437e565b9050919050565b60006020820190508181036000830152614901816143a1565b9050919050565b60006020820190508181036000830152614921816143c4565b9050919050565b60006020820190508181036000830152614941816143e7565b9050919050565b600060208201905081810360008301526149618161440a565b9050919050565b600060208201905081810360008301526149818161442d565b9050919050565b600060208201905081810360008301526149a181614450565b9050919050565b600060208201905081810360008301526149c181614473565b9050919050565b600060208201905081810360008301526149e181614496565b9050919050565b60006020820190508181036000830152614a01816144b9565b9050919050565b60006020820190508181036000830152614a21816144ff565b9050919050565b60006020820190508181036000830152614a4181614522565b9050919050565b60006020820190508181036000830152614a6181614545565b9050919050565b60006020820190508181036000830152614a8181614568565b9050919050565b60006020820190508181036000830152614aa18161458b565b9050919050565b6000602082019050614abd60008301846145ae565b92915050565b600060a082019050614ad860008301886145ae565b614ae5602083018761407a565b8181036040830152614af7818661400d565b9050614b066060830185613ffe565b614b1360808301846145ae565b9695505050505050565b6000604082019050614b3260008301856145ae565b614b3f60208301846145ae565b9392505050565b6000606082019050614b5b60008301866145ae565b614b6860208301856145ae565b614b7560408301846145ae565b949350505050565b6000602082019050614b9260008301846145cc565b92915050565b6000604082019050614bad60008301856145bd565b614bba60208301846145bd565b9392505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614c2c82614d74565b9150614c3783614d74565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c6c57614c6b614de2565b5b828201905092915050565b6000614c8282614d74565b9150614c8d83614d74565b925082614c9d57614c9c614e11565b5b828204905092915050565b6000614cb382614d74565b9150614cbe83614d74565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614cf757614cf6614de2565b5b828202905092915050565b6000614d0d82614d74565b9150614d1883614d74565b925082821015614d2b57614d2a614de2565b5b828203905092915050565b6000614d4182614d54565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614d9682614d74565b9050919050565b6000614da882614d7e565b9050919050565b60005b83811015614dcd578082015181840152602081019050614db2565b83811115614ddc576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f24424154544c453a2074726164696e6720616c726561647920656e61626c6564600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2063616e6e6f74207472616e73666572207a65726f000000600082015250565b7f24424154544c453a2063616e6e6f7420756e7374616b65207a65726f20746f6b60008201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2063616e6e6f742073796e63207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2072657761726473206d696e696d756d2032302500000000600082015250565b7f24424154544c453a207374616b65206578636565647320617661696c61626c6560008201527f2062616c616e6365000000000000000000000000000000000000000000000000602082015250565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b7f24424154544c453a207a65726f20616464726573732063616e6e6f742062652060008201527f706f6f6c00000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2063616e6e6f7420726564756365206c6f636b2074696d65600082015250565b7f24424154544c453a207472616e73616374696f6e20636f756e74206c696d6974600082015250565b7f24424154544c453a207461782063616e6e6f7420657863656564203130250000600082015250565b7f45524332303a207472616e7366657220657863656564732062616c616e636500600082015250565b7f24424154544c453a2063616e6e6f74207374616b65203020746f6b656e730000600082015250565b7f24424154544c453a2063616e6e6f74206265207a65726f206164647265737300600082015250565b7f24424154544c453a2074726164696e672064697361626c656400000000000000600082015250565b7f24424154544c453a20657863656564732077616c6c6574206c696d6974000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a206d75737420756e7374616b65207468726f75676820737460008201527f616b696e6720636f6e7472616374000000000000000000000000000000000000602082015250565b7f24424154544c453a20756e617574686f72697a65640000000000000000000000600082015250565b7f24424154544c453a2063616e6e6f7420756e7374616b65207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a20756e7374616b652065786365656473207374616b65642060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a207374616b696e672063757272656e746c79206e6f74206560008201527f6e61626c65640000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2063616e6e6f74207472616e7366657220706f6f6c20746f60008201527f20706f6f6c000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a206d696e696d756d207374616b652074696d65203233206860008201527f6f757273203535206d696e000000000000000000000000000000000000000000602082015250565b7f24424154544c453a206578636573736976652067617300000000000000000000600082015250565b7f24424154544c453a2063616e6e6f74207374616b65207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a206d757374207374616b65207468726f756768207374616b60008201527f696e6720636f6e74726163740000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a207374696c6c2066726f7a656e0000000000000000000000600082015250565b7f24424154544c453a206e6577207374616b652074696d652063616e6e6f74206260008201527f652073686f727465720000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2072657761726473206d6178696d756d2031303025000000600082015250565b7f24424154544c453a207374616b696e6720636f6e7472616374206e6f7420736560008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6156ca81614d36565b81146156d557600080fd5b50565b6156e181614d48565b81146156ec57600080fd5b50565b6156f881614d74565b811461570357600080fd5b50565b61570f81614d7e565b811461571a57600080fd5b5056fea2646970667358221220de00bab191865c3490739bbe2c0f63fd9967d3f0d6cc2168c450117313fff2ce64736f6c6343000804003300000000000000000000000053accb7934126a62403dced9b557e78f7db1acb40000000000000000000000008ed852dbe439284b6e864fd71e40c1aad0767850

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80637a76646011610102578063a2bad69211610095578063dd62ed3e11610064578063dd62ed3e1461069e578063df3c3a30146106db578063e3ed399514610706578063ef4fcafa1461072f576101e3565b8063a2bad692146105e6578063a9059cbb1461060f578063bb11c6271461064c578063d8fda58d14610675576101e3565b806394bf804d116100d157806394bf804d1461055257806395d89b411461057b578063962b5df9146105a65780639dd373b9146105bd576101e3565b80637a766460146104945780638e68dce4146104d3578063938caa38146104fe57806393fea3f814610527576101e3565b806323b872dd1161017a57806349abdc141161014957806349abdc14146103c85780635b16ebb7146103f15780636081752b1461042e57806370a0823114610457576101e3565b806323b872dd14610320578063313ce5671461035d5780633b8105b3146103885780634437152a1461039f576101e3565b80631023231c116101b65780631023231c14610276578063167653911461028d57806318160ddd146102ca5780631cfff51b146102f5576101e3565b806304c93731146101e557806306fdde031461020e578063095ea7b314610239576101e3565b366101e357005b005b3480156101f157600080fd5b5061020c60048036038101906102079190613f49565b610758565b005b34801561021a57600080fd5b50610223610887565b6040516102309190614626565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190613e33565b6108c4565b60405161026d919061460b565b60405180910390f35b34801561028257600080fd5b5061028b6108e2565b005b34801561029957600080fd5b506102b460048036038101906102af9190613d56565b610a64565b6040516102c19190614aa8565b60405180910390f35b3480156102d657600080fd5b506102df610aad565b6040516102ec9190614aa8565b60405180910390f35b34801561030157600080fd5b5061030a610ab7565b604051610317919061460b565b60405180910390f35b34801561032c57600080fd5b5061034760048036038101906103429190613de4565b610aca565b604051610354919061460b565b60405180910390f35b34801561036957600080fd5b50610372610c48565b60405161037f9190614b7d565b60405180910390f35b34801561039457600080fd5b5061039d610c51565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190613d56565b610e18565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190613fae565b610faf565b005b3480156103fd57600080fd5b5061041860048036038101906104139190613d56565b6110f1565b604051610425919061460b565b60405180910390f35b34801561043a57600080fd5b5061045560048036038101906104509190613fae565b611147565b005b34801561046357600080fd5b5061047e60048036038101906104799190613d56565b611289565b60405161048b9190614aa8565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190613d56565b6112d2565b6040516104ca93929190614b46565b60405180910390f35b3480156104df57600080fd5b506104e8611415565b6040516104f591906145f0565b60405180910390f35b34801561050a57600080fd5b5061052560048036038101906105209190613f49565b61143f565b005b34801561053357600080fd5b5061053c611576565b6040516105499190614aa8565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190613f72565b61157c565b005b34801561058757600080fd5b50610590611780565b60405161059d9190614626565b60405180910390f35b3480156105b257600080fd5b506105bb6117bd565b005b3480156105c957600080fd5b506105e460048036038101906105df9190613d56565b611902565b005b3480156105f257600080fd5b5061060d60048036038101906106089190613ed2565b611a82565b005b34801561061b57600080fd5b5061063660048036038101906106319190613e33565b6121a8565b604051610643919061460b565b60405180910390f35b34801561065857600080fd5b50610673600480360381019061066e9190613e6f565b6121c6565b005b34801561068157600080fd5b5061069c60048036038101906106979190613f49565b612736565b005b3480156106aa57600080fd5b506106c560048036038101906106c09190613da8565b61280e565b6040516106d29190614aa8565b60405180910390f35b3480156106e757600080fd5b506106f0612895565b6040516106fd919061460b565b60405180910390f35b34801561071257600080fd5b5061072d60048036038101906107289190613fae565b6128a8565b005b34801561073b57600080fd5b5061075660048036038101906107519190613e33565b612a31565b005b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff16610797612c0f565b73ffffffffffffffffffffffffffffffffffffffff16146107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e4906148c8565b60405180910390fd5b60008054906101000a900460ff161561083b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083290614648565b60405180910390fd5b60016000806101000a81548160ff021916908315150217905550610708426108639190614c21565b60018190555061012c426108779190614c21565b6002819055508060038190555050565b60606040518060400160405280600b81526020017f426174746c652e46697368000000000000000000000000000000000000000000815250905090565b60006108d86108d1612c0f565b8484612c17565b6001905092915050565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff16610921612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614610977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e906148c8565b60405180910390fd5b7f1f64c685e757b0c83e841acaf1a5ce47a4fb3aa43f46bdc8217f4a7a5e8d7ed8476040516109a69190614aa8565b60405180910390a160006109b8612c0f565b73ffffffffffffffffffffffffffffffffffffffff16476040516109db906145db565b60006040518083038185875af1925050503d8060008114610a18576040519150601f19603f3d011682016040523d82523d6000602084013e610a1d565b606091505b5050905080610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5890614748565b60405180910390fd5b50565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e54905090565b600660019054906101000a900460ff1681565b600081600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b16612c0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990614888565b60405180910390fd5b610b9d848484612de2565b610c3d84610ba9612c0f565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bf3612c0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c389190614d02565b612c17565b600190509392505050565b60006009905090565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff16610c90612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614610ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdd906148c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f90614a88565b60405180910390fd5b60011515600660019054906101000a900460ff1615151415610db4576000600660016101000a81548160ff021916908315150217905550610dd0565b6001600660016101000a81548160ff0219169083151502179055505b7f39c3c37112aa9f1b74ce99befb140716c3f946730c4b9d9f4939c003ce446c77600660019054906101000a900460ff16604051610e0e919061460b565b60405180910390a1565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff16610e57612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea4906148c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490614768565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f67816c9262630d6052ccaada1732fda377aa9e9abb3bc91cfd887a016a18a43a81604051610fa491906145f0565b60405180910390a150565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff16610fee612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b906148c8565b60405180910390fd5b600a8160ff16111561108b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611082906147c8565b60405180910390fd5b7f6d9880198c1159f52707b61a6882da80275b14b90bd9e5f332b3ed9d39eeb42c600f60019054906101000a900460ff16826040516110cb929190614b98565b60405180910390a180600f60016101000a81548160ff021916908360ff16021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff16611186612c0f565b73ffffffffffffffffffffffffffffffffffffffff16146111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d3906148c8565b60405180910390fd5b600a8160ff161115611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a906147c8565b60405180910390fd5b7fae004c20b38d4d71a0cf8304ec672eacfd34dedc962fa7e5e82d9e55ac7444c0600f60009054906101000a900460ff1682604051611263929190614b98565b60405180910390a180600f60006101000a81548160ff021916908360ff16021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806000600660019054906101000a900460ff16801561133257506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561140257600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492509250925061140e565b60008060009250925092505b9193909250565b6000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff1661147e612c0f565b73ffffffffffffffffffffffffffffffffffffffff16146114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb906148c8565b60405180910390fd5b6007548111611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f90614788565b60405180910390fd5b6001600660026101000a81548160ff021916908315150217905550806007819055507f22d94bc7514daebac7d4ba58d9c133477215e3ca7d28fdc673301c1473345ea260075460405161156b9190614aa8565b60405180910390a150565b60075481565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff166115bb612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614611611576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611608906148c8565b60405180910390fd5b60075442118015611635575060001515600660029054906101000a900460ff161515145b611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b90614a28565b60405180910390fd5b81600e546116829190614c21565b600e8190555081600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d39190614c21565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117749190614aa8565b60405180910390a35050565b60606040518060400160405280600781526020017f24424154544c4500000000000000000000000000000000000000000000000000815250905090565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff166117fc612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614611852576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611849906148c8565b60405180910390fd5b600754421015611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90614a28565b60405180910390fd5b6000600660026101000a81548160ff02191690831515021790555062015180426118c19190614c21565b6007819055507f69f59bb2e123082e696cc484745189309eda69163011dce939f71d19c714b3dc6007546040516118f89190614aa8565b60405180910390a1565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff16611941612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e906148c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90614828565b60405180910390fd5b80600f60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f77da29da4ba6bf0a49e709076c8fc946886ea566b52a1429ac484d59f879be3781604051611a7791906145f0565b60405180910390a150565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ac3612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b10906149e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b80906149a8565b60405180910390fd5b600660019054906101000a900460ff16611bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcf90614928565b60405180910390fd5b8115611cf95780600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611cf8578473ffffffffffffffffffffffffffffffffffffffff167f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e7600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483604051611cab929190614b1d565b60405180910390a280600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6201505442611d089190614c21565b8311611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4090614968565b60405180910390fd5b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831015611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290614a48565b60405180910390fd5b83600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4490614728565b60405180910390fd5b6000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611ed95760008411611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf90614808565b60405180910390fd5b5b83600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f249190614d02565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd49190614c21565b60096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120849190614c21565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff167ff556991011e831bcfac4f406d547e5e32cdd98267efab83935230d5f8d02c44685428660405161219993929190614b46565b60405180910390a25050505050565b60006121bc6121b5612c0f565b8484612de2565b6001905092915050565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612207612c0f565b73ffffffffffffffffffffffffffffffffffffffff161461225d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612254906148a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156122cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c4906148e8565b60405180910390fd5b60008311612310576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612307906146a8565b60405180910390fd5b81156124315780600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612430578373ffffffffffffffffffffffffffffffffffffffff167f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e7600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836040516123e3929190614b1d565b60405180910390a280600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311156124b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124aa90614908565b60405180910390fd5b82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fe9190614d02565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258c9190614c21565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508260096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263c9190614d02565b60096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb28084600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051612728929190614b1d565b60405180910390a250505050565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff16612775612c0f565b73ffffffffffffffffffffffffffffffffffffffff16146127cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c2906148c8565b60405180910390fd5b6127d4816138ab565b7f8ae3c994b30b13928ab97e09c40c6723fd78cb4c761449737ecc51cb1f91d877816040516128039190614aa8565b60405180910390a150565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660029054906101000a900460ff1681565b7f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff166128e7612c0f565b73ffffffffffffffffffffffffffffffffffffffff161461293d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612934906148c8565b60405180910390fd5b60148160ff161015612984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297b90614708565b60405180910390fd5b60648160ff1611156129cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c290614a68565b60405180910390fd5b7f717d38a0af5ed15f7369104a29a63331d40ff3543f1dbc8ad39b22689f88b517600f60029054906101000a900460ff1682604051612a0b929190614b98565b60405180910390a180600f60026101000a81548160ff021916908360ff16021790555050565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a72612c0f565b73ffffffffffffffffffffffffffffffffffffffff1614612ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abf906148c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2f906146c8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e7600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483604051612bbf929190614b1d565b60405180910390a280600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7e90614a08565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cee906146e8565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612dd59190614aa8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e49906149c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb990614668565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3b906147e8565b60405180910390fd5b60008111612f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7e90614688565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130295750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306090614948565b60405180910390fd5b60008054906101000a900460ff1661310a577f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310090614848565b60405180910390fd5b5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506000819050600060011515600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561320a57507f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156132565750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561356b576064600f60009054906101000a900460ff1660ff168461327b9190614ca8565b6132859190614c77565b905080836132939190614d02565b915080600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132e49190614c21565b925050819055506002544210156134cc576003543a11158061335157507f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b613390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338790614988565b60405180910390fd5b600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561341d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613414906147a8565b60405180910390fd5b81600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461346c9190614c21565b925050819055506001600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60015442101561356a57652d79883d200082600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135289190614c21565b1115613569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356090614868565b60405180910390fd5b5b5b60011515600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561361757507f0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad076785073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156136635750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156137e9576064600f60019054906101000a900460ff1660ff16846136889190614ca8565b6136929190614c77565b905080836136a09190614d02565b915080600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136f19190614c21565b9250508190555064174876e800600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156137585750600660009054906101000a900460ff16155b156137e8576000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060646028856137b09190614ca8565b6137ba9190614c77565b8111156137dd5760646028856137d09190614ca8565b6137da9190614c77565b90505b6137e6816138ab565b505b5b81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138389190614c21565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161389c9190614aa8565b60405180910390a35050505050565b6001600660006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613909577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156139375781602001602082028036833780820191505090505b5090503081600081518110613975577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a1757600080fd5b505afa158015613a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4f9190613d7f565b81600181518110613a89577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ae230737a250d5630b4cf539739df2c5dacb4c659f2488d84612c17565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b46959493929190614ac3565b600060405180830381600087803b158015613b6057600080fd5b505af1158015613b74573d6000803e3d6000fd5b505050506000471115613c1d57600660019054906101000a900460ff1615613bf25760006064600f60029054906101000a900460ff1660ff1647613bb89190614ca8565b613bc29190614c77565b9050613bf081600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613c3c565b505b613c1c477f00000000000000000000000053accb7934126a62403dced9b557e78f7db1acb4613c3c565b5b506000600660006101000a81548160ff02191690831515021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff1683604051613c62906145db565b60006040518083038185875af1925050503d8060008114613c9f576040519150601f19603f3d011682016040523d82523d6000602084013e613ca4565b606091505b5050905080613ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cdf90614748565b60405180910390fd5b505050565b600081359050613cfc816156c1565b92915050565b600081519050613d11816156c1565b92915050565b600081359050613d26816156d8565b92915050565b600081359050613d3b816156ef565b92915050565b600081359050613d5081615706565b92915050565b600060208284031215613d6857600080fd5b6000613d7684828501613ced565b91505092915050565b600060208284031215613d9157600080fd5b6000613d9f84828501613d02565b91505092915050565b60008060408385031215613dbb57600080fd5b6000613dc985828601613ced565b9250506020613dda85828601613ced565b9150509250929050565b600080600060608486031215613df957600080fd5b6000613e0786828701613ced565b9350506020613e1886828701613ced565b9250506040613e2986828701613d2c565b9150509250925092565b60008060408385031215613e4657600080fd5b6000613e5485828601613ced565b9250506020613e6585828601613d2c565b9150509250929050565b60008060008060808587031215613e8557600080fd5b6000613e9387828801613ced565b9450506020613ea487828801613d2c565b9350506040613eb587828801613d17565b9250506060613ec687828801613d2c565b91505092959194509250565b600080600080600060a08688031215613eea57600080fd5b6000613ef888828901613ced565b9550506020613f0988828901613d2c565b9450506040613f1a88828901613d2c565b9350506060613f2b88828901613d17565b9250506080613f3c88828901613d2c565b9150509295509295909350565b600060208284031215613f5b57600080fd5b6000613f6984828501613d2c565b91505092915050565b60008060408385031215613f8557600080fd5b6000613f9385828601613d2c565b9250506020613fa485828601613ced565b9150509250929050565b600060208284031215613fc057600080fd5b6000613fce84828501613d41565b91505092915050565b6000613fe38383613fef565b60208301905092915050565b613ff881614d36565b82525050565b61400781614d36565b82525050565b600061401882614bd1565b6140228185614bf4565b935061402d83614bc1565b8060005b8381101561405e5781516140458882613fd7565b975061405083614be7565b925050600181019050614031565b5085935050505092915050565b61407481614d48565b82525050565b61408381614d8b565b82525050565b600061409482614bdc565b61409e8185614c10565b93506140ae818560208601614daf565b6140b781614e40565b840191505092915050565b60006140cf602083614c10565b91506140da82614e51565b602082019050919050565b60006140f2602383614c10565b91506140fd82614e7a565b604082019050919050565b6000614115601d83614c10565b915061412082614ec9565b602082019050919050565b6000614138602383614c10565b915061414382614ef2565b604082019050919050565b600061415b602183614c10565b915061416682614f41565b604082019050919050565b600061417e602283614c10565b915061418982614f90565b604082019050919050565b60006141a1601c83614c10565b91506141ac82614fdf565b602082019050919050565b60006141c4602883614c10565b91506141cf82615008565b604082019050919050565b60006141e7601483614c10565b91506141f282615057565b602082019050919050565b600061420a602483614c10565b915061421582615080565b604082019050919050565b600061422d602083614c10565b9150614238826150cf565b602082019050919050565b6000614250602083614c10565b915061425b826150f8565b602082019050919050565b6000614273601e83614c10565b915061427e82615121565b602082019050919050565b6000614296601f83614c10565b91506142a18261514a565b602082019050919050565b60006142b9601e83614c10565b91506142c482615173565b602082019050919050565b60006142dc601f83614c10565b91506142e78261519c565b602082019050919050565b60006142ff601983614c10565b915061430a826151c5565b602082019050919050565b6000614322601d83614c10565b915061432d826151ee565b602082019050919050565b6000614345602883614c10565b915061435082615217565b604082019050919050565b6000614368602e83614c10565b915061437382615266565b604082019050919050565b600061438b601583614c10565b9150614396826152b5565b602082019050919050565b60006143ae602483614c10565b91506143b9826152de565b604082019050919050565b60006143d1602783614c10565b91506143dc8261532d565b604082019050919050565b60006143f4602683614c10565b91506143ff8261537c565b604082019050919050565b6000614417602583614c10565b9150614422826153cb565b604082019050919050565b600061443a602b83614c10565b91506144458261541a565b604082019050919050565b600061445d601683614c10565b915061446882615469565b602082019050919050565b6000614480602283614c10565b915061448b82615492565b604082019050919050565b60006144a3602583614c10565b91506144ae826154e1565b604082019050919050565b60006144c6602c83614c10565b91506144d182615530565b604082019050919050565b60006144e9600083614c05565b91506144f48261557f565b600082019050919050565b600061450c602483614c10565b915061451782615582565b604082019050919050565b600061452f601583614c10565b915061453a826155d1565b602082019050919050565b6000614552602983614c10565b915061455d826155fa565b604082019050919050565b6000614575601d83614c10565b915061458082615649565b602082019050919050565b6000614598602183614c10565b91506145a382615672565b604082019050919050565b6145b781614d74565b82525050565b6145c681614d9d565b82525050565b6145d581614d7e565b82525050565b60006145e6826144dc565b9150819050919050565b60006020820190506146056000830184613ffe565b92915050565b6000602082019050614620600083018461406b565b92915050565b600060208201905081810360008301526146408184614089565b905092915050565b60006020820190508181036000830152614661816140c2565b9050919050565b60006020820190508181036000830152614681816140e5565b9050919050565b600060208201905081810360008301526146a181614108565b9050919050565b600060208201905081810360008301526146c18161412b565b9050919050565b600060208201905081810360008301526146e18161414e565b9050919050565b6000602082019050818103600083015261470181614171565b9050919050565b6000602082019050818103600083015261472181614194565b9050919050565b60006020820190508181036000830152614741816141b7565b9050919050565b60006020820190508181036000830152614761816141da565b9050919050565b60006020820190508181036000830152614781816141fd565b9050919050565b600060208201905081810360008301526147a181614220565b9050919050565b600060208201905081810360008301526147c181614243565b9050919050565b600060208201905081810360008301526147e181614266565b9050919050565b6000602082019050818103600083015261480181614289565b9050919050565b60006020820190508181036000830152614821816142ac565b9050919050565b60006020820190508181036000830152614841816142cf565b9050919050565b60006020820190508181036000830152614861816142f2565b9050919050565b6000602082019050818103600083015261488181614315565b9050919050565b600060208201905081810360008301526148a181614338565b9050919050565b600060208201905081810360008301526148c18161435b565b9050919050565b600060208201905081810360008301526148e18161437e565b9050919050565b60006020820190508181036000830152614901816143a1565b9050919050565b60006020820190508181036000830152614921816143c4565b9050919050565b60006020820190508181036000830152614941816143e7565b9050919050565b600060208201905081810360008301526149618161440a565b9050919050565b600060208201905081810360008301526149818161442d565b9050919050565b600060208201905081810360008301526149a181614450565b9050919050565b600060208201905081810360008301526149c181614473565b9050919050565b600060208201905081810360008301526149e181614496565b9050919050565b60006020820190508181036000830152614a01816144b9565b9050919050565b60006020820190508181036000830152614a21816144ff565b9050919050565b60006020820190508181036000830152614a4181614522565b9050919050565b60006020820190508181036000830152614a6181614545565b9050919050565b60006020820190508181036000830152614a8181614568565b9050919050565b60006020820190508181036000830152614aa18161458b565b9050919050565b6000602082019050614abd60008301846145ae565b92915050565b600060a082019050614ad860008301886145ae565b614ae5602083018761407a565b8181036040830152614af7818661400d565b9050614b066060830185613ffe565b614b1360808301846145ae565b9695505050505050565b6000604082019050614b3260008301856145ae565b614b3f60208301846145ae565b9392505050565b6000606082019050614b5b60008301866145ae565b614b6860208301856145ae565b614b7560408301846145ae565b949350505050565b6000602082019050614b9260008301846145cc565b92915050565b6000604082019050614bad60008301856145bd565b614bba60208301846145bd565b9392505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614c2c82614d74565b9150614c3783614d74565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c6c57614c6b614de2565b5b828201905092915050565b6000614c8282614d74565b9150614c8d83614d74565b925082614c9d57614c9c614e11565b5b828204905092915050565b6000614cb382614d74565b9150614cbe83614d74565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614cf757614cf6614de2565b5b828202905092915050565b6000614d0d82614d74565b9150614d1883614d74565b925082821015614d2b57614d2a614de2565b5b828203905092915050565b6000614d4182614d54565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614d9682614d74565b9050919050565b6000614da882614d7e565b9050919050565b60005b83811015614dcd578082015181840152602081019050614db2565b83811115614ddc576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f24424154544c453a2074726164696e6720616c726561647920656e61626c6564600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2063616e6e6f74207472616e73666572207a65726f000000600082015250565b7f24424154544c453a2063616e6e6f7420756e7374616b65207a65726f20746f6b60008201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2063616e6e6f742073796e63207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2072657761726473206d696e696d756d2032302500000000600082015250565b7f24424154544c453a207374616b65206578636565647320617661696c61626c6560008201527f2062616c616e6365000000000000000000000000000000000000000000000000602082015250565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b7f24424154544c453a207a65726f20616464726573732063616e6e6f742062652060008201527f706f6f6c00000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2063616e6e6f7420726564756365206c6f636b2074696d65600082015250565b7f24424154544c453a207472616e73616374696f6e20636f756e74206c696d6974600082015250565b7f24424154544c453a207461782063616e6e6f7420657863656564203130250000600082015250565b7f45524332303a207472616e7366657220657863656564732062616c616e636500600082015250565b7f24424154544c453a2063616e6e6f74207374616b65203020746f6b656e730000600082015250565b7f24424154544c453a2063616e6e6f74206265207a65726f206164647265737300600082015250565b7f24424154544c453a2074726164696e672064697361626c656400000000000000600082015250565b7f24424154544c453a20657863656564732077616c6c6574206c696d6974000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a206d75737420756e7374616b65207468726f75676820737460008201527f616b696e6720636f6e7472616374000000000000000000000000000000000000602082015250565b7f24424154544c453a20756e617574686f72697a65640000000000000000000000600082015250565b7f24424154544c453a2063616e6e6f7420756e7374616b65207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a20756e7374616b652065786365656473207374616b65642060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a207374616b696e672063757272656e746c79206e6f74206560008201527f6e61626c65640000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2063616e6e6f74207472616e7366657220706f6f6c20746f60008201527f20706f6f6c000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a206d696e696d756d207374616b652074696d65203233206860008201527f6f757273203535206d696e000000000000000000000000000000000000000000602082015250565b7f24424154544c453a206578636573736976652067617300000000000000000000600082015250565b7f24424154544c453a2063616e6e6f74207374616b65207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a206d757374207374616b65207468726f756768207374616b60008201527f696e6720636f6e74726163740000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a207374696c6c2066726f7a656e0000000000000000000000600082015250565b7f24424154544c453a206e6577207374616b652074696d652063616e6e6f74206260008201527f652073686f727465720000000000000000000000000000000000000000000000602082015250565b7f24424154544c453a2072657761726473206d6178696d756d2031303025000000600082015250565b7f24424154544c453a207374616b696e6720636f6e7472616374206e6f7420736560008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6156ca81614d36565b81146156d557600080fd5b50565b6156e181614d48565b81146156ec57600080fd5b50565b6156f881614d74565b811461570357600080fd5b50565b61570f81614d7e565b811461571a57600080fd5b5056fea2646970667358221220de00bab191865c3490739bbe2c0f63fd9967d3f0d6cc2168c450117313fff2ce64736f6c63430008040033

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

00000000000000000000000053accb7934126a62403dced9b557e78f7db1acb40000000000000000000000008ed852dbe439284b6e864fd71e40c1aad0767850

-----Decoded View---------------
Arg [0] : vault (address): 0x53acCB7934126A62403DcED9B557e78F7Db1aCB4
Arg [1] : multiSig (address): 0x8ed852dBe439284B6E864fd71E40C1aAD0767850

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000053accb7934126a62403dced9b557e78f7db1acb4
Arg [1] : 0000000000000000000000008ed852dbe439284b6e864fd71e40c1aad0767850


Deployed Bytecode Sourcemap

10560:15202:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25368:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13233:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14083:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25107:253;;;;;;;;;;;;;:::i;:::-;;17361:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13516:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11225:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14254:376;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13423:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20711:295;;;;;;;;;;;;;:::i;:::-;;23501:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22956:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23721:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22737:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13626:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17506:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;21259:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21608:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11302:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22143:354;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13326:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21880:254;;;;;;;;;;;;;:::i;:::-;;21014:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17808:1447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13753:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19263:1072;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24945:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13930:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11266:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23179:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20343:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25368:316;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25450:8:::1;::::0;::::1;;;;;;;;25449:9;25441:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25517:4;25506:8;::::0;:15:::1;;;;;;;;;;;;;;;;;;25577:10;25559:15;:28;;;;:::i;:::-;25532:24;:55;;;;25636:9;25618:15;:27;;;;:::i;:::-;25598:17;:47;;;;25668:8;25656:9;:20;;;;25368:316:::0;:::o;13233:85::-;13272:13;13305:5;;;;;;;;;;;;;;;;;13298:12;;13233:85;:::o;14083:163::-;14160:4;14177:39;14186:12;:10;:12::i;:::-;14200:7;14209:6;14177:8;:39::i;:::-;14234:4;14227:11;;14083:163;;;;:::o;25107:253::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25185:42:::1;25205:21;25185:42;;;;;;:::i;:::-;;;;;;;;25239:9;25253:12;:10;:12::i;:::-;:17;;25278:21;25253:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25238:66;;;25323:4;25315:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;12887:1;25107:253::o:0;17361:137::-;17435:7;17462:15;:24;17478:7;17462:24;;;;;;;;;;;;;;;;17455:31;;17361:137;;;:::o;13516:102::-;13571:7;13598:12;;13591:19;;13516:102;:::o;11225:34::-;;;;;;;;;;;;;:::o;14254:376::-;14354:4;14417:6;14380:11;:19;14392:6;14380:19;;;;;;;;;;;;;;;:33;14400:12;:10;:12::i;:::-;14380:33;;;;;;;;;;;;;;;;:43;;14371:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;14479:36;14489:6;14497:9;14508:6;14479:9;:36::i;:::-;14526:74;14535:6;14543:12;:10;:12::i;:::-;14593:6;14557:11;:19;14569:6;14557:19;;;;;;;;;;;;;;;:33;14577:12;:10;:12::i;:::-;14557:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;14526:8;:74::i;:::-;14618:4;14611:11;;14254:376;;;;;:::o;13423:85::-;13466:5;11930:1;13484:16;;13423:85;:::o;20711:295::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20815:1:::1;20787:30;;:16;;;;;;;;;;;:30;;;;20778:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20888:4;20870:22;;:14;;;;;;;;;;;:22;;;20866:87;;;20911:5;20894:14;;:22;;;;;;;;;;;;;;;;;;20866:87;;;20949:4;20932:14;;:21;;;;;;;;;;;;;;;;;;20866:87;20969:29;20983:14;;;;;;;;;;;20969:29;;;;;;:::i;:::-;;;;;;;;20711:295::o:0;23501:208::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23598:1:::1;23582:18;;:4;:18;;;;23574:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23668:4;23652:7;:13;23660:4;23652:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;23688:13;23696:4;23688:13;;;;;;:::i;:::-;;;;;;;;23501:208:::0;:::o;22956:215::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23051:2:::1;23041:6;:12;;;;23032:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23104:31;23118:8;;;;;;;;;;;23128:6;23104:31;;;;;;;:::i;:::-;;;;;;;;23157:6;23146:8;;:17;;;;;;;;;;;;;;;;;;22956:215:::0;:::o;23721:106::-;23783:4;23806:7;:13;23814:4;23806:13;;;;;;;;;;;;;;;;;;;;;;;;;23799:20;;23721:106;;;:::o;22737:211::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22831:2:::1;22821:6;:12;;;;22812:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22884:29;22897:7;;;;;;;;;;;22906:6;22884:29;;;;;;;:::i;:::-;;;;;;;;22934:6;22924:7;;:16;;;;;;;;;;;;;;;;;;22737:211:::0;:::o;13626:119::-;13692:7;13719:9;:18;13729:7;13719:18;;;;;;;;;;;;;;;;13712:25;;13626:119;;;:::o;17506:294::-;17573:7;17582;17591;17615:14;;;;;;;;;;;:46;;;;;17660:1;17633:15;:24;17649:7;17633:24;;;;;;;;;;;;;;;;:28;17615:46;17611:181;;;17684:15;:24;17700:7;17684:24;;;;;;;;;;;;;;;;17710:15;:24;17726:7;17710:24;;;;;;;;;;;;;;;;17736:16;:25;17753:7;17736:25;;;;;;;;;;;;;;;;17676:86;;;;;;;;17611:181;17786:1;17788;17790;17778:14;;;;;;17506:294;;;;;;:::o;21259:113::-;21321:7;21348:16;;;;;;;;;;;21341:23;;21259:113;:::o;21608:264::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21710:12:::1;;21698:9;:24;21689:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21783:4;21770:10;;:17;;;;;;;;;;;;;;;;;;21813:9;21798:12;:24;;;;21840;21851:12;;21840:24;;;;;;:::i;:::-;;;;;;;;21608:264:::0;:::o;11302:37::-;;;;:::o;22143:354::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22261:12:::1;;22243:15;:30;:53;;;;;22291:5;22277:19;;:10;;;;;;;;;;;:19;;;22243:53;22234:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;22363:6;22348:12;;:21;;;;:::i;:::-;22333:12;:36;;;;22426:6;22403:9;:20;22413:9;22403:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;22380:9;:20;22390:9;22380:20;;;;;;;;;;;;;;;:52;;;;22471:9;22450:39;;22467:1;22450:39;;;22482:6;22450:39;;;;;;:::i;:::-;;;;;;;;22143:354:::0;;:::o;13326:89::-;13367:13;13400:7;;;;;;;;;;;;;;;;;13393:14;;13326:89;:::o;21880:254::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21970:12:::1;;21951:15;:31;;21942:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;22032:5;22019:10;;:18;;;;;;;;;;;;;;;;;;22081:5;22063:15;:23;;;;:::i;:::-;22048:12;:38;;;;22104:22;22113:12;;22104:22;;;;;;:::i;:::-;;;;;;;;21880:254::o:0;21014:237::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21122:1:::1;21106:18;;:4;:18;;;;21098:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21198:4;21171:16;;:32;;;;;;;;;;;;;;;;;;21219:24;21238:4;21219:24;;;;;;:::i;:::-;;;;;;;;21014:237:::0;:::o;17808:1447::-;17969:16;;;;;;;;;;;17953:32;;:12;:10;:12::i;:::-;:32;;;17944:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;18073:1;18054:21;;:7;:21;;;;18045:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;18134:14;;;;;;;;;;;18125:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18209:8;18205:251;;;18276:13;18248:15;:24;18264:7;18248:24;;;;;;;;;;;;;;;;:41;18244:201;;18321:7;18314:56;;;18330:15;:24;18346:7;18330:24;;;;;;;;;;;;;;;;18356:13;18314:56;;;;;;;:::i;:::-;;;;;;;;18416:13;18389:15;:24;18405:7;18389:24;;;;;;;;;;;;;;;:40;;;;18244:201;18205:251;18510:5;18492:15;:23;;;;:::i;:::-;18477:11;:39;18468:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18599:16;:25;18616:7;18599:25;;;;;;;;;;;;;;;;18584:11;:40;;18575:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18712:6;18690:9;:18;18700:7;18690:18;;;;;;;;;;;;;;;;:28;;18681:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;18806:1;18778:15;:24;18794:7;18778:24;;;;;;;;;;;;;;;;:29;18774:89;;;18827:1;18818:6;:10;18809:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;18774:89;18918:6;18897:9;:18;18907:7;18897:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;18876:9;:18;18886:7;18876:18;;;;;;;;;;;;;;;:48;;;;18995:6;18965:9;:27;18975:16;;;;;;;;;;;18965:27;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;18935:9;:27;18945:16;;;;;;;;;;;18935:27;;;;;;;;;;;;;;;:66;;;;19066:6;19039:15;:24;19055:7;19039:24;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;19012:15;:24;19028:7;19012:24;;;;;;;;;;;;;;;:60;;;;19113:11;19085:16;:25;19102:7;19085:25;;;;;;;;;;;;;;;:39;;;;19162:15;19135;:24;19151:7;19135:24;;;;;;;;;;;;;;;:42;;;;19201:7;19195:52;;;19210:6;19218:15;19235:11;19195:52;;;;;;;;:::i;:::-;;;;;;;;17808:1447;;;;;:::o;13753:169::-;13833:4;13850:42;13860:12;:10;:12::i;:::-;13874:9;13885:6;13850:9;:42::i;:::-;13910:4;13903:11;;13753:169;;;;:::o;19263:1072::-;19412:16;;;;;;;;;;;19396:32;;:12;:10;:12::i;:::-;:32;;;19387:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;19518:1;19499:21;;:7;:21;;;;19490:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19596:1;19580:13;:17;19572:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;19654:8;19650:251;;;19721:13;19693:15;:24;19709:7;19693:24;;;;;;;;;;;;;;;;:41;19689:201;;19766:7;19759:56;;;19775:15;:24;19791:7;19775:24;;;;;;;;;;;;;;;;19801:13;19759:56;;;;;;;:::i;:::-;;;;;;;;19861:13;19834:15;:24;19850:7;19834:24;;;;;;;;;;;;;;;:40;;;;19689:201;19650:251;19938:15;:24;19954:7;19938:24;;;;;;;;;;;;;;;;19921:13;:41;;19913:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;20081:13;20054:15;:24;20070:7;20054:24;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;20027:15;:24;20043:7;20027:24;;;;;;;;;;;;;;;:67;;;;20147:13;20126:9;:18;20136:7;20126:18;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;20105:9;:18;20115:7;20105:18;;;;;;;;;;;;;;;:55;;;;20231:13;20201:9;:27;20211:16;;;;;;;;;;;20201:27;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;20171:9;:27;20181:16;;;;;;;;;;;20171:27;;;;;;;;;;;;;;;:73;;;;20278:7;20270:57;;;20287:13;20302:15;:24;20318:7;20302:24;;;;;;;;;;;;;;;;20270:57;;;;;;;:::i;:::-;;;;;;;;19263:1072;;;;:::o;24945:154::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25030:20:::1;25043:6;25030:12;:20::i;:::-;25066:25;25084:6;25066:25;;;;;;:::i;:::-;;;;;;;;24945:154:::0;:::o;13930:145::-;14013:7;14040:11;:18;14052:5;14040:18;;;;;;;;;;;;;;;:27;14059:7;14040:27;;;;;;;;;;;;;;;;14033:34;;13930:145;;;;:::o;11266:29::-;;;;;;;;;;;;;:::o;23179:314::-;12841:9;12825:25;;:12;:10;:12::i;:::-;:25;;;12816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23282:2:::1;23268:10;:16;;;;23259:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;23351:3;23337:10;:17;;;;23328:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23404:42;23418:15;;;;;;;;;;;23435:10;23404:42;;;;;;;:::i;:::-;;;;;;;;23475:10;23457:15;;:28;;;;;;;;;;;;;;;;;;23179:314:::0;:::o;20343:360::-;20451:16;;;;;;;;;;;20435:32;;:12;:10;:12::i;:::-;:32;;;20426:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20532:1;20513:21;;:7;:21;;;;20504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20595:7;20588:56;;;20604:15;:24;20620:7;20604:24;;;;;;;;;;;;;;;;20630:13;20588:56;;;;;;;:::i;:::-;;;;;;;;20682:13;20655:15;:24;20671:7;20655:24;;;;;;;;;;;;;;;:40;;;;20343:360;;:::o;611:98::-;664:7;691:10;684:17;;611:98;:::o;14638:337::-;14748:1;14731:19;;:5;:19;;;;14723:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14829:1;14810:21;;:7;:21;;;;14802:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14913:6;14883:11;:18;14895:5;14883:18;;;;;;;;;;;;;;;:27;14902:7;14883:27;;;;;;;;;;;;;;;:36;;;;14951:7;14935:32;;14944:5;14935:32;;;14960:6;14935:32;;;;;;:::i;:::-;;;;;;;;14638:337;;;:::o;14983:2142::-;15098:1;15080:20;;:6;:20;;;;15072:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15182:1;15161:23;;:9;:23;;;;15153:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15264:6;15243:9;:17;15253:6;15243:17;;;;;;;;;;;;;;;;:27;;15235:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15334:1;15325:6;:10;15317:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15390:7;:15;15398:6;15390:15;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;;15409:7;:18;15417:9;15409:18;;;;;;;;;;;;;;;;;;;;;;;;;15390:37;15388:40;15380:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;15488:8;;;;;;;;;;15483:93;;15531:3;15521:13;;:6;:13;;;15513:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15483:93;15642:6;15621:9;:17;15631:6;15621:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;15672:19;15694:6;15672:28;;15711:11;15766:4;15747:23;;:7;:15;15755:6;15747:15;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;:43;;;;;15787:3;15774:16;;:9;:16;;;;15747:43;:70;;;;;12310:42;15794:23;;:9;:23;;;;15747:70;15743:758;;;15859:3;15849:7;;;;;;;;;;;15840:16;;:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;15834:28;;15900:3;15891:6;:12;;;;:::i;:::-;15877:26;;15946:3;15918:9;:24;15936:4;15918:24;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;15986:17;;15968:15;:35;15964:333;;;16047:9;;16032:11;:24;;:41;;;;16070:3;16060:13;;:6;:13;;;16032:41;16024:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;16128:6;:17;16135:9;16128:17;;;;;;;;;;;;;;;;;;;;;;;;;16127:18;16119:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16227:11;16201;:22;16213:9;16201:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;16277:4;16257:6;:17;16264:9;16257:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15964:333;16333:24;;16315:15;:42;16311:179;;;16426:14;16410:11;16387:9;:20;16397:9;16387:20;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;16386:54;;16378:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;16311:179;15743:758;16537:4;16515:26;;:7;:18;16523:9;16515:18;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;:43;;;;;16555:3;16545:13;;:6;:13;;;;16515:43;:67;;;;;12310:42;16562:20;;:6;:20;;;;16515:67;16511:502;;;16625:3;16614:8;;;;;;;;;;;16605:17;;:6;:17;;;;:::i;:::-;:23;;;;:::i;:::-;16599:29;;16666:3;16657:6;:12;;;;:::i;:::-;16643:26;;16712:3;16684:9;:24;16702:4;16684:24;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;16763:11;16736:9;:24;16754:4;16736:24;;;;;;;;;;;;;;;;:38;:52;;;;;16779:9;;;;;;;;;;;16778:10;16736:52;16732:270;;;16809:19;16831:9;:24;16849:4;16831:24;;;;;;;;;;;;;;;;16809:46;;16906:3;16901:2;16892:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;16878:11;:31;16874:68;;;16939:3;16934:2;16925:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;16911:31;;16874:68;16961:25;16974:11;16961:12;:25::i;:::-;16732:270;;16511:502;17053:11;17029:9;:20;17039:9;17029:20;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;17099:9;17082:35;;17091:6;17082:35;;;17110:6;17082:35;;;;;;:::i;:::-;;;;;;;;14983:2142;;;;;:::o;24248:685::-;12945:4;12933:9;;:16;;;;;;;;;;;;;;;;;;24314:21:::1;24352:1;24338:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24314:40;;24383:4;24365;24370:1;24365:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;24409:11;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24399:4;24404:1;24399:7;;;;;;;;;;;;;;;;;;;;;:28;;;;;;;;;::::0;::::1;24440:43;24457:4;12310:42;24476:6;24440:8;:43::i;:::-;24494:11;;;;;;;;;;;:62;;;24557:6;24565:1;24568:4;24582;24589:15;24494:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24646:1;24622:21;:25;24618:308;;;24678:14;;;;;;;;;;;24674:183;;;24713:17;24775:3;24757:15;;;;;;;;;;;24733:39;;:21;:39;;;;:::i;:::-;:45;;;;:::i;:::-;24713:65;;24797:44;24810:12;24824:16;;;;;;;;;;;24797:12;:44::i;:::-;24674:183;;24871:43;24884:21;24907:6;24871:12;:43::i;:::-;24618:308;12960:1;12984:5:::0;12972:9;;:17;;;;;;;;;;;;;;;;;;24248:685;:::o;24064:176::-;24143:9;24157:3;:8;;24173:6;24157:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24142:42;;;24203:4;24195:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;24064:176;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:135::-;629:5;667:6;654:20;645:29;;683:31;708:5;683:31;:::i;:::-;635:85;;;;:::o;726:262::-;785:6;834:2;822:9;813:7;809:23;805:32;802:2;;;850:1;847;840:12;802:2;893:1;918:53;963:7;954:6;943:9;939:22;918:53;:::i;:::-;908:63;;864:117;792:196;;;;:::o;994:284::-;1064:6;1113:2;1101:9;1092:7;1088:23;1084:32;1081:2;;;1129:1;1126;1119:12;1081:2;1172:1;1197:64;1253:7;1244:6;1233:9;1229:22;1197:64;:::i;:::-;1187:74;;1143:128;1071:207;;;;:::o;1284:407::-;1352:6;1360;1409:2;1397:9;1388:7;1384:23;1380:32;1377:2;;;1425:1;1422;1415:12;1377:2;1468:1;1493:53;1538:7;1529:6;1518:9;1514:22;1493:53;:::i;:::-;1483:63;;1439:117;1595:2;1621:53;1666:7;1657:6;1646:9;1642:22;1621:53;:::i;:::-;1611:63;;1566:118;1367:324;;;;;:::o;1697:552::-;1774:6;1782;1790;1839:2;1827:9;1818:7;1814:23;1810:32;1807:2;;;1855:1;1852;1845:12;1807:2;1898:1;1923:53;1968:7;1959:6;1948:9;1944:22;1923:53;:::i;:::-;1913:63;;1869:117;2025:2;2051:53;2096:7;2087:6;2076:9;2072:22;2051:53;:::i;:::-;2041:63;;1996:118;2153:2;2179:53;2224:7;2215:6;2204:9;2200:22;2179:53;:::i;:::-;2169:63;;2124:118;1797:452;;;;;:::o;2255:407::-;2323:6;2331;2380:2;2368:9;2359:7;2355:23;2351:32;2348:2;;;2396:1;2393;2386:12;2348:2;2439:1;2464:53;2509:7;2500:6;2489:9;2485:22;2464:53;:::i;:::-;2454:63;;2410:117;2566:2;2592:53;2637:7;2628:6;2617:9;2613:22;2592:53;:::i;:::-;2582:63;;2537:118;2338:324;;;;;:::o;2668:692::-;2751:6;2759;2767;2775;2824:3;2812:9;2803:7;2799:23;2795:33;2792:2;;;2841:1;2838;2831:12;2792:2;2884:1;2909:53;2954:7;2945:6;2934:9;2930:22;2909:53;:::i;:::-;2899:63;;2855:117;3011:2;3037:53;3082:7;3073:6;3062:9;3058:22;3037:53;:::i;:::-;3027:63;;2982:118;3139:2;3165:50;3207:7;3198:6;3187:9;3183:22;3165:50;:::i;:::-;3155:60;;3110:115;3264:2;3290:53;3335:7;3326:6;3315:9;3311:22;3290:53;:::i;:::-;3280:63;;3235:118;2782:578;;;;;;;:::o;3366:838::-;3458:6;3466;3474;3482;3490;3539:3;3527:9;3518:7;3514:23;3510:33;3507:2;;;3556:1;3553;3546:12;3507:2;3599:1;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;:::i;:::-;3614:63;;3570:117;3726:2;3752:53;3797:7;3788:6;3777:9;3773:22;3752:53;:::i;:::-;3742:63;;3697:118;3854:2;3880:53;3925:7;3916:6;3905:9;3901:22;3880:53;:::i;:::-;3870:63;;3825:118;3982:2;4008:50;4050:7;4041:6;4030:9;4026:22;4008:50;:::i;:::-;3998:60;;3953:115;4107:3;4134:53;4179:7;4170:6;4159:9;4155:22;4134:53;:::i;:::-;4124:63;;4078:119;3497:707;;;;;;;;:::o;4210:262::-;4269:6;4318:2;4306:9;4297:7;4293:23;4289:32;4286:2;;;4334:1;4331;4324:12;4286:2;4377:1;4402:53;4447:7;4438:6;4427:9;4423:22;4402:53;:::i;:::-;4392:63;;4348:117;4276:196;;;;:::o;4478:407::-;4546:6;4554;4603:2;4591:9;4582:7;4578:23;4574:32;4571:2;;;4619:1;4616;4609:12;4571:2;4662:1;4687:53;4732:7;4723:6;4712:9;4708:22;4687:53;:::i;:::-;4677:63;;4633:117;4789:2;4815:53;4860:7;4851:6;4840:9;4836:22;4815:53;:::i;:::-;4805:63;;4760:118;4561:324;;;;;:::o;4891:258::-;4948:6;4997:2;4985:9;4976:7;4972:23;4968:32;4965:2;;;5013:1;5010;5003:12;4965:2;5056:1;5081:51;5124:7;5115:6;5104:9;5100:22;5081:51;:::i;:::-;5071:61;;5027:115;4955:194;;;;:::o;5155:179::-;5224:10;5245:46;5287:3;5279:6;5245:46;:::i;:::-;5323:4;5318:3;5314:14;5300:28;;5235:99;;;;:::o;5340:108::-;5417:24;5435:5;5417:24;:::i;:::-;5412:3;5405:37;5395:53;;:::o;5454:118::-;5541:24;5559:5;5541:24;:::i;:::-;5536:3;5529:37;5519:53;;:::o;5608:732::-;5727:3;5756:54;5804:5;5756:54;:::i;:::-;5826:86;5905:6;5900:3;5826:86;:::i;:::-;5819:93;;5936:56;5986:5;5936:56;:::i;:::-;6015:7;6046:1;6031:284;6056:6;6053:1;6050:13;6031:284;;;6132:6;6126:13;6159:63;6218:3;6203:13;6159:63;:::i;:::-;6152:70;;6245:60;6298:6;6245:60;:::i;:::-;6235:70;;6091:224;6078:1;6075;6071:9;6066:14;;6031:284;;;6035:14;6331:3;6324:10;;5732:608;;;;;;;:::o;6346:109::-;6427:21;6442:5;6427:21;:::i;:::-;6422:3;6415:34;6405:50;;:::o;6461:147::-;6556:45;6595:5;6556:45;:::i;:::-;6551:3;6544:58;6534:74;;:::o;6614:364::-;6702:3;6730:39;6763:5;6730:39;:::i;:::-;6785:71;6849:6;6844:3;6785:71;:::i;:::-;6778:78;;6865:52;6910:6;6905:3;6898:4;6891:5;6887:16;6865:52;:::i;:::-;6942:29;6964:6;6942:29;:::i;:::-;6937:3;6933:39;6926:46;;6706:272;;;;;:::o;6984:366::-;7126:3;7147:67;7211:2;7206:3;7147:67;:::i;:::-;7140:74;;7223:93;7312:3;7223:93;:::i;:::-;7341:2;7336:3;7332:12;7325:19;;7130:220;;;:::o;7356:366::-;7498:3;7519:67;7583:2;7578:3;7519:67;:::i;:::-;7512:74;;7595:93;7684:3;7595:93;:::i;:::-;7713:2;7708:3;7704:12;7697:19;;7502:220;;;:::o;7728:366::-;7870:3;7891:67;7955:2;7950:3;7891:67;:::i;:::-;7884:74;;7967:93;8056:3;7967:93;:::i;:::-;8085:2;8080:3;8076:12;8069:19;;7874:220;;;:::o;8100:366::-;8242:3;8263:67;8327:2;8322:3;8263:67;:::i;:::-;8256:74;;8339:93;8428:3;8339:93;:::i;:::-;8457:2;8452:3;8448:12;8441:19;;8246:220;;;:::o;8472:366::-;8614:3;8635:67;8699:2;8694:3;8635:67;:::i;:::-;8628:74;;8711:93;8800:3;8711:93;:::i;:::-;8829:2;8824:3;8820:12;8813:19;;8618:220;;;:::o;8844:366::-;8986:3;9007:67;9071:2;9066:3;9007:67;:::i;:::-;9000:74;;9083:93;9172:3;9083:93;:::i;:::-;9201:2;9196:3;9192:12;9185:19;;8990:220;;;:::o;9216:366::-;9358:3;9379:67;9443:2;9438:3;9379:67;:::i;:::-;9372:74;;9455:93;9544:3;9455:93;:::i;:::-;9573:2;9568:3;9564:12;9557:19;;9362:220;;;:::o;9588:366::-;9730:3;9751:67;9815:2;9810:3;9751:67;:::i;:::-;9744:74;;9827:93;9916:3;9827:93;:::i;:::-;9945:2;9940:3;9936:12;9929:19;;9734:220;;;:::o;9960:366::-;10102:3;10123:67;10187:2;10182:3;10123:67;:::i;:::-;10116:74;;10199:93;10288:3;10199:93;:::i;:::-;10317:2;10312:3;10308:12;10301:19;;10106:220;;;:::o;10332:366::-;10474:3;10495:67;10559:2;10554:3;10495:67;:::i;:::-;10488:74;;10571:93;10660:3;10571:93;:::i;:::-;10689:2;10684:3;10680:12;10673:19;;10478:220;;;:::o;10704:366::-;10846:3;10867:67;10931:2;10926:3;10867:67;:::i;:::-;10860:74;;10943:93;11032:3;10943:93;:::i;:::-;11061:2;11056:3;11052:12;11045:19;;10850:220;;;:::o;11076:366::-;11218:3;11239:67;11303:2;11298:3;11239:67;:::i;:::-;11232:74;;11315:93;11404:3;11315:93;:::i;:::-;11433:2;11428:3;11424:12;11417:19;;11222:220;;;:::o;11448:366::-;11590:3;11611:67;11675:2;11670:3;11611:67;:::i;:::-;11604:74;;11687:93;11776:3;11687:93;:::i;:::-;11805:2;11800:3;11796:12;11789:19;;11594:220;;;:::o;11820:366::-;11962:3;11983:67;12047:2;12042:3;11983:67;:::i;:::-;11976:74;;12059:93;12148:3;12059:93;:::i;:::-;12177:2;12172:3;12168:12;12161:19;;11966:220;;;:::o;12192:366::-;12334:3;12355:67;12419:2;12414:3;12355:67;:::i;:::-;12348:74;;12431:93;12520:3;12431:93;:::i;:::-;12549:2;12544:3;12540:12;12533:19;;12338:220;;;:::o;12564:366::-;12706:3;12727:67;12791:2;12786:3;12727:67;:::i;:::-;12720:74;;12803:93;12892:3;12803:93;:::i;:::-;12921:2;12916:3;12912:12;12905:19;;12710:220;;;:::o;12936:366::-;13078:3;13099:67;13163:2;13158:3;13099:67;:::i;:::-;13092:74;;13175:93;13264:3;13175:93;:::i;:::-;13293:2;13288:3;13284:12;13277:19;;13082:220;;;:::o;13308:366::-;13450:3;13471:67;13535:2;13530:3;13471:67;:::i;:::-;13464:74;;13547:93;13636:3;13547:93;:::i;:::-;13665:2;13660:3;13656:12;13649:19;;13454:220;;;:::o;13680:366::-;13822:3;13843:67;13907:2;13902:3;13843:67;:::i;:::-;13836:74;;13919:93;14008:3;13919:93;:::i;:::-;14037:2;14032:3;14028:12;14021:19;;13826:220;;;:::o;14052:366::-;14194:3;14215:67;14279:2;14274:3;14215:67;:::i;:::-;14208:74;;14291:93;14380:3;14291:93;:::i;:::-;14409:2;14404:3;14400:12;14393:19;;14198:220;;;:::o;14424:366::-;14566:3;14587:67;14651:2;14646:3;14587:67;:::i;:::-;14580:74;;14663:93;14752:3;14663:93;:::i;:::-;14781:2;14776:3;14772:12;14765:19;;14570:220;;;:::o;14796:366::-;14938:3;14959:67;15023:2;15018:3;14959:67;:::i;:::-;14952:74;;15035:93;15124:3;15035:93;:::i;:::-;15153:2;15148:3;15144:12;15137:19;;14942:220;;;:::o;15168:366::-;15310:3;15331:67;15395:2;15390:3;15331:67;:::i;:::-;15324:74;;15407:93;15496:3;15407:93;:::i;:::-;15525:2;15520:3;15516:12;15509:19;;15314:220;;;:::o;15540:366::-;15682:3;15703:67;15767:2;15762:3;15703:67;:::i;:::-;15696:74;;15779:93;15868:3;15779:93;:::i;:::-;15897:2;15892:3;15888:12;15881:19;;15686:220;;;:::o;15912:366::-;16054:3;16075:67;16139:2;16134:3;16075:67;:::i;:::-;16068:74;;16151:93;16240:3;16151:93;:::i;:::-;16269:2;16264:3;16260:12;16253:19;;16058:220;;;:::o;16284:366::-;16426:3;16447:67;16511:2;16506:3;16447:67;:::i;:::-;16440:74;;16523:93;16612:3;16523:93;:::i;:::-;16641:2;16636:3;16632:12;16625:19;;16430:220;;;:::o;16656:366::-;16798:3;16819:67;16883:2;16878:3;16819:67;:::i;:::-;16812:74;;16895:93;16984:3;16895:93;:::i;:::-;17013:2;17008:3;17004:12;16997:19;;16802:220;;;:::o;17028:366::-;17170:3;17191:67;17255:2;17250:3;17191:67;:::i;:::-;17184:74;;17267:93;17356:3;17267:93;:::i;:::-;17385:2;17380:3;17376:12;17369:19;;17174:220;;;:::o;17400:366::-;17542:3;17563:67;17627:2;17622:3;17563:67;:::i;:::-;17556:74;;17639:93;17728:3;17639:93;:::i;:::-;17757:2;17752:3;17748:12;17741:19;;17546:220;;;:::o;17772:366::-;17914:3;17935:67;17999:2;17994:3;17935:67;:::i;:::-;17928:74;;18011:93;18100:3;18011:93;:::i;:::-;18129:2;18124:3;18120:12;18113:19;;17918:220;;;:::o;18144:398::-;18303:3;18324:83;18405:1;18400:3;18324:83;:::i;:::-;18317:90;;18416:93;18505:3;18416:93;:::i;:::-;18534:1;18529:3;18525:11;18518:18;;18307:235;;;:::o;18548:366::-;18690:3;18711:67;18775:2;18770:3;18711:67;:::i;:::-;18704:74;;18787:93;18876:3;18787:93;:::i;:::-;18905:2;18900:3;18896:12;18889:19;;18694:220;;;:::o;18920:366::-;19062:3;19083:67;19147:2;19142:3;19083:67;:::i;:::-;19076:74;;19159:93;19248:3;19159:93;:::i;:::-;19277:2;19272:3;19268:12;19261:19;;19066:220;;;:::o;19292:366::-;19434:3;19455:67;19519:2;19514:3;19455:67;:::i;:::-;19448:74;;19531:93;19620:3;19531:93;:::i;:::-;19649:2;19644:3;19640:12;19633:19;;19438:220;;;:::o;19664:366::-;19806:3;19827:67;19891:2;19886:3;19827:67;:::i;:::-;19820:74;;19903:93;19992:3;19903:93;:::i;:::-;20021:2;20016:3;20012:12;20005:19;;19810:220;;;:::o;20036:366::-;20178:3;20199:67;20263:2;20258:3;20199:67;:::i;:::-;20192:74;;20275:93;20364:3;20275:93;:::i;:::-;20393:2;20388:3;20384:12;20377:19;;20182:220;;;:::o;20408:118::-;20495:24;20513:5;20495:24;:::i;:::-;20490:3;20483:37;20473:53;;:::o;20532:127::-;20617:35;20646:5;20617:35;:::i;:::-;20612:3;20605:48;20595:64;;:::o;20665:112::-;20748:22;20764:5;20748:22;:::i;:::-;20743:3;20736:35;20726:51;;:::o;20783:379::-;20967:3;20989:147;21132:3;20989:147;:::i;:::-;20982:154;;21153:3;21146:10;;20971:191;;;:::o;21168:222::-;21261:4;21299:2;21288:9;21284:18;21276:26;;21312:71;21380:1;21369:9;21365:17;21356:6;21312:71;:::i;:::-;21266:124;;;;:::o;21396:210::-;21483:4;21521:2;21510:9;21506:18;21498:26;;21534:65;21596:1;21585:9;21581:17;21572:6;21534:65;:::i;:::-;21488:118;;;;:::o;21612:313::-;21725:4;21763:2;21752:9;21748:18;21740:26;;21812:9;21806:4;21802:20;21798:1;21787:9;21783:17;21776:47;21840:78;21913:4;21904:6;21840:78;:::i;:::-;21832:86;;21730:195;;;;:::o;21931:419::-;22097:4;22135:2;22124:9;22120:18;22112:26;;22184:9;22178:4;22174:20;22170:1;22159:9;22155:17;22148:47;22212:131;22338:4;22212:131;:::i;:::-;22204:139;;22102:248;;;:::o;22356:419::-;22522:4;22560:2;22549:9;22545:18;22537:26;;22609:9;22603:4;22599:20;22595:1;22584:9;22580:17;22573:47;22637:131;22763:4;22637:131;:::i;:::-;22629:139;;22527:248;;;:::o;22781:419::-;22947:4;22985:2;22974:9;22970:18;22962:26;;23034:9;23028:4;23024:20;23020:1;23009:9;23005:17;22998:47;23062:131;23188:4;23062:131;:::i;:::-;23054:139;;22952:248;;;:::o;23206:419::-;23372:4;23410:2;23399:9;23395:18;23387:26;;23459:9;23453:4;23449:20;23445:1;23434:9;23430:17;23423:47;23487:131;23613:4;23487:131;:::i;:::-;23479:139;;23377:248;;;:::o;23631:419::-;23797:4;23835:2;23824:9;23820:18;23812:26;;23884:9;23878:4;23874:20;23870:1;23859:9;23855:17;23848:47;23912:131;24038:4;23912:131;:::i;:::-;23904:139;;23802:248;;;:::o;24056:419::-;24222:4;24260:2;24249:9;24245:18;24237:26;;24309:9;24303:4;24299:20;24295:1;24284:9;24280:17;24273:47;24337:131;24463:4;24337:131;:::i;:::-;24329:139;;24227:248;;;:::o;24481:419::-;24647:4;24685:2;24674:9;24670:18;24662:26;;24734:9;24728:4;24724:20;24720:1;24709:9;24705:17;24698:47;24762:131;24888:4;24762:131;:::i;:::-;24754:139;;24652:248;;;:::o;24906:419::-;25072:4;25110:2;25099:9;25095:18;25087:26;;25159:9;25153:4;25149:20;25145:1;25134:9;25130:17;25123:47;25187:131;25313:4;25187:131;:::i;:::-;25179:139;;25077:248;;;:::o;25331:419::-;25497:4;25535:2;25524:9;25520:18;25512:26;;25584:9;25578:4;25574:20;25570:1;25559:9;25555:17;25548:47;25612:131;25738:4;25612:131;:::i;:::-;25604:139;;25502:248;;;:::o;25756:419::-;25922:4;25960:2;25949:9;25945:18;25937:26;;26009:9;26003:4;25999:20;25995:1;25984:9;25980:17;25973:47;26037:131;26163:4;26037:131;:::i;:::-;26029:139;;25927:248;;;:::o;26181:419::-;26347:4;26385:2;26374:9;26370:18;26362:26;;26434:9;26428:4;26424:20;26420:1;26409:9;26405:17;26398:47;26462:131;26588:4;26462:131;:::i;:::-;26454:139;;26352:248;;;:::o;26606:419::-;26772:4;26810:2;26799:9;26795:18;26787:26;;26859:9;26853:4;26849:20;26845:1;26834:9;26830:17;26823:47;26887:131;27013:4;26887:131;:::i;:::-;26879:139;;26777:248;;;:::o;27031:419::-;27197:4;27235:2;27224:9;27220:18;27212:26;;27284:9;27278:4;27274:20;27270:1;27259:9;27255:17;27248:47;27312:131;27438:4;27312:131;:::i;:::-;27304:139;;27202:248;;;:::o;27456:419::-;27622:4;27660:2;27649:9;27645:18;27637:26;;27709:9;27703:4;27699:20;27695:1;27684:9;27680:17;27673:47;27737:131;27863:4;27737:131;:::i;:::-;27729:139;;27627:248;;;:::o;27881:419::-;28047:4;28085:2;28074:9;28070:18;28062:26;;28134:9;28128:4;28124:20;28120:1;28109:9;28105:17;28098:47;28162:131;28288:4;28162:131;:::i;:::-;28154:139;;28052:248;;;:::o;28306:419::-;28472:4;28510:2;28499:9;28495:18;28487:26;;28559:9;28553:4;28549:20;28545:1;28534:9;28530:17;28523:47;28587:131;28713:4;28587:131;:::i;:::-;28579:139;;28477:248;;;:::o;28731:419::-;28897:4;28935:2;28924:9;28920:18;28912:26;;28984:9;28978:4;28974:20;28970:1;28959:9;28955:17;28948:47;29012:131;29138:4;29012:131;:::i;:::-;29004:139;;28902:248;;;:::o;29156:419::-;29322:4;29360:2;29349:9;29345:18;29337:26;;29409:9;29403:4;29399:20;29395:1;29384:9;29380:17;29373:47;29437:131;29563:4;29437:131;:::i;:::-;29429:139;;29327:248;;;:::o;29581:419::-;29747:4;29785:2;29774:9;29770:18;29762:26;;29834:9;29828:4;29824:20;29820:1;29809:9;29805:17;29798:47;29862:131;29988:4;29862:131;:::i;:::-;29854:139;;29752:248;;;:::o;30006:419::-;30172:4;30210:2;30199:9;30195:18;30187:26;;30259:9;30253:4;30249:20;30245:1;30234:9;30230:17;30223:47;30287:131;30413:4;30287:131;:::i;:::-;30279:139;;30177:248;;;:::o;30431:419::-;30597:4;30635:2;30624:9;30620:18;30612:26;;30684:9;30678:4;30674:20;30670:1;30659:9;30655:17;30648:47;30712:131;30838:4;30712:131;:::i;:::-;30704:139;;30602:248;;;:::o;30856:419::-;31022:4;31060:2;31049:9;31045:18;31037:26;;31109:9;31103:4;31099:20;31095:1;31084:9;31080:17;31073:47;31137:131;31263:4;31137:131;:::i;:::-;31129:139;;31027:248;;;:::o;31281:419::-;31447:4;31485:2;31474:9;31470:18;31462:26;;31534:9;31528:4;31524:20;31520:1;31509:9;31505:17;31498:47;31562:131;31688:4;31562:131;:::i;:::-;31554:139;;31452:248;;;:::o;31706:419::-;31872:4;31910:2;31899:9;31895:18;31887:26;;31959:9;31953:4;31949:20;31945:1;31934:9;31930:17;31923:47;31987:131;32113:4;31987:131;:::i;:::-;31979:139;;31877:248;;;:::o;32131:419::-;32297:4;32335:2;32324:9;32320:18;32312:26;;32384:9;32378:4;32374:20;32370:1;32359:9;32355:17;32348:47;32412:131;32538:4;32412:131;:::i;:::-;32404:139;;32302:248;;;:::o;32556:419::-;32722:4;32760:2;32749:9;32745:18;32737:26;;32809:9;32803:4;32799:20;32795:1;32784:9;32780:17;32773:47;32837:131;32963:4;32837:131;:::i;:::-;32829:139;;32727:248;;;:::o;32981:419::-;33147:4;33185:2;33174:9;33170:18;33162:26;;33234:9;33228:4;33224:20;33220:1;33209:9;33205:17;33198:47;33262:131;33388:4;33262:131;:::i;:::-;33254:139;;33152:248;;;:::o;33406:419::-;33572:4;33610:2;33599:9;33595:18;33587:26;;33659:9;33653:4;33649:20;33645:1;33634:9;33630:17;33623:47;33687:131;33813:4;33687:131;:::i;:::-;33679:139;;33577:248;;;:::o;33831:419::-;33997:4;34035:2;34024:9;34020:18;34012:26;;34084:9;34078:4;34074:20;34070:1;34059:9;34055:17;34048:47;34112:131;34238:4;34112:131;:::i;:::-;34104:139;;34002:248;;;:::o;34256:419::-;34422:4;34460:2;34449:9;34445:18;34437:26;;34509:9;34503:4;34499:20;34495:1;34484:9;34480:17;34473:47;34537:131;34663:4;34537:131;:::i;:::-;34529:139;;34427:248;;;:::o;34681:419::-;34847:4;34885:2;34874:9;34870:18;34862:26;;34934:9;34928:4;34924:20;34920:1;34909:9;34905:17;34898:47;34962:131;35088:4;34962:131;:::i;:::-;34954:139;;34852:248;;;:::o;35106:419::-;35272:4;35310:2;35299:9;35295:18;35287:26;;35359:9;35353:4;35349:20;35345:1;35334:9;35330:17;35323:47;35387:131;35513:4;35387:131;:::i;:::-;35379:139;;35277:248;;;:::o;35531:419::-;35697:4;35735:2;35724:9;35720:18;35712:26;;35784:9;35778:4;35774:20;35770:1;35759:9;35755:17;35748:47;35812:131;35938:4;35812:131;:::i;:::-;35804:139;;35702:248;;;:::o;35956:419::-;36122:4;36160:2;36149:9;36145:18;36137:26;;36209:9;36203:4;36199:20;36195:1;36184:9;36180:17;36173:47;36237:131;36363:4;36237:131;:::i;:::-;36229:139;;36127:248;;;:::o;36381:419::-;36547:4;36585:2;36574:9;36570:18;36562:26;;36634:9;36628:4;36624:20;36620:1;36609:9;36605:17;36598:47;36662:131;36788:4;36662:131;:::i;:::-;36654:139;;36552:248;;;:::o;36806:222::-;36899:4;36937:2;36926:9;36922:18;36914:26;;36950:71;37018:1;37007:9;37003:17;36994:6;36950:71;:::i;:::-;36904:124;;;;:::o;37034:831::-;37297:4;37335:3;37324:9;37320:19;37312:27;;37349:71;37417:1;37406:9;37402:17;37393:6;37349:71;:::i;:::-;37430:80;37506:2;37495:9;37491:18;37482:6;37430:80;:::i;:::-;37557:9;37551:4;37547:20;37542:2;37531:9;37527:18;37520:48;37585:108;37688:4;37679:6;37585:108;:::i;:::-;37577:116;;37703:72;37771:2;37760:9;37756:18;37747:6;37703:72;:::i;:::-;37785:73;37853:3;37842:9;37838:19;37829:6;37785:73;:::i;:::-;37302:563;;;;;;;;:::o;37871:332::-;37992:4;38030:2;38019:9;38015:18;38007:26;;38043:71;38111:1;38100:9;38096:17;38087:6;38043:71;:::i;:::-;38124:72;38192:2;38181:9;38177:18;38168:6;38124:72;:::i;:::-;37997:206;;;;;:::o;38209:442::-;38358:4;38396:2;38385:9;38381:18;38373:26;;38409:71;38477:1;38466:9;38462:17;38453:6;38409:71;:::i;:::-;38490:72;38558:2;38547:9;38543:18;38534:6;38490:72;:::i;:::-;38572;38640:2;38629:9;38625:18;38616:6;38572:72;:::i;:::-;38363:288;;;;;;:::o;38657:214::-;38746:4;38784:2;38773:9;38769:18;38761:26;;38797:67;38861:1;38850:9;38846:17;38837:6;38797:67;:::i;:::-;38751:120;;;;:::o;38877:324::-;38994:4;39032:2;39021:9;39017:18;39009:26;;39045:69;39111:1;39100:9;39096:17;39087:6;39045:69;:::i;:::-;39124:70;39190:2;39179:9;39175:18;39166:6;39124:70;:::i;:::-;38999:202;;;;;:::o;39207:132::-;39274:4;39297:3;39289:11;;39327:4;39322:3;39318:14;39310:22;;39279:60;;;:::o;39345:114::-;39412:6;39446:5;39440:12;39430:22;;39419:40;;;:::o;39465:99::-;39517:6;39551:5;39545:12;39535:22;;39524:40;;;:::o;39570:113::-;39640:4;39672;39667:3;39663:14;39655:22;;39645:38;;;:::o;39689:184::-;39788:11;39822:6;39817:3;39810:19;39862:4;39857:3;39853:14;39838:29;;39800:73;;;;:::o;39879:147::-;39980:11;40017:3;40002:18;;39992:34;;;;:::o;40032:169::-;40116:11;40150:6;40145:3;40138:19;40190:4;40185:3;40181:14;40166:29;;40128:73;;;;:::o;40207:305::-;40247:3;40266:20;40284:1;40266:20;:::i;:::-;40261:25;;40300:20;40318:1;40300:20;:::i;:::-;40295:25;;40454:1;40386:66;40382:74;40379:1;40376:81;40373:2;;;40460:18;;:::i;:::-;40373:2;40504:1;40501;40497:9;40490:16;;40251:261;;;;:::o;40518:185::-;40558:1;40575:20;40593:1;40575:20;:::i;:::-;40570:25;;40609:20;40627:1;40609:20;:::i;:::-;40604:25;;40648:1;40638:2;;40653:18;;:::i;:::-;40638:2;40695:1;40692;40688:9;40683:14;;40560:143;;;;:::o;40709:348::-;40749:7;40772:20;40790:1;40772:20;:::i;:::-;40767:25;;40806:20;40824:1;40806:20;:::i;:::-;40801:25;;40994:1;40926:66;40922:74;40919:1;40916:81;40911:1;40904:9;40897:17;40893:105;40890:2;;;41001:18;;:::i;:::-;40890:2;41049:1;41046;41042:9;41031:20;;40757:300;;;;:::o;41063:191::-;41103:4;41123:20;41141:1;41123:20;:::i;:::-;41118:25;;41157:20;41175:1;41157:20;:::i;:::-;41152:25;;41196:1;41193;41190:8;41187:2;;;41201:18;;:::i;:::-;41187:2;41246:1;41243;41239:9;41231:17;;41108:146;;;;:::o;41260:96::-;41297:7;41326:24;41344:5;41326:24;:::i;:::-;41315:35;;41305:51;;;:::o;41362:90::-;41396:7;41439:5;41432:13;41425:21;41414:32;;41404:48;;;:::o;41458:126::-;41495:7;41535:42;41528:5;41524:54;41513:65;;41503:81;;;:::o;41590:77::-;41627:7;41656:5;41645:16;;41635:32;;;:::o;41673:86::-;41708:7;41748:4;41741:5;41737:16;41726:27;;41716:43;;;:::o;41765:121::-;41823:9;41856:24;41874:5;41856:24;:::i;:::-;41843:37;;41833:53;;;:::o;41892:109::-;41940:9;41973:22;41989:5;41973:22;:::i;:::-;41960:35;;41950:51;;;:::o;42007:307::-;42075:1;42085:113;42099:6;42096:1;42093:13;42085:113;;;42184:1;42179:3;42175:11;42169:18;42165:1;42160:3;42156:11;42149:39;42121:2;42118:1;42114:10;42109:15;;42085:113;;;42216:6;42213:1;42210:13;42207:2;;;42296:1;42287:6;42282:3;42278:16;42271:27;42207:2;42056:258;;;;:::o;42320:180::-;42368:77;42365:1;42358:88;42465:4;42462:1;42455:15;42489:4;42486:1;42479:15;42506:180;42554:77;42551:1;42544:88;42651:4;42648:1;42641:15;42675:4;42672:1;42665:15;42692:102;42733:6;42784:2;42780:7;42775:2;42768:5;42764:14;42760:28;42750:38;;42740:54;;;:::o;42800:182::-;42940:34;42936:1;42928:6;42924:14;42917:58;42906:76;:::o;42988:222::-;43128:34;43124:1;43116:6;43112:14;43105:58;43197:5;43192:2;43184:6;43180:15;43173:30;43094:116;:::o;43216:179::-;43356:31;43352:1;43344:6;43340:14;43333:55;43322:73;:::o;43401:222::-;43541:34;43537:1;43529:6;43525:14;43518:58;43610:5;43605:2;43597:6;43593:15;43586:30;43507:116;:::o;43629:220::-;43769:34;43765:1;43757:6;43753:14;43746:58;43838:3;43833:2;43825:6;43821:15;43814:28;43735:114;:::o;43855:221::-;43995:34;43991:1;43983:6;43979:14;43972:58;44064:4;44059:2;44051:6;44047:15;44040:29;43961:115;:::o;44082:178::-;44222:30;44218:1;44210:6;44206:14;44199:54;44188:72;:::o;44266:227::-;44406:34;44402:1;44394:6;44390:14;44383:58;44475:10;44470:2;44462:6;44458:15;44451:35;44372:121;:::o;44499:170::-;44639:22;44635:1;44627:6;44623:14;44616:46;44605:64;:::o;44675:223::-;44815:34;44811:1;44803:6;44799:14;44792:58;44884:6;44879:2;44871:6;44867:15;44860:31;44781:117;:::o;44904:182::-;45044:34;45040:1;45032:6;45028:14;45021:58;45010:76;:::o;45092:182::-;45232:34;45228:1;45220:6;45216:14;45209:58;45198:76;:::o;45280:180::-;45420:32;45416:1;45408:6;45404:14;45397:56;45386:74;:::o;45466:181::-;45606:33;45602:1;45594:6;45590:14;45583:57;45572:75;:::o;45653:180::-;45793:32;45789:1;45781:6;45777:14;45770:56;45759:74;:::o;45839:181::-;45979:33;45975:1;45967:6;45963:14;45956:57;45945:75;:::o;46026:175::-;46166:27;46162:1;46154:6;46150:14;46143:51;46132:69;:::o;46207:179::-;46347:31;46343:1;46335:6;46331:14;46324:55;46313:73;:::o;46392:227::-;46532:34;46528:1;46520:6;46516:14;46509:58;46601:10;46596:2;46588:6;46584:15;46577:35;46498:121;:::o;46625:233::-;46765:34;46761:1;46753:6;46749:14;46742:58;46834:16;46829:2;46821:6;46817:15;46810:41;46731:127;:::o;46864:171::-;47004:23;47000:1;46992:6;46988:14;46981:47;46970:65;:::o;47041:223::-;47181:34;47177:1;47169:6;47165:14;47158:58;47250:6;47245:2;47237:6;47233:15;47226:31;47147:117;:::o;47270:226::-;47410:34;47406:1;47398:6;47394:14;47387:58;47479:9;47474:2;47466:6;47462:15;47455:34;47376:120;:::o;47502:225::-;47642:34;47638:1;47630:6;47626:14;47619:58;47711:8;47706:2;47698:6;47694:15;47687:33;47608:119;:::o;47733:224::-;47873:34;47869:1;47861:6;47857:14;47850:58;47942:7;47937:2;47929:6;47925:15;47918:32;47839:118;:::o;47963:230::-;48103:34;48099:1;48091:6;48087:14;48080:58;48172:13;48167:2;48159:6;48155:15;48148:38;48069:124;:::o;48199:172::-;48339:24;48335:1;48327:6;48323:14;48316:48;48305:66;:::o;48377:221::-;48517:34;48513:1;48505:6;48501:14;48494:58;48586:4;48581:2;48573:6;48569:15;48562:29;48483:115;:::o;48604:224::-;48744:34;48740:1;48732:6;48728:14;48721:58;48813:7;48808:2;48800:6;48796:15;48789:32;48710:118;:::o;48834:231::-;48974:34;48970:1;48962:6;48958:14;48951:58;49043:14;49038:2;49030:6;49026:15;49019:39;48940:125;:::o;49071:114::-;49177:8;:::o;49191:223::-;49331:34;49327:1;49319:6;49315:14;49308:58;49400:6;49395:2;49387:6;49383:15;49376:31;49297:117;:::o;49420:171::-;49560:23;49556:1;49548:6;49544:14;49537:47;49526:65;:::o;49597:228::-;49737:34;49733:1;49725:6;49721:14;49714:58;49806:11;49801:2;49793:6;49789:15;49782:36;49703:122;:::o;49831:179::-;49971:31;49967:1;49959:6;49955:14;49948:55;49937:73;:::o;50016:220::-;50156:34;50152:1;50144:6;50140:14;50133:58;50225:3;50220:2;50212:6;50208:15;50201:28;50122:114;:::o;50242:122::-;50315:24;50333:5;50315:24;:::i;:::-;50308:5;50305:35;50295:2;;50354:1;50351;50344:12;50295:2;50285:79;:::o;50370:116::-;50440:21;50455:5;50440:21;:::i;:::-;50433:5;50430:32;50420:2;;50476:1;50473;50466:12;50420:2;50410:76;:::o;50492:122::-;50565:24;50583:5;50565:24;:::i;:::-;50558:5;50555:35;50545:2;;50604:1;50601;50594:12;50545:2;50535:79;:::o;50620:118::-;50691:22;50707:5;50691:22;:::i;:::-;50684:5;50681:33;50671:2;;50728:1;50725;50718:12;50671:2;50661:77;:::o

Swarm Source

ipfs://de00bab191865c3490739bbe2c0f63fd9967d3f0d6cc2168c450117313fff2ce

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.