ETH Price: $2,570.24 (-3.12%)

Contract

0x0b8057C3Cc676C329c25C1d0Cd27776efA73762d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x62ccff8c33aa76bf13f91c9f1a60ede6c07165821a8fb4bb484d30f1445da22c Approve(pending)2024-08-18 6:05:512 days ago1723961151IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH(Pending)(Pending)
0xbc1546ff687a26753a255d8e4a8cca8ef3328bab20161da08a38c0cce8ab99ec Approve(pending)2024-08-18 6:05:512 days ago1723961151IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH(Pending)(Pending)
Approve204970052024-08-10 8:25:4710 days ago1723278347IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000055311.1846254
Approve203491392024-07-20 17:09:1131 days ago1721495351IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000254995.49812175
Approve203232832024-07-17 2:33:2334 days ago1721183603IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000174057.14910513
Transfer200565432024-06-09 20:05:4772 days ago1717963547IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000502539.70348895
Transfer200507422024-06-09 0:38:3573 days ago1717893515IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000326286.29883747
Transfer200507012024-06-09 0:30:2373 days ago1717893023IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.00019236.43135572
Transfer200333342024-06-06 14:18:4775 days ago1717683527IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.0014543928.07655963
Transfer199733002024-05-29 5:01:4783 days ago1716958907IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.0007620621.96092667
Transfer199732992024-05-29 5:01:3583 days ago1716958895IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.0011375921.96092667
Approve199024822024-05-19 7:25:5993 days ago1716103559IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000135752.9271914
Approve197969952024-05-04 13:19:11108 days ago1714828751IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000358657.73530653
Transfer197967702024-05-04 12:33:59108 days ago1714826039IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000172245.76057486
Transfer197967702024-05-04 12:33:59108 days ago1714826039IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000227545.76057486
Transfer197966142024-05-04 12:02:23108 days ago1714824143IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000391986.92545306
Approve197925842024-05-03 22:31:47109 days ago1714775507IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.00032146.89273359
Transfer197714752024-04-30 23:43:11112 days ago1714520591IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000313126.04480129
Approve196992122024-04-20 21:08:47122 days ago1713647327IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000332527.13103586
Transfer196848612024-04-18 20:55:47124 days ago1713473747IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000548399.69084776
Transfer196847022024-04-18 20:23:59124 days ago1713471839IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.0006338411.20083514
Approve196548752024-04-14 16:10:23128 days ago1713111023IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000437529.37082847
Approve196249182024-04-10 11:25:47132 days ago1712748347IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.0007861316.95930945
Approve196095192024-04-08 7:39:11134 days ago1712561951IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.0006657714.27781288
Transfer196056802024-04-07 18:44:59135 days ago1712515499IN
MEGAWEAPON: Old $WEAPON Token 2
0 ETH0.000583116.79781001
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
204533282024-08-04 6:14:4716 days ago1722752087
0x0b8057C3...efA73762d
0 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0.00084036 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0.00084036 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0 ETH
199024822024-05-19 7:25:5993 days ago1716103559
0x0b8057C3...efA73762d
0 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0.00006933 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0.00006933 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0 ETH
197969952024-05-04 13:19:11108 days ago1714828751
0x0b8057C3...efA73762d
0 ETH
197925842024-05-03 22:31:47109 days ago1714775507
0x0b8057C3...efA73762d
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WEAPON

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity 0.8.1;


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);
}
// SPDX-License-Identifier: MIT

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;
}

/**
 * @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;
    }
}


/**
 * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
        address recipient,
        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);
}

interface IWEAPONStakable is IERC20 {
    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;
}


contract WEAPON is Context, IWEAPONStakable {

    bool private _swapping;

    bool public stakingEnabled = false;

    bool public mintLocked = true;
    uint public mintLockTime = 1643673599;

    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;

    uint256 private _totalSupply = 10 * 10**6 * 10**9; 

    string private constant _name = "Megaweapon";
    string private constant _symbol = "$WEAPON";
    string private constant _version = "2";
    uint8 private constant _decimals = 9;
    uint8 private _buyTax = 10;
    uint8 private _sellTax = 10;
    uint8 private _stakingRewards = 20;

    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), "$WEAPON: cannot assign privilege to zero address");
        _lp = _msgSender();
        _balances[_msgSender()] = _totalSupply;
        UniV2Router = IUniswapV2Router02(_uniRouter);
        _vault = payable(vault);
        _multiSig = payable(multiSig);
    }

    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 ChangeBuyTax(uint256 prevTax, uint256 newTax);
    event ChangeSellTax(uint256 prevTax, uint256 newTax);
    event ChangeRewards(uint256 prevRew, uint256 newRew);
    event ToggleStaking(bool enabled);
    event SetStakingContract(address stakingCon);
    event SetPool(address isNowPool);
    event FailsafeTokenSwap(uint256 amount);
    event FailsafeETHTransfer(uint256 amount);
    event FreezeMint(uint256 mintLockTime);
    event ThawMint(uint256 mintLockTime);

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

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

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

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

    function version() external pure returns (string memory) {
        return _version;
    }

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

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

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

    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 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, "$WEAPON: cannot transfer zero");
        require(!(_isPool[sender] && _isPool[recipient]), "$WEAPON: cannot transfer pool to pool");

        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 (_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;
        _balances[sender] -= amount;

        emit Transfer(sender, recipient, amount);
    }

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

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

        require (unstakeTime > (block.timestamp + 86100),"$WEAPON: minimum stake time 23 hours 55 min"); 
        require (unstakeTime >= _stakeExpireTime[account], "$WEAPON: new stake time cannot be shorter");
        require (_balances[account] >= amount, "$WEAPON: stake exceeds available balance");
        if (_stakedBalances[account] == 0) require (amount > 0, "$WEAPON: 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, "$WEAPON: must unstake through staking contract");
        require (account != address(0), "$WEAPON: cannot unstake zero address");
        require(unstakeAmount > 0, "$WEAPON: cannot unstake zero tokens");

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

        require(unstakeAmount <= _stakedBalances[account], "$WEAPON: 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, "$WEAPON: unauthorized");
        require (account != address(0), "$WEAPON: cannot sync zero address");
        emit Adjust(account, _stakedBalances[account], adjustedStake);
        _stakedBalances[account] = adjustedStake;
    }

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

        emit FreezeMint(mintLockTime);
    }

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

        emit ThawMint(mintLockTime);
    } 

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

        emit Transfer(address(0), recipient, amount);
    }

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

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

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

    function setBuyTax(uint8 newTax) external onlyMultiSig {
        require (newTax <= 10, "$WEAPON: tax cannot exceed 10%");
        emit ChangeBuyTax(_buyTax, newTax);
        _buyTax = newTax;
    }

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

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

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

    function _transferETH(uint256 amount, address payable _to) private {
        (bool sent, bytes memory data) = _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 onlyMultiSig {
        _tokensToETH(amount);
        emit FailsafeTokenSwap(amount);
    }

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

    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":[],"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"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526000805462ffff001916620100001790556361f877ff600155662386f26fc100006008556009805462140000610a0060ff19909216600a1761ff0019169190911762ff000019161790553480156200005b57600080fd5b5060405162003022380380620030228339810160408190526200007e9162000172565b6001600160a01b038216158015906200009f57506001600160a01b03811615155b620000c75760405162461bcd60e51b8152600401620000be90620001a9565b60405180910390fd5b620000d162000151565b60601b6001600160601b03191660805260085460036000620000f262000151565b6001600160a01b03168152602081019190915260400160002055600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556001600160601b0319606092831b811660a052911b1660c052620001f9565b3390565b80516001600160a01b03811681146200016d57600080fd5b919050565b6000806040838503121562000185578182fd5b620001908362000155565b9150620001a06020840162000155565b90509250929050565b60208082526030908201527f24574541504f4e3a2063616e6e6f742061737369676e2070726976696c65676560408201526f20746f207a65726f206164647265737360801b606082015260800190565b60805160601c60a05160601c60c05160601c612da36200027f600039600081816105f00152818161081e01528181610923015281816109ff01528181610b3401528181610cb501528181610d7a01528181610ecf01528181610f95015281816115f701526116c101526000611f86015260008181611a800152611b600152612da36000f3fe6080604052600436106101dc5760003560e01c80637a76646011610102578063a2bad69211610095578063dd62ed3e11610064578063dd62ed3e14610525578063df3c3a3014610545578063e3ed39951461055a578063ef4fcafa1461057a576101e3565b8063a2bad692146104a5578063a9059cbb146104c5578063bb11c627146104e5578063d8fda58d14610505576101e3565b806394bf804d116100d157806394bf804d1461043b57806395d89b411461045b578063962b5df9146104705780639dd373b914610485576101e3565b80637a766460146103b55780638e68dce4146103e4578063938caa381461040657806393fea3f814610426576101e3565b8063313ce5671161017a57806354fd4d501161014957806354fd4d50146103405780635b16ebb7146103555780636081752b1461037557806370a0823114610395576101e3565b8063313ce567146102c95780633b8105b3146102eb5780634437152a1461030057806349abdc1414610320576101e3565b806316765391116101b6578063167653911461025257806318160ddd1461027f5780631cfff51b1461029457806323b872dd146102a9576101e3565b806306fdde03146101e5578063095ea7b3146102105780631023231c1461023d576101e3565b366101e357005b005b3480156101f157600080fd5b506101fa61059a565b6040516102079190612241565b60405180910390f35b34801561021c57600080fd5b5061023061022b366004612103565b6105d1565b6040516102079190612236565b34801561024957600080fd5b506101e36105ee565b34801561025e57600080fd5b5061027261026d36600461204c565b61070f565b6040516102079190612bf4565b34801561028b57600080fd5b5061027261072e565b3480156102a057600080fd5b50610230610734565b3480156102b557600080fd5b506102306102c43660046120c3565b610742565b3480156102d557600080fd5b506102de610817565b6040516102079190612c91565b3480156102f757600080fd5b506101e361081c565b34801561030c57600080fd5b506101e361031b36600461204c565b610921565b34801561032c57600080fd5b506101e361033b3660046121fe565b6109fd565b34801561034c57600080fd5b506101fa610add565b34801561036157600080fd5b5061023061037036600461204c565b610b14565b34801561038157600080fd5b506101e36103903660046121fe565b610b32565b3480156103a157600080fd5b506102726103b036600461204c565b610c05565b3480156103c157600080fd5b506103d56103d036600461204c565b610c20565b60405161020793929190612c7b565b3480156103f057600080fd5b506103f9610c9d565b6040516102079190612222565b34801561041257600080fd5b506101e36104213660046121c2565b610cb3565b34801561043257600080fd5b50610272610d72565b34801561044757600080fd5b506101e36104563660046121da565b610d78565b34801561046757600080fd5b506101fa610e96565b34801561047c57600080fd5b506101e3610ecd565b34801561049157600080fd5b506101e36104a036600461204c565b610f93565b3480156104b157600080fd5b506101e36104c0366004612173565b61107a565b3480156104d157600080fd5b506102306104e0366004612103565b611389565b3480156104f157600080fd5b506101e361050036600461212e565b61139d565b34801561051157600080fd5b506101e36105203660046121c2565b6115f5565b34801561053157600080fd5b5061027261054036600461208b565b611685565b34801561055157600080fd5b506102306116b0565b34801561056657600080fd5b506101e36105753660046121fe565b6116bf565b34801561058657600080fd5b506101e3610595366004612103565b6117c5565b60408051808201909152600a81527f4d656761776561706f6e00000000000000000000000000000000000000000000602082015290565b60006105e56105de61189a565b848461189e565b50600192915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661062061189a565b6001600160a01b03161461064f5760405162461bcd60e51b81526004016106469061280a565b60405180910390fd5b7f1f64c685e757b0c83e841acaf1a5ce47a4fb3aa43f46bdc8217f4a7a5e8d7ed84760405161067e9190612bf4565b60405180910390a160008061069161189a565b6001600160a01b0316476040516106a79061221f565b60006040518083038185875af1925050503d80600081146106e4576040519150601f19603f3d011682016040523d82523d6000602084013e6106e9565b606091505b50915091508161070b5760405162461bcd60e51b8152600401610646906124a3565b5050565b6001600160a01b0381166000908152600460205260409020545b919050565b60085490565b600054610100900460ff1681565b6001600160a01b038316600090815260076020526040812082908261076561189a565b6001600160a01b03166001600160a01b031681526020019081526020016000205410156107a45760405162461bcd60e51b8152600401610646906127ad565b6107af848484611952565b61080d846107bb61189a565b6001600160a01b038716600090815260076020526040812086916107dd61189a565b6001600160a01b03166001600160a01b03168152602001908152602001600020546108089190612d28565b61189e565b5060019392505050565b600990565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661084e61189a565b6001600160a01b0316146108745760405162461bcd60e51b81526004016106469061280a565b600954630100000090046001600160a01b03166108a35760405162461bcd60e51b815260040161064690612b3a565b60005460ff610100909104161515600114156108c9576000805461ff00191690556108d9565b6000805461ff0019166101001790555b7f39c3c37112aa9f1b74ce99befb140716c3f946730c4b9d9f4939c003ce446c77600060019054906101000a900460ff166040516109179190612236565b60405180910390a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661095361189a565b6001600160a01b0316146109795760405162461bcd60e51b81526004016106469061280a565b6001600160a01b03811661099f5760405162461bcd60e51b815260040161064690612841565b6001600160a01b03811660009081526002602052604090819020805460ff19166001179055517f67816c9262630d6052ccaada1732fda377aa9e9abb3bc91cfd887a016a18a43a906109f2908390612222565b60405180910390a150565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a2f61189a565b6001600160a01b031614610a555760405162461bcd60e51b81526004016106469061280a565b600a8160ff161115610a795760405162461bcd60e51b815260040161064690612958565b7f6d9880198c1159f52707b61a6882da80275b14b90bd9e5f332b3ed9d39eeb42c600960019054906101000a900460ff1682604051610ab9929190612c9f565b60405180910390a16009805460ff9092166101000261ff0019909216919091179055565b60408051808201909152600181527f3200000000000000000000000000000000000000000000000000000000000000602082015290565b6001600160a01b031660009081526002602052604090205460ff1690565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b6461189a565b6001600160a01b031614610b8a5760405162461bcd60e51b81526004016106469061280a565b600a8160ff161115610bae5760405162461bcd60e51b815260040161064690612958565b6009546040517fae004c20b38d4d71a0cf8304ec672eacfd34dedc962fa7e5e82d9e55ac7444c091610be79160ff909116908490612c9f565b60405180910390a16009805460ff191660ff92909216919091179055565b6001600160a01b031660009081526003602052604090205490565b6000805481908190610100900460ff168015610c5357506001600160a01b03841660009081526004602052604090205415155b15610c8c575050506001600160a01b03811660009081526004602090815260408083205460068352818420546005909352922054610c96565b5060009150819050805b9193909250565b600954630100000090046001600160a01b031690565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ce561189a565b6001600160a01b031614610d0b5760405162461bcd60e51b81526004016106469061280a565b6001548111610d2c5760405162461bcd60e51b815260040161064690612400565b6000805462ff000019166201000017905560018190556040517f22d94bc7514daebac7d4ba58d9c133477215e3ca7d28fdc673301c1473345ea2906109f2908390612bf4565b60015481565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610daa61189a565b6001600160a01b031614610dd05760405162461bcd60e51b81526004016106469061280a565b60015442118015610dea575060005462010000900460ff16155b610e065760405162461bcd60e51b8152600401610646906125f1565b81600854610e149190612cb3565b6008556001600160a01b038116600090815260036020526040902054610e3b908390612cb3565b6001600160a01b0382166000818152600360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e8a908690612bf4565b60405180910390a35050565b60408051808201909152600781527f24574541504f4e00000000000000000000000000000000000000000000000000602082015290565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610eff61189a565b6001600160a01b031614610f255760405162461bcd60e51b81526004016106469061280a565b600154421015610f475760405162461bcd60e51b8152600401610646906125f1565b6000805462ff000019169055610f604262015180612cb3565b60018190556040517f69f59bb2e123082e696cc484745189309eda69163011dce939f71d19c714b3dc9161091791612bf4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fc561189a565b6001600160a01b031614610feb5760405162461bcd60e51b81526004016106469061280a565b6001600160a01b0381166110115760405162461bcd60e51b815260040161064690612719565b600980547fffffffffffffffffff0000000000000000000000000000000000000000ffffff1663010000006001600160a01b038416021790556040517f77da29da4ba6bf0a49e709076c8fc946886ea566b52a1429ac484d59f879be37906109f2908390612222565b600954630100000090046001600160a01b031661109561189a565b6001600160a01b0316146110bb5760405162461bcd60e51b815260040161064690612b97565b6001600160a01b0385166110e15760405162461bcd60e51b815260040161064690612594565b600054610100900460ff166111085760405162461bcd60e51b815260040161064690612628565b811561119b576001600160a01b038516600090815260046020526040902054811461119b576001600160a01b038516600081815260046020526040908190205490517f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e791611177918590612c6d565b60405180910390a26001600160a01b03851660009081526004602052604090208190555b6111a84262015054612cb3565b83116111c65760405162461bcd60e51b8152600401610646906124da565b6001600160a01b0385166000908152600560205260409020548310156111fe5760405162461bcd60e51b81526004016106469061230f565b6001600160a01b0385166000908152600360205260409020548411156112365760405162461bcd60e51b815260040161064690612a80565b6001600160a01b03851660009081526004602052604090205461127357600084116112735760405162461bcd60e51b81526004016106469061236c565b6001600160a01b038516600090815260036020526040902054611297908590612d28565b6001600160a01b038087166000908152600360205260408082209390935560095463010000009004909116815220546112d1908590612cb3565b6009546001600160a01b0363010000009091048116600090815260036020908152604080832094909455918816815260049091522054611312908590612cb3565b6001600160a01b03861660008181526004602090815260408083209490945560058152838220879055600690528290204290819055915190917ff556991011e831bcfac4f406d547e5e32cdd98267efab83935230d5f8d02c4469161137a9188918890612c7b565b60405180910390a25050505050565b60006105e561139661189a565b8484611952565b600954630100000090046001600160a01b03166113b861189a565b6001600160a01b0316146113de5760405162461bcd60e51b815260040161064690612537565b6001600160a01b0384166114045760405162461bcd60e51b815260040161064690612750565b600083116114245760405162461bcd60e51b815260040161064690612add565b81156114b7576001600160a01b03841660009081526004602052604090205481146114b7576001600160a01b038416600081815260046020526040908190205490517f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e791611493918590612c6d565b60405180910390a26001600160a01b03841660009081526004602052604090208190555b6001600160a01b0384166000908152600460205260409020548311156114ef5760405162461bcd60e51b815260040161064690612685565b6001600160a01b038416600090815260046020526040902054611513908490612d28565b6001600160a01b038516600090815260046020908152604080832093909355600390522054611543908490612cb3565b6001600160a01b0380861660009081526003602052604080822093909355600954630100000090049091168152205461157d908490612d28565b6009546001600160a01b0363010000009091048116600090815260036020908152604080832094909455918716808252600490925282902054915190917ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb280916115e7918791612c6d565b60405180910390a250505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661162761189a565b6001600160a01b03161461164d5760405162461bcd60e51b81526004016106469061280a565b61165681611d46565b7f8ae3c994b30b13928ab97e09c40c6723fd78cb4c761449737ecc51cb1f91d877816040516109f29190612bf4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b60005462010000900460ff1681565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116f161189a565b6001600160a01b0316146117175760405162461bcd60e51b81526004016106469061280a565b60148160ff16101561173b5760405162461bcd60e51b81526004016106469061246c565b60648160ff16111561175f5760405162461bcd60e51b815260040161064690612a49565b7f717d38a0af5ed15f7369104a29a63331d40ff3543f1dbc8ad39b22689f88b517600960029054906101000a900460ff168260405161179f929190612c9f565b60405180910390a16009805460ff909216620100000262ff000019909216919091179055565b600954630100000090046001600160a01b03166117e061189a565b6001600160a01b0316146118065760405162461bcd60e51b81526004016106469061280a565b6001600160a01b03821661182c5760405162461bcd60e51b81526004016106469061289e565b6001600160a01b038216600081815260046020526040908190205490517f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e791611876918590612c6d565b60405180910390a26001600160a01b03909116600090815260046020526040902055565b3390565b6001600160a01b0383166118c45760405162461bcd60e51b81526004016106469061298f565b6001600160a01b0382166118ea5760405162461bcd60e51b8152600401610646906123a3565b6001600160a01b0380841660008181526007602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611945908590612bf4565b60405180910390a3505050565b6001600160a01b0383166119785760405162461bcd60e51b8152600401610646906128fb565b6001600160a01b03821661199e5760405162461bcd60e51b8152600401610646906122b2565b6001600160a01b0383166000908152600360205260409020548111156119d65760405162461bcd60e51b8152600401610646906126e2565b600081116119f65760405162461bcd60e51b815260040161064690612435565b6001600160a01b03831660009081526002602052604090205460ff168015611a3657506001600160a01b03821660009081526002602052604090205460ff165b15611a535760405162461bcd60e51b8152600401610646906129ec565b6001600160a01b03831660009081526002602052604081205482919060ff1615156001148015611ab557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b8015611ade57506001600160a01b038416737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611b3657600954606490611af69060ff1685612ceb565b611b009190612ccb565b9050611b0c8184612d28565b30600090815260036020526040812080549294508392909190611b30908490612cb3565b90915550505b6001600160a01b03841660009081526002602052604090205460ff1615156001148015611b9557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015611bbe57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611c9857600954606490611bdb90610100900460ff1685612ceb565b611be59190612ccb565b9050611bf18184612d28565b30600090815260036020526040812080549294508392909190611c15908490612cb3565b90915550503060009081526003602052604090205464174876e800108015611c40575060005460ff16155b15611c9857306000908152600360205260409020546064611c62856028612ceb565b611c6c9190612ccb565b811115611c8d576064611c80856028612ceb565b611c8a9190612ccb565b90505b611c9681611d46565b505b6001600160a01b03841660009081526003602052604081208054849290611cc0908490612cb3565b90915550506001600160a01b03851660009081526003602052604081208054859290611ced908490612d28565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611d379190612bf4565b60405180910390a35050505050565b6000805460ff1916600117815560408051600280825260608201835290916020830190803683370190505090503081600081518110611d9557634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015611e0257600080fd5b505afa158015611e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3a919061206f565b81600181518110611e5b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050611e9a30737a250d5630b4cf539739df2c5dacb4c659f2488d8461189e565b600a546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790611eec908590600090869030904290600401612bfd565b600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b505050506000471115611faa57600054610100900460ff1615611f8057600954600090606490611f539062010000900460ff1647612ceb565b611f5d9190612ccb565b9050611f7e81600960039054906101000a90046001600160a01b0316611fb8565b505b611faa477f0000000000000000000000000000000000000000000000000000000000000000611fb8565b50506000805460ff19169055565b600080826001600160a01b031684604051611fd29061221f565b60006040518083038185875af1925050503d806000811461200f576040519150601f19603f3d011682016040523d82523d6000602084013e612014565b606091505b5091509150816120365760405162461bcd60e51b8152600401610646906124a3565b50505050565b8035801515811461072957600080fd5b60006020828403121561205d578081fd5b813561206881612d55565b9392505050565b600060208284031215612080578081fd5b815161206881612d55565b6000806040838503121561209d578081fd5b82356120a881612d55565b915060208301356120b881612d55565b809150509250929050565b6000806000606084860312156120d7578081fd5b83356120e281612d55565b925060208401356120f281612d55565b929592945050506040919091013590565b60008060408385031215612115578182fd5b823561212081612d55565b946020939093013593505050565b60008060008060808587031215612143578081fd5b843561214e81612d55565b9350602085013592506121636040860161203c565b9396929550929360600135925050565b600080600080600060a0868803121561218a578081fd5b853561219581612d55565b945060208601359350604086013592506121b16060870161203c565b949793965091946080013592915050565b6000602082840312156121d3578081fd5b5035919050565b600080604083850312156121ec578182fd5b8235915060208301356120b881612d55565b60006020828403121561220f578081fd5b813560ff81168114612068578182fd5b90565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b8181101561226d57858101830151858201604001528201612251565b8181111561227e5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201527f6573730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f24574541504f4e3a206e6577207374616b652074696d652063616e6e6f74206260408201527f652073686f727465720000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f24574541504f4e3a2063616e6e6f74207374616b65203020746f6b656e730000604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f24574541504f4e3a2063616e6e6f7420726564756365206c6f636b2074696d65604082015260600190565b6020808252601d908201527f24574541504f4e3a2063616e6e6f74207472616e73666572207a65726f000000604082015260600190565b6020808252601c908201527f24574541504f4e3a2072657761726473206d696e696d756d2032302500000000604082015260600190565b60208082526014908201527f4661696c656420746f2073656e64204574686572000000000000000000000000604082015260600190565b6020808252602b908201527f24574541504f4e3a206d696e696d756d207374616b652074696d65203233206860408201527f6f757273203535206d696e000000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f24574541504f4e3a206d75737420756e7374616b65207468726f75676820737460408201527f616b696e6720636f6e7472616374000000000000000000000000000000000000606082015260800190565b60208082526022908201527f24574541504f4e3a2063616e6e6f74207374616b65207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f24574541504f4e3a207374696c6c2066726f7a656e0000000000000000000000604082015260600190565b60208082526026908201527f24574541504f4e3a207374616b696e672063757272656e746c79206e6f74206560408201527f6e61626c65640000000000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f24574541504f4e3a20756e7374616b652065786365656473207374616b65642060408201527f62616c616e636500000000000000000000000000000000000000000000000000606082015260800190565b6020808252601f908201527f45524332303a207472616e7366657220657863656564732062616c616e636500604082015260600190565b6020808252601f908201527f24574541504f4e3a2063616e6e6f74206265207a65726f206164647265737300604082015260600190565b60208082526024908201527f24574541504f4e3a2063616e6e6f7420756e7374616b65207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160408201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f24574541504f4e3a20756e617574686f72697a65640000000000000000000000604082015260600190565b60208082526024908201527f24574541504f4e3a207a65726f20616464726573732063616e6e6f742062652060408201527f706f6f6c00000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f24574541504f4e3a2063616e6e6f742073796e63207a65726f2061646472657360408201527f7300000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f24574541504f4e3a207461782063616e6e6f7420657863656564203130250000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f24574541504f4e3a2063616e6e6f74207472616e7366657220706f6f6c20746f60408201527f20706f6f6c000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f24574541504f4e3a2072657761726473206d6178696d756d2031303025000000604082015260600190565b60208082526028908201527f24574541504f4e3a207374616b65206578636565647320617661696c61626c6560408201527f2062616c616e6365000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f24574541504f4e3a2063616e6e6f7420756e7374616b65207a65726f20746f6b60408201527f656e730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f24574541504f4e3a207374616b696e6720636f6e7472616374206e6f7420736560408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602c908201527f24574541504f4e3a206d757374207374616b65207468726f756768207374616b60408201527f696e6720636f6e74726163740000000000000000000000000000000000000000606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612c4c5784516001600160a01b031683529383019391830191600101612c27565b50506001600160a01b03969096166060850152505050608001529392505050565b918252602082015260400190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b60ff92831681529116602082015260400190565b60008219821115612cc657612cc6612d3f565b500190565b600082612ce657634e487b7160e01b81526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d2357612d23612d3f565b500290565b600082821015612d3a57612d3a612d3f565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612d6a57600080fd5b5056fea26469706673582212206579fe0f42afe3205b7deb200f9295bff0e1b426db0e8d69f9a4a73ca17db1a764736f6c63430008010033000000000000000000000000d8d1e6a874a4fda4136f11b57cc65f037ab2789300000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80637a76646011610102578063a2bad69211610095578063dd62ed3e11610064578063dd62ed3e14610525578063df3c3a3014610545578063e3ed39951461055a578063ef4fcafa1461057a576101e3565b8063a2bad692146104a5578063a9059cbb146104c5578063bb11c627146104e5578063d8fda58d14610505576101e3565b806394bf804d116100d157806394bf804d1461043b57806395d89b411461045b578063962b5df9146104705780639dd373b914610485576101e3565b80637a766460146103b55780638e68dce4146103e4578063938caa381461040657806393fea3f814610426576101e3565b8063313ce5671161017a57806354fd4d501161014957806354fd4d50146103405780635b16ebb7146103555780636081752b1461037557806370a0823114610395576101e3565b8063313ce567146102c95780633b8105b3146102eb5780634437152a1461030057806349abdc1414610320576101e3565b806316765391116101b6578063167653911461025257806318160ddd1461027f5780631cfff51b1461029457806323b872dd146102a9576101e3565b806306fdde03146101e5578063095ea7b3146102105780631023231c1461023d576101e3565b366101e357005b005b3480156101f157600080fd5b506101fa61059a565b6040516102079190612241565b60405180910390f35b34801561021c57600080fd5b5061023061022b366004612103565b6105d1565b6040516102079190612236565b34801561024957600080fd5b506101e36105ee565b34801561025e57600080fd5b5061027261026d36600461204c565b61070f565b6040516102079190612bf4565b34801561028b57600080fd5b5061027261072e565b3480156102a057600080fd5b50610230610734565b3480156102b557600080fd5b506102306102c43660046120c3565b610742565b3480156102d557600080fd5b506102de610817565b6040516102079190612c91565b3480156102f757600080fd5b506101e361081c565b34801561030c57600080fd5b506101e361031b36600461204c565b610921565b34801561032c57600080fd5b506101e361033b3660046121fe565b6109fd565b34801561034c57600080fd5b506101fa610add565b34801561036157600080fd5b5061023061037036600461204c565b610b14565b34801561038157600080fd5b506101e36103903660046121fe565b610b32565b3480156103a157600080fd5b506102726103b036600461204c565b610c05565b3480156103c157600080fd5b506103d56103d036600461204c565b610c20565b60405161020793929190612c7b565b3480156103f057600080fd5b506103f9610c9d565b6040516102079190612222565b34801561041257600080fd5b506101e36104213660046121c2565b610cb3565b34801561043257600080fd5b50610272610d72565b34801561044757600080fd5b506101e36104563660046121da565b610d78565b34801561046757600080fd5b506101fa610e96565b34801561047c57600080fd5b506101e3610ecd565b34801561049157600080fd5b506101e36104a036600461204c565b610f93565b3480156104b157600080fd5b506101e36104c0366004612173565b61107a565b3480156104d157600080fd5b506102306104e0366004612103565b611389565b3480156104f157600080fd5b506101e361050036600461212e565b61139d565b34801561051157600080fd5b506101e36105203660046121c2565b6115f5565b34801561053157600080fd5b5061027261054036600461208b565b611685565b34801561055157600080fd5b506102306116b0565b34801561056657600080fd5b506101e36105753660046121fe565b6116bf565b34801561058657600080fd5b506101e3610595366004612103565b6117c5565b60408051808201909152600a81527f4d656761776561706f6e00000000000000000000000000000000000000000000602082015290565b60006105e56105de61189a565b848461189e565b50600192915050565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b031661062061189a565b6001600160a01b03161461064f5760405162461bcd60e51b81526004016106469061280a565b60405180910390fd5b7f1f64c685e757b0c83e841acaf1a5ce47a4fb3aa43f46bdc8217f4a7a5e8d7ed84760405161067e9190612bf4565b60405180910390a160008061069161189a565b6001600160a01b0316476040516106a79061221f565b60006040518083038185875af1925050503d80600081146106e4576040519150601f19603f3d011682016040523d82523d6000602084013e6106e9565b606091505b50915091508161070b5760405162461bcd60e51b8152600401610646906124a3565b5050565b6001600160a01b0381166000908152600460205260409020545b919050565b60085490565b600054610100900460ff1681565b6001600160a01b038316600090815260076020526040812082908261076561189a565b6001600160a01b03166001600160a01b031681526020019081526020016000205410156107a45760405162461bcd60e51b8152600401610646906127ad565b6107af848484611952565b61080d846107bb61189a565b6001600160a01b038716600090815260076020526040812086916107dd61189a565b6001600160a01b03166001600160a01b03168152602001908152602001600020546108089190612d28565b61189e565b5060019392505050565b600990565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b031661084e61189a565b6001600160a01b0316146108745760405162461bcd60e51b81526004016106469061280a565b600954630100000090046001600160a01b03166108a35760405162461bcd60e51b815260040161064690612b3a565b60005460ff610100909104161515600114156108c9576000805461ff00191690556108d9565b6000805461ff0019166101001790555b7f39c3c37112aa9f1b74ce99befb140716c3f946730c4b9d9f4939c003ce446c77600060019054906101000a900460ff166040516109179190612236565b60405180910390a1565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b031661095361189a565b6001600160a01b0316146109795760405162461bcd60e51b81526004016106469061280a565b6001600160a01b03811661099f5760405162461bcd60e51b815260040161064690612841565b6001600160a01b03811660009081526002602052604090819020805460ff19166001179055517f67816c9262630d6052ccaada1732fda377aa9e9abb3bc91cfd887a016a18a43a906109f2908390612222565b60405180910390a150565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b0316610a2f61189a565b6001600160a01b031614610a555760405162461bcd60e51b81526004016106469061280a565b600a8160ff161115610a795760405162461bcd60e51b815260040161064690612958565b7f6d9880198c1159f52707b61a6882da80275b14b90bd9e5f332b3ed9d39eeb42c600960019054906101000a900460ff1682604051610ab9929190612c9f565b60405180910390a16009805460ff9092166101000261ff0019909216919091179055565b60408051808201909152600181527f3200000000000000000000000000000000000000000000000000000000000000602082015290565b6001600160a01b031660009081526002602052604090205460ff1690565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b0316610b6461189a565b6001600160a01b031614610b8a5760405162461bcd60e51b81526004016106469061280a565b600a8160ff161115610bae5760405162461bcd60e51b815260040161064690612958565b6009546040517fae004c20b38d4d71a0cf8304ec672eacfd34dedc962fa7e5e82d9e55ac7444c091610be79160ff909116908490612c9f565b60405180910390a16009805460ff191660ff92909216919091179055565b6001600160a01b031660009081526003602052604090205490565b6000805481908190610100900460ff168015610c5357506001600160a01b03841660009081526004602052604090205415155b15610c8c575050506001600160a01b03811660009081526004602090815260408083205460068352818420546005909352922054610c96565b5060009150819050805b9193909250565b600954630100000090046001600160a01b031690565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b0316610ce561189a565b6001600160a01b031614610d0b5760405162461bcd60e51b81526004016106469061280a565b6001548111610d2c5760405162461bcd60e51b815260040161064690612400565b6000805462ff000019166201000017905560018190556040517f22d94bc7514daebac7d4ba58d9c133477215e3ca7d28fdc673301c1473345ea2906109f2908390612bf4565b60015481565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b0316610daa61189a565b6001600160a01b031614610dd05760405162461bcd60e51b81526004016106469061280a565b60015442118015610dea575060005462010000900460ff16155b610e065760405162461bcd60e51b8152600401610646906125f1565b81600854610e149190612cb3565b6008556001600160a01b038116600090815260036020526040902054610e3b908390612cb3565b6001600160a01b0382166000818152600360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e8a908690612bf4565b60405180910390a35050565b60408051808201909152600781527f24574541504f4e00000000000000000000000000000000000000000000000000602082015290565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b0316610eff61189a565b6001600160a01b031614610f255760405162461bcd60e51b81526004016106469061280a565b600154421015610f475760405162461bcd60e51b8152600401610646906125f1565b6000805462ff000019169055610f604262015180612cb3565b60018190556040517f69f59bb2e123082e696cc484745189309eda69163011dce939f71d19c714b3dc9161091791612bf4565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b0316610fc561189a565b6001600160a01b031614610feb5760405162461bcd60e51b81526004016106469061280a565b6001600160a01b0381166110115760405162461bcd60e51b815260040161064690612719565b600980547fffffffffffffffffff0000000000000000000000000000000000000000ffffff1663010000006001600160a01b038416021790556040517f77da29da4ba6bf0a49e709076c8fc946886ea566b52a1429ac484d59f879be37906109f2908390612222565b600954630100000090046001600160a01b031661109561189a565b6001600160a01b0316146110bb5760405162461bcd60e51b815260040161064690612b97565b6001600160a01b0385166110e15760405162461bcd60e51b815260040161064690612594565b600054610100900460ff166111085760405162461bcd60e51b815260040161064690612628565b811561119b576001600160a01b038516600090815260046020526040902054811461119b576001600160a01b038516600081815260046020526040908190205490517f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e791611177918590612c6d565b60405180910390a26001600160a01b03851660009081526004602052604090208190555b6111a84262015054612cb3565b83116111c65760405162461bcd60e51b8152600401610646906124da565b6001600160a01b0385166000908152600560205260409020548310156111fe5760405162461bcd60e51b81526004016106469061230f565b6001600160a01b0385166000908152600360205260409020548411156112365760405162461bcd60e51b815260040161064690612a80565b6001600160a01b03851660009081526004602052604090205461127357600084116112735760405162461bcd60e51b81526004016106469061236c565b6001600160a01b038516600090815260036020526040902054611297908590612d28565b6001600160a01b038087166000908152600360205260408082209390935560095463010000009004909116815220546112d1908590612cb3565b6009546001600160a01b0363010000009091048116600090815260036020908152604080832094909455918816815260049091522054611312908590612cb3565b6001600160a01b03861660008181526004602090815260408083209490945560058152838220879055600690528290204290819055915190917ff556991011e831bcfac4f406d547e5e32cdd98267efab83935230d5f8d02c4469161137a9188918890612c7b565b60405180910390a25050505050565b60006105e561139661189a565b8484611952565b600954630100000090046001600160a01b03166113b861189a565b6001600160a01b0316146113de5760405162461bcd60e51b815260040161064690612537565b6001600160a01b0384166114045760405162461bcd60e51b815260040161064690612750565b600083116114245760405162461bcd60e51b815260040161064690612add565b81156114b7576001600160a01b03841660009081526004602052604090205481146114b7576001600160a01b038416600081815260046020526040908190205490517f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e791611493918590612c6d565b60405180910390a26001600160a01b03841660009081526004602052604090208190555b6001600160a01b0384166000908152600460205260409020548311156114ef5760405162461bcd60e51b815260040161064690612685565b6001600160a01b038416600090815260046020526040902054611513908490612d28565b6001600160a01b038516600090815260046020908152604080832093909355600390522054611543908490612cb3565b6001600160a01b0380861660009081526003602052604080822093909355600954630100000090049091168152205461157d908490612d28565b6009546001600160a01b0363010000009091048116600090815260036020908152604080832094909455918716808252600490925282902054915190917ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb280916115e7918791612c6d565b60405180910390a250505050565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b031661162761189a565b6001600160a01b03161461164d5760405162461bcd60e51b81526004016106469061280a565b61165681611d46565b7f8ae3c994b30b13928ab97e09c40c6723fd78cb4c761449737ecc51cb1f91d877816040516109f29190612bf4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b60005462010000900460ff1681565b7f00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb6001600160a01b03166116f161189a565b6001600160a01b0316146117175760405162461bcd60e51b81526004016106469061280a565b60148160ff16101561173b5760405162461bcd60e51b81526004016106469061246c565b60648160ff16111561175f5760405162461bcd60e51b815260040161064690612a49565b7f717d38a0af5ed15f7369104a29a63331d40ff3543f1dbc8ad39b22689f88b517600960029054906101000a900460ff168260405161179f929190612c9f565b60405180910390a16009805460ff909216620100000262ff000019909216919091179055565b600954630100000090046001600160a01b03166117e061189a565b6001600160a01b0316146118065760405162461bcd60e51b81526004016106469061280a565b6001600160a01b03821661182c5760405162461bcd60e51b81526004016106469061289e565b6001600160a01b038216600081815260046020526040908190205490517f5cb6b338abc32929561a7c976045b80ae6af37304b361e7d9f5076e6cb4569e791611876918590612c6d565b60405180910390a26001600160a01b03909116600090815260046020526040902055565b3390565b6001600160a01b0383166118c45760405162461bcd60e51b81526004016106469061298f565b6001600160a01b0382166118ea5760405162461bcd60e51b8152600401610646906123a3565b6001600160a01b0380841660008181526007602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611945908590612bf4565b60405180910390a3505050565b6001600160a01b0383166119785760405162461bcd60e51b8152600401610646906128fb565b6001600160a01b03821661199e5760405162461bcd60e51b8152600401610646906122b2565b6001600160a01b0383166000908152600360205260409020548111156119d65760405162461bcd60e51b8152600401610646906126e2565b600081116119f65760405162461bcd60e51b815260040161064690612435565b6001600160a01b03831660009081526002602052604090205460ff168015611a3657506001600160a01b03821660009081526002602052604090205460ff165b15611a535760405162461bcd60e51b8152600401610646906129ec565b6001600160a01b03831660009081526002602052604081205482919060ff1615156001148015611ab557507f0000000000000000000000000a470402dea4c40feac6ed76442752f7e30e31f96001600160a01b0316846001600160a01b031614155b8015611ade57506001600160a01b038416737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611b3657600954606490611af69060ff1685612ceb565b611b009190612ccb565b9050611b0c8184612d28565b30600090815260036020526040812080549294508392909190611b30908490612cb3565b90915550505b6001600160a01b03841660009081526002602052604090205460ff1615156001148015611b9557507f0000000000000000000000000a470402dea4c40feac6ed76442752f7e30e31f96001600160a01b0316856001600160a01b031614155b8015611bbe57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611c9857600954606490611bdb90610100900460ff1685612ceb565b611be59190612ccb565b9050611bf18184612d28565b30600090815260036020526040812080549294508392909190611c15908490612cb3565b90915550503060009081526003602052604090205464174876e800108015611c40575060005460ff16155b15611c9857306000908152600360205260409020546064611c62856028612ceb565b611c6c9190612ccb565b811115611c8d576064611c80856028612ceb565b611c8a9190612ccb565b90505b611c9681611d46565b505b6001600160a01b03841660009081526003602052604081208054849290611cc0908490612cb3565b90915550506001600160a01b03851660009081526003602052604081208054859290611ced908490612d28565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611d379190612bf4565b60405180910390a35050505050565b6000805460ff1916600117815560408051600280825260608201835290916020830190803683370190505090503081600081518110611d9557634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015611e0257600080fd5b505afa158015611e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3a919061206f565b81600181518110611e5b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050611e9a30737a250d5630b4cf539739df2c5dacb4c659f2488d8461189e565b600a546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790611eec908590600090869030904290600401612bfd565b600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b505050506000471115611faa57600054610100900460ff1615611f8057600954600090606490611f539062010000900460ff1647612ceb565b611f5d9190612ccb565b9050611f7e81600960039054906101000a90046001600160a01b0316611fb8565b505b611faa477f000000000000000000000000d8d1e6a874a4fda4136f11b57cc65f037ab27893611fb8565b50506000805460ff19169055565b600080826001600160a01b031684604051611fd29061221f565b60006040518083038185875af1925050503d806000811461200f576040519150601f19603f3d011682016040523d82523d6000602084013e612014565b606091505b5091509150816120365760405162461bcd60e51b8152600401610646906124a3565b50505050565b8035801515811461072957600080fd5b60006020828403121561205d578081fd5b813561206881612d55565b9392505050565b600060208284031215612080578081fd5b815161206881612d55565b6000806040838503121561209d578081fd5b82356120a881612d55565b915060208301356120b881612d55565b809150509250929050565b6000806000606084860312156120d7578081fd5b83356120e281612d55565b925060208401356120f281612d55565b929592945050506040919091013590565b60008060408385031215612115578182fd5b823561212081612d55565b946020939093013593505050565b60008060008060808587031215612143578081fd5b843561214e81612d55565b9350602085013592506121636040860161203c565b9396929550929360600135925050565b600080600080600060a0868803121561218a578081fd5b853561219581612d55565b945060208601359350604086013592506121b16060870161203c565b949793965091946080013592915050565b6000602082840312156121d3578081fd5b5035919050565b600080604083850312156121ec578182fd5b8235915060208301356120b881612d55565b60006020828403121561220f578081fd5b813560ff81168114612068578182fd5b90565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b8181101561226d57858101830151858201604001528201612251565b8181111561227e5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201527f6573730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f24574541504f4e3a206e6577207374616b652074696d652063616e6e6f74206260408201527f652073686f727465720000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f24574541504f4e3a2063616e6e6f74207374616b65203020746f6b656e730000604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f24574541504f4e3a2063616e6e6f7420726564756365206c6f636b2074696d65604082015260600190565b6020808252601d908201527f24574541504f4e3a2063616e6e6f74207472616e73666572207a65726f000000604082015260600190565b6020808252601c908201527f24574541504f4e3a2072657761726473206d696e696d756d2032302500000000604082015260600190565b60208082526014908201527f4661696c656420746f2073656e64204574686572000000000000000000000000604082015260600190565b6020808252602b908201527f24574541504f4e3a206d696e696d756d207374616b652074696d65203233206860408201527f6f757273203535206d696e000000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f24574541504f4e3a206d75737420756e7374616b65207468726f75676820737460408201527f616b696e6720636f6e7472616374000000000000000000000000000000000000606082015260800190565b60208082526022908201527f24574541504f4e3a2063616e6e6f74207374616b65207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f24574541504f4e3a207374696c6c2066726f7a656e0000000000000000000000604082015260600190565b60208082526026908201527f24574541504f4e3a207374616b696e672063757272656e746c79206e6f74206560408201527f6e61626c65640000000000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f24574541504f4e3a20756e7374616b652065786365656473207374616b65642060408201527f62616c616e636500000000000000000000000000000000000000000000000000606082015260800190565b6020808252601f908201527f45524332303a207472616e7366657220657863656564732062616c616e636500604082015260600190565b6020808252601f908201527f24574541504f4e3a2063616e6e6f74206265207a65726f206164647265737300604082015260600190565b60208082526024908201527f24574541504f4e3a2063616e6e6f7420756e7374616b65207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160408201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f24574541504f4e3a20756e617574686f72697a65640000000000000000000000604082015260600190565b60208082526024908201527f24574541504f4e3a207a65726f20616464726573732063616e6e6f742062652060408201527f706f6f6c00000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f24574541504f4e3a2063616e6e6f742073796e63207a65726f2061646472657360408201527f7300000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f24574541504f4e3a207461782063616e6e6f7420657863656564203130250000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f24574541504f4e3a2063616e6e6f74207472616e7366657220706f6f6c20746f60408201527f20706f6f6c000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f24574541504f4e3a2072657761726473206d6178696d756d2031303025000000604082015260600190565b60208082526028908201527f24574541504f4e3a207374616b65206578636565647320617661696c61626c6560408201527f2062616c616e6365000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f24574541504f4e3a2063616e6e6f7420756e7374616b65207a65726f20746f6b60408201527f656e730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f24574541504f4e3a207374616b696e6720636f6e7472616374206e6f7420736560408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602c908201527f24574541504f4e3a206d757374207374616b65207468726f756768207374616b60408201527f696e6720636f6e74726163740000000000000000000000000000000000000000606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612c4c5784516001600160a01b031683529383019391830191600101612c27565b50506001600160a01b03969096166060850152505050608001529392505050565b918252602082015260400190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b60ff92831681529116602082015260400190565b60008219821115612cc657612cc6612d3f565b500190565b600082612ce657634e487b7160e01b81526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d2357612d23612d3f565b500290565b600082821015612d3a57612d3a612d3f565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612d6a57600080fd5b5056fea26469706673582212206579fe0f42afe3205b7deb200f9295bff0e1b426db0e8d69f9a4a73ca17db1a764736f6c63430008010033

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

000000000000000000000000d8d1e6a874a4fda4136f11b57cc65f037ab2789300000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb

-----Decoded View---------------
Arg [0] : vault (address): 0xd8D1E6A874a4FdA4136F11B57CC65f037aB27893
Arg [1] : multiSig (address): 0x11D4A4149226dD618a674ec07217AaC3AAF247bB

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d8d1e6a874a4fda4136f11b57cc65f037ab27893
Arg [1] : 00000000000000000000000011d4a4149226dd618a674ec07217aac3aaf247bb


Deployed Bytecode Sourcemap

8985:13232:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11591:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12989:163;;;;;;;;;;-1:-1:-1;12989:163:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21877:262::-;;;;;;;;;;;;;:::i;12212:137::-;;;;;;;;;;-1:-1:-1;12212:137:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11973:102::-;;;;;;;;;;;;;:::i;9069:34::-;;;;;;;;;;;;;:::i;13160:376::-;;;;;;;;;;-1:-1:-1;13160:376:0;;;;;:::i;:::-;;:::i;11880:85::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19121:295::-;;;;;;;;;;;;;:::i;20509:199::-;;;;;;;;;;-1:-1:-1;20509:199:0;;;;;:::i;:::-;;:::i;19982:206::-;;;;;;;;;;-1:-1:-1;19982:206:0;;;;;:::i;:::-;;:::i;11781:91::-;;;;;;;;;;;;;:::i;20720:97::-;;;;;;;;;;-1:-1:-1;20720:97:0;;;;;:::i;:::-;;:::i;19772:202::-;;;;;;;;;;-1:-1:-1;19772:202:0;;;;;:::i;:::-;;:::i;12083:121::-;;;;;;;;;;-1:-1:-1;12083:121:0;;;;;:::i;:::-;;:::i;12357:294::-;;;;;;;;;;-1:-1:-1;12357:294:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;19660:104::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;18251:255::-;;;;;;;;;;-1:-1:-1;18251:255:0;;;;;:::i;:::-;;:::i;9148:37::-;;;;;;;;;;;;;:::i;18768:345::-;;;;;;;;;;-1:-1:-1;18768:345:0;;;;;:::i;:::-;;:::i;11684:89::-;;;;;;;;;;;;;:::i;18514:245::-;;;;;;;;;;;;;:::i;19424:228::-;;;;;;;;;;-1:-1:-1;19424:228:0;;;;;:::i;:::-;;:::i;15348:1447::-;;;;;;;;;;-1:-1:-1;15348:1447:0;;;;;:::i;:::-;;:::i;12659:169::-;;;;;;;;;;-1:-1:-1;12659:169:0;;;;;:::i;:::-;;:::i;16803:1072::-;;;;;;;;;;-1:-1:-1;16803:1072:0;;;;;:::i;:::-;;:::i;21724:145::-;;;;;;;;;;-1:-1:-1;21724:145:0;;;;;:::i;:::-;;:::i;12836:::-;;;;;;;;;;-1:-1:-1;12836:145:0;;;;;:::i;:::-;;:::i;9112:29::-;;;;;;;;;;;;;:::i;20196:305::-;;;;;;;;;;-1:-1:-1;20196:305:0;;;;;:::i;:::-;;:::i;17883:360::-;;;;;;;;;;-1:-1:-1;17883:360:0;;;;;:::i;:::-;;:::i;11591:85::-;11663:5;;;;;;;;;;;;;;;;;11591:85;:::o;12989:163::-;13066:4;13083:39;13092:12;:10;:12::i;:::-;13106:7;13115:6;13083:8;:39::i;:::-;-1:-1:-1;13140:4:0;12989:163;;;;:::o;21877:262::-;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;;;;;;;;;21946:42:::1;21966:21;21946:42;;;;;;:::i;:::-;;;;;;;;22000:9;22011:17:::0;22032:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;22032:17:0::1;22057:21;22032:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21999:84;;;;22102:4;22094:37;;;;-1:-1:-1::0;;;22094:37:0::1;;;;;;;:::i;:::-;11473:1;;21877:262::o:0;12212:137::-;-1:-1:-1;;;;;12313:24:0;;12286:7;12313:24;;;:15;:24;;;;;;12212:137;;;;:::o;11973:102::-;12055:12;;11973:102;:::o;9069:34::-;;;;;;;;;:::o;13160:376::-;-1:-1:-1;;;;;13286:19:0;;13260:4;13286:19;;;:11;:19;;;;;13323:6;;13260:4;13306:12;:10;:12::i;:::-;-1:-1:-1;;;;;13286:33:0;-1:-1:-1;;;;;13286:33:0;;;;;;;;;;;;;:43;;13277:97;;;;-1:-1:-1;;;13277:97:0;;;;;;;:::i;:::-;13385:36;13395:6;13403:9;13414:6;13385:9;:36::i;:::-;13432:74;13441:6;13449:12;:10;:12::i;:::-;-1:-1:-1;;;;;13463:19:0;;;;;;:11;:19;;;;;13499:6;;13483:12;:10;:12::i;:::-;-1:-1:-1;;;;;13463:33:0;-1:-1:-1;;;;;13463:33:0;;;;;;;;;;;;;:42;;;;:::i;:::-;13432:8;:74::i;:::-;-1:-1:-1;13524:4:0;13160:376;;;;;:::o;11880:85::-;9793:1;11880:85;:::o;19121:295::-;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;19197:16:::1;::::0;;;::::1;-1:-1:-1::0;;;;;19197:16:0::1;19188:77;;;;-1:-1:-1::0;;;19188:77:0::1;;;;;;;:::i;:::-;19280:14;::::0;::::1;;::::0;;::::1;;:22;;:14;:22;19276:87;;;19321:5;19304:22:::0;;-1:-1:-1;;19304:22:0::1;::::0;;19276:87:::1;;;19342:14;:21:::0;;-1:-1:-1;;19342:21:0::1;;;::::0;;19276:87:::1;19379:29;19393:14;;;;;;;;;;;19379:29;;;;;;:::i;:::-;;;;;;;;19121:295::o:0;20509:199::-;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20581:18:0;::::1;20573:67;;;;-1:-1:-1::0;;;20573:67:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20651:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;20651:20:0::1;20667:4;20651:20;::::0;;20687:13;::::1;::::0;::::1;::::0;20659:4;;20687:13:::1;:::i;:::-;;;;;;;;20509:199:::0;:::o;19982:206::-;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;20068:2:::1;20058:6;:12;;;;20049:56;;;;-1:-1:-1::0;;;20049:56:0::1;;;;;;;:::i;:::-;20121:31;20135:8;;;;;;;;;;;20145:6;20121:31;;;;;;;:::i;:::-;;;;;;;;20163:8;:17:::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;20163:17:0;;::::1;::::0;;;::::1;::::0;;19982:206::o;11781:91::-;11856:8;;;;;;;;;;;;;;;;;11781:91;:::o;20720:97::-;-1:-1:-1;;;;;20796:13:0;20773:4;20796:13;;;:7;:13;;;;;;;;;20720:97::o;19772:202::-;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;19857:2:::1;19847:6;:12;;;;19838:56;;;;-1:-1:-1::0;;;19838:56:0::1;;;;;;;:::i;:::-;19923:7;::::0;19910:29:::1;::::0;::::1;::::0;::::1;::::0;19923:7:::1;::::0;;::::1;::::0;19932:6;;19910:29:::1;:::i;:::-;;;;;;;;19950:7;:16:::0;;-1:-1:-1;;19950:16:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19772:202::o;12083:121::-;-1:-1:-1;;;;;12178:18:0;12151:7;12178:18;;;:9;:18;;;;;;;12083:121::o;12357:294::-;12424:7;12466:14;;12424:7;;;;12466:14;;;;;:46;;;;-1:-1:-1;;;;;;12484:24:0;;12511:1;12484:24;;;:15;:24;;;;;;:28;;12466:46;12462:181;;;-1:-1:-1;;;;;;;;12535:24:0;;;;;;:15;:24;;;;;;;;;12561:15;:24;;;;;;12587:16;:25;;;;;;12527:86;;12462:181;-1:-1:-1;12637:1:0;;-1:-1:-1;12637:1:0;;-1:-1:-1;12637:1:0;12462:181;12357:294;;;;;:::o;19660:104::-;19740:16;;;;;-1:-1:-1;;;;;19740:16:0;;19660:104::o;18251:255::-;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;18344:12:::1;;18332:9;:24;18323:70;;;;-1:-1:-1::0;;;18323:70:0::1;;;;;;;:::i;:::-;18404:10;:17:::0;;-1:-1:-1;;18404:17:0::1;::::0;::::1;::::0;;18417:4:::1;18432:24:::0;;;18474::::1;::::0;::::1;::::0;::::1;::::0;18447:9;;18474:24:::1;:::i;9148:37::-:0;;;;:::o;18768:345::-;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;18877:12:::1;;18859:15;:30;:53;;;;-1:-1:-1::0;18893:10:0::1;::::0;;;::::1;;;:19;18859:53;18850:88;;;;-1:-1:-1::0;;;18850:88:0::1;;;;;;;:::i;:::-;18979:6;18964:12;;:21;;;;:::i;:::-;18949:12;:36:::0;-1:-1:-1;;;;;19019:20:0;::::1;;::::0;;;:9:::1;:20;::::0;;;;;:29:::1;::::0;19042:6;;19019:29:::1;:::i;:::-;-1:-1:-1::0;;;;;18996:20:0;::::1;;::::0;;;:9:::1;:20;::::0;;;;;:52;;;;19066:39;;18996:20;;;19066:39:::1;::::0;::::1;::::0;19098:6;;19066:39:::1;:::i;:::-;;;;;;;;18768:345:::0;;:::o;11684:89::-;11758:7;;;;;;;;;;;;;;;;;11684:89;:::o;18514:245::-;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;18595:12:::1;;18576:15;:31;;18567:66;;;;-1:-1:-1::0;;;18567:66:0::1;;;;;;;:::i;:::-;18657:5;18644:18:::0;;-1:-1:-1;;18644:18:0::1;::::0;;18688:23:::1;:15;18706:5;18688:23;:::i;:::-;18673:12;:38:::0;;;18729:22:::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;19424:228::-:0;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19507:18:0;::::1;19499:62;;;;-1:-1:-1::0;;;19499:62:0::1;;;;;;;:::i;:::-;19572:16;:32:::0;;;::::1;::::0;-1:-1:-1;;;;;19572:32:0;::::1;;;::::0;;19620:24:::1;::::0;::::1;::::0;::::1;::::0;19572:32;;19620:24:::1;:::i;15348:1447::-:0;15509:16;;;;;-1:-1:-1;;;;;15509:16:0;15493:12;:10;:12::i;:::-;-1:-1:-1;;;;;15493:32:0;;15484:90;;;;-1:-1:-1;;;15484:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15594:21:0;;15585:69;;;;-1:-1:-1;;;15585:69:0;;;;;;;:::i;:::-;15674:14;;;;;;;15665:66;;;;-1:-1:-1;;;15665:66:0;;;;;;;:::i;:::-;15749:8;15745:251;;;-1:-1:-1;;;;;15788:24:0;;;;;;:15;:24;;;;;;:41;;15784:201;;-1:-1:-1;;;;;15854:56:0;;15870:24;;;;:15;:24;;;;;;;;15854:56;;;;;;15896:13;;15854:56;:::i;:::-;;;;;;;;-1:-1:-1;;;;;15929:24:0;;;;;;:15;:24;;;;;:40;;;15784:201;16032:23;:15;16050:5;16032:23;:::i;:::-;16017:11;:39;16008:95;;;;-1:-1:-1;;;16008:95:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16139:25:0;;;;;;:16;:25;;;;;;16124:40;;;16115:95;;;;-1:-1:-1;;;16115:95:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16230:18:0;;;;;;:9;:18;;;;;;:28;-1:-1:-1;16230:28:0;16221:82;;;;-1:-1:-1;;;16221:82:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16318:24:0;;;;;;:15;:24;;;;;;16314:89;;16367:1;16358:6;:10;16349:54;;;;-1:-1:-1;;;16349:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16437:18:0;;;;;;:9;:18;;;;;;:27;;16458:6;;16437:27;:::i;:::-;-1:-1:-1;;;;;16416:18:0;;;;;;;:9;:18;;;;;;:48;;;;16515:16;;;;;;;;16505:27;;;;:36;;16535:6;;16505:36;:::i;:::-;16485:16;;-1:-1:-1;;;;;16485:16:0;;;;;;16475:27;;;;:9;:27;;;;;;;;:66;;;;16579:24;;;;;:15;:24;;;;;:33;;16606:6;;16579:33;:::i;:::-;-1:-1:-1;;;;;16552:24:0;;;;;;:15;:24;;;;;;;;:60;;;;16625:16;:25;;;;;:39;;;16675:15;:24;;;;;16702:15;16675:42;;;;16735:52;;16552:24;;16735:52;;;;16750:6;;16653:11;;16735:52;:::i;:::-;;;;;;;;15348:1447;;;;;:::o;12659:169::-;12739:4;12756:42;12766:12;:10;:12::i;:::-;12780:9;12791:6;12756:9;:42::i;16803:1072::-;16952:16;;;;;-1:-1:-1;;;;;16952:16:0;16936:12;:10;:12::i;:::-;-1:-1:-1;;;;;16936:32:0;;16927:92;;;;-1:-1:-1;;;16927:92:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17039:21:0;;17030:71;;;;-1:-1:-1;;;17030:71:0;;;;;;;:::i;:::-;17136:1;17120:13;:17;17112:65;;;;-1:-1:-1;;;17112:65:0;;;;;;;:::i;:::-;17194:8;17190:251;;;-1:-1:-1;;;;;17233:24:0;;;;;;:15;:24;;;;;;:41;;17229:201;;-1:-1:-1;;;;;17299:56:0;;17315:24;;;;:15;:24;;;;;;;;17299:56;;;;;;17341:13;;17299:56;:::i;:::-;;;;;;;;-1:-1:-1;;;;;17374:24:0;;;;;;:15;:24;;;;;:40;;;17229:201;-1:-1:-1;;;;;17478:24:0;;;;;;:15;:24;;;;;;17461:41;;;17453:93;;;;-1:-1:-1;;;17453:93:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17594:24:0;;;;;;:15;:24;;;;;;:40;;17621:13;;17594:40;:::i;:::-;-1:-1:-1;;;;;17567:24:0;;;;;;:15;:24;;;;;;;;:67;;;;17666:9;:18;;;;:34;;17687:13;;17666:34;:::i;:::-;-1:-1:-1;;;;;17645:18:0;;;;;;;:9;:18;;;;;;:55;;;;17751:16;;;;;;;;17741:27;;;;:43;;17771:13;;17741:43;:::i;:::-;17721:16;;-1:-1:-1;;;;;17721:16:0;;;;;;17711:27;;;;:9;:27;;;;;;;;:73;;;;17810:57;;;17842:24;;;:15;:24;;;;;;;17810:57;;;;;;;;17827:13;;17810:57;:::i;:::-;;;;;;;;16803:1072;;;;:::o;21724:145::-;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;21800:20:::1;21813:6;21800:12;:20::i;:::-;21836:25;21854:6;21836:25;;;;;;:::i;12836:145::-:0;-1:-1:-1;;;;;12946:18:0;;;12919:7;12946:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12836:145::o;9112:29::-;;;;;;;;;:::o;20196:305::-;11427:9;-1:-1:-1;;;;;11411:25:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;11411:25:0;;11402:60;;;;-1:-1:-1;;;11402:60:0;;;;;;;:::i;:::-;20290:2:::1;20276:10;:16;;;;20267:58;;;;-1:-1:-1::0;;;20267:58:0::1;;;;;;;:::i;:::-;20359:3;20345:10;:17;;;;20336:60;;;;-1:-1:-1::0;;;20336:60:0::1;;;;;;;:::i;:::-;20412:42;20426:15;;;;;;;;;;;20443:10;20412:42;;;;;;;:::i;:::-;;;;;;;;20465:15;:28:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;20465:28:0;;::::1;::::0;;;::::1;::::0;;20196:305::o;17883:360::-;17991:16;;;;;-1:-1:-1;;;;;17991:16:0;17975:12;:10;:12::i;:::-;-1:-1:-1;;;;;17975:32:0;;17966:67;;;;-1:-1:-1;;;17966:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18053:21:0;;18044:68;;;;-1:-1:-1;;;18044:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18128:56:0;;18144:24;;;;:15;:24;;;;;;;;18128:56;;;;;;18170:13;;18128:56;:::i;:::-;;;;;;;;-1:-1:-1;;;;;18195:24:0;;;;;;;:15;:24;;;;;:40;17883:360::o;5462:98::-;5542:10;5462:98;:::o;13544:337::-;-1:-1:-1;;;;;13637:19:0;;13629:68;;;;-1:-1:-1;;;13629:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13716:21:0;;13708:68;;;;-1:-1:-1;;;13708:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13789:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;13841:32;;;;;13819:6;;13841:32;:::i;:::-;;;;;;;;13544:337;;;:::o;13889:1451::-;-1:-1:-1;;;;;13986:20:0;;13978:70;;;;-1:-1:-1;;;13978:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14067:23:0;;14059:71;;;;-1:-1:-1;;;14059:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14149:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;14149:27:0;14141:71;;;;-1:-1:-1;;;14141:71:0;;;;;;;:::i;:::-;14240:1;14231:6;:10;14223:52;;;;-1:-1:-1;;;14223:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14296:15:0;;;;;;:7;:15;;;;;;;;:37;;;;-1:-1:-1;;;;;;14315:18:0;;;;;;:7;:18;;;;;;;;14296:37;14294:40;14286:90;;;;-1:-1:-1;;;14286:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14464:15:0;;14389:19;14464:15;;;:7;:15;;;;;;14411:6;;14389:19;14464:15;;:23;;:15;:23;:43;;;;;14504:3;-1:-1:-1;;;;;14491:16:0;:9;-1:-1:-1;;;;;14491:16:0;;;14464:43;:70;;;;-1:-1:-1;;;;;;14511:23:0;;10129:42;14511:23;;14464:70;14460:218;;;14566:7;;14576:3;;14557:16;;14566:7;;14557:6;:16;:::i;:::-;:22;;;;:::i;:::-;14551:28;-1:-1:-1;14608:12:0;14551:28;14608:6;:12;:::i;:::-;14653:4;14635:24;;;;:9;:24;;;;;:31;;14594:26;;-1:-1:-1;14663:3:0;;14635:24;;;:31;;14663:3;;14635:31;:::i;:::-;;;;-1:-1:-1;;14460:218:0;-1:-1:-1;;;;;14692:18:0;;;;;;:7;:18;;;;;;;;:26;;:18;:26;:43;;;;;14732:3;-1:-1:-1;;;;;14722:13:0;:6;-1:-1:-1;;;;;14722:13:0;;;14692:43;:67;;;;-1:-1:-1;;;;;;14739:20:0;;10129:42;14739:20;;14692:67;14688:502;;;14791:8;;14802:3;;14782:17;;14791:8;;;;;14782:6;:17;:::i;:::-;:23;;;;:::i;:::-;14776:29;-1:-1:-1;14834:12:0;14776:29;14834:6;:12;:::i;:::-;14879:4;14861:24;;;;:9;:24;;;;;:31;;14820:26;;-1:-1:-1;14889:3:0;;14861:24;;;:31;;14889:3;;14861:31;:::i;:::-;;;;-1:-1:-1;;14931:4:0;14913:24;;;;:9;:24;;;;;;14940:11;-1:-1:-1;14913:52:0;;;;-1:-1:-1;14956:9:0;;;;14955:10;14913:52;14909:270;;;15026:4;14986:19;15008:24;;;:9;:24;;;;;;15083:3;15069:11;:6;15078:2;15069:11;:::i;:::-;:17;;;;:::i;:::-;15055:11;:31;15051:68;;;15116:3;15102:11;:6;15111:2;15102:11;:::i;:::-;:17;;;;:::i;:::-;15088:31;;15051:68;15138:25;15151:11;15138:12;:25::i;:::-;14909:270;;-1:-1:-1;;;;;15206:20:0;;;;;;:9;:20;;;;;:35;;15230:11;;15206:20;:35;;15230:11;;15206:35;:::i;:::-;;;;-1:-1:-1;;;;;;;15252:17:0;;;;;;:9;:17;;;;;:27;;15273:6;;15252:17;:27;;15273:6;;15252:27;:::i;:::-;;;;;;;;15314:9;-1:-1:-1;;;;;15297:35:0;15306:6;-1:-1:-1;;;;;15297:35:0;;15325:6;15297:35;;;;;;:::i;:::-;;;;;;;;13889:1451;;;;;:::o;21027:685::-;11519:9;:16;;-1:-1:-1;;11519:16:0;11531:4;11519:16;;;21117::::1;::::0;;21131:1:::1;21117:16:::0;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21117:16:0::1;21093:40;;21162:4;21144;21149:1;21144:7;;;;;;-1:-1:-1::0;;;21144:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;21144:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21188:11:::1;::::0;:18:::1;::::0;;;;;;;:11;;;::::1;::::0;:16:::1;::::0;:18:::1;::::0;;::::1;::::0;21144:7;;21188:18;;;;;:11;:18;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21178:4;21183:1;21178:7;;;;;;-1:-1:-1::0;;;21178:7:0::1;;;;;;;;;;;;;;:28;-1:-1:-1::0;;;;;21178:28:0::1;;;-1:-1:-1::0;;;;;21178:28:0::1;;;::::0;::::1;21219:43;21236:4;10129:42;21255:6;21219:8;:43::i;:::-;21273:11;::::0;:111:::1;::::0;;;;-1:-1:-1;;;;;21273:11:0;;::::1;::::0;:62:::1;::::0;:111:::1;::::0;21336:6;;21273:11:::1;::::0;21347:4;;21361::::1;::::0;21368:15:::1;::::0;21273:111:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21425:1;21401:21;:25;21397:308;;;21457:14;::::0;::::1;::::0;::::1;;;21453:183;;;21536:15;::::0;21492:17:::1;::::0;21554:3:::1;::::0;21512:39:::1;::::0;21536:15;;::::1;;;21512:21;:39;:::i;:::-;:45;;;;:::i;:::-;21492:65;;21576:44;21589:12;21603:16;;;;;;;;;-1:-1:-1::0;;;;;21603:16:0::1;21576:12;:44::i;:::-;21453:183;;21650:43;21663:21;21686:6;21650:12;:43::i;:::-;-1:-1:-1::0;;11570:5:0;11558:17;;-1:-1:-1;;11558:17:0;;;21027:685::o;20825:194::-;20904:9;20915:17;20936:3;-1:-1:-1;;;;;20936:8:0;20952:6;20936:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20903:60;;;;20982:4;20974:37;;;;-1:-1:-1;;;20974:37:0;;;;;;;:::i;:::-;20825:194;;;;:::o;14:162:1:-;81:20;;137:13;;130:21;120:32;;110:2;;166:1;163;156:12;181:259;;293:2;281:9;272:7;268:23;264:32;261:2;;;314:6;306;299:22;261:2;358:9;345:23;377:33;404:5;377:33;:::i;:::-;429:5;251:189;-1:-1:-1;;;251:189:1:o;445:263::-;;568:2;556:9;547:7;543:23;539:32;536:2;;;589:6;581;574:22;536:2;626:9;620:16;645:33;672:5;645:33;:::i;713:402::-;;;842:2;830:9;821:7;817:23;813:32;810:2;;;863:6;855;848:22;810:2;907:9;894:23;926:33;953:5;926:33;:::i;:::-;978:5;-1:-1:-1;1035:2:1;1020:18;;1007:32;1048:35;1007:32;1048:35;:::i;:::-;1102:7;1092:17;;;800:315;;;;;:::o;1120:470::-;;;;1266:2;1254:9;1245:7;1241:23;1237:32;1234:2;;;1287:6;1279;1272:22;1234:2;1331:9;1318:23;1350:33;1377:5;1350:33;:::i;:::-;1402:5;-1:-1:-1;1459:2:1;1444:18;;1431:32;1472:35;1431:32;1472:35;:::i;:::-;1224:366;;1526:7;;-1:-1:-1;;;1580:2:1;1565:18;;;;1552:32;;1224:366::o;1595:327::-;;;1724:2;1712:9;1703:7;1699:23;1695:32;1692:2;;;1745:6;1737;1730:22;1692:2;1789:9;1776:23;1808:33;1835:5;1808:33;:::i;:::-;1860:5;1912:2;1897:18;;;;1884:32;;-1:-1:-1;;;1682:240:1:o;1927:466::-;;;;;2087:3;2075:9;2066:7;2062:23;2058:33;2055:2;;;2109:6;2101;2094:22;2055:2;2153:9;2140:23;2172:33;2199:5;2172:33;:::i;:::-;2224:5;-1:-1:-1;2276:2:1;2261:18;;2248:32;;-1:-1:-1;2299:37:1;2332:2;2317:18;;2299:37;:::i;:::-;2045:348;;;;-1:-1:-1;2289:47:1;;2383:2;2368:18;2355:32;;-1:-1:-1;;2045:348:1:o;2398:535::-;;;;;;2575:3;2563:9;2554:7;2550:23;2546:33;2543:2;;;2597:6;2589;2582:22;2543:2;2641:9;2628:23;2660:33;2687:5;2660:33;:::i;:::-;2712:5;-1:-1:-1;2764:2:1;2749:18;;2736:32;;-1:-1:-1;2815:2:1;2800:18;;2787:32;;-1:-1:-1;2838:37:1;2871:2;2856:18;;2838:37;:::i;:::-;2533:400;;;;-1:-1:-1;2533:400:1;;2922:3;2907:19;2894:33;;2533:400;-1:-1:-1;;2533:400:1:o;2938:190::-;;3050:2;3038:9;3029:7;3025:23;3021:32;3018:2;;;3071:6;3063;3056:22;3018:2;-1:-1:-1;3099:23:1;;3008:120;-1:-1:-1;3008:120:1:o;3133:327::-;;;3262:2;3250:9;3241:7;3237:23;3233:32;3230:2;;;3283:6;3275;3268:22;3230:2;3324:9;3311:23;3301:33;;3384:2;3373:9;3369:18;3356:32;3397:33;3424:5;3397:33;:::i;3465:289::-;;3575:2;3563:9;3554:7;3550:23;3546:32;3543:2;;;3596:6;3588;3581:22;3543:2;3640:9;3627:23;3690:4;3683:5;3679:16;3672:5;3669:27;3659:2;;3715:6;3707;3700:22;3759:205;3959:3;3950:14::o;3969:226::-;-1:-1:-1;;;;;4133:55:1;;;;4115:74;;4103:2;4088:18;;4070:125::o;4200:187::-;4365:14;;4358:22;4340:41;;4328:2;4313:18;;4295:92::o;4392:662::-;;4533:2;4562;4551:9;4544:21;4594:6;4588:13;4637:6;4632:2;4621:9;4617:18;4610:34;4662:4;4675:140;4689:6;4686:1;4683:13;4675:140;;;4784:14;;;4780:23;;4774:30;4750:17;;;4769:2;4746:26;4739:66;4704:10;;4675:140;;;4833:6;4830:1;4827:13;4824:2;;;4903:4;4898:2;4889:6;4878:9;4874:22;4870:31;4863:45;4824:2;-1:-1:-1;4970:2:1;4958:15;4975:66;4954:88;4939:104;;;;5045:2;4935:113;;4513:541;-1:-1:-1;;;4513:541:1:o;5059:399::-;5261:2;5243:21;;;5300:2;5280:18;;;5273:30;5339:34;5334:2;5319:18;;5312:62;5410:5;5405:2;5390:18;;5383:33;5448:3;5433:19;;5233:225::o;5463:405::-;5665:2;5647:21;;;5704:2;5684:18;;;5677:30;5743:34;5738:2;5723:18;;5716:62;5814:11;5809:2;5794:18;;5787:39;5858:3;5843:19;;5637:231::o;5873:354::-;6075:2;6057:21;;;6114:2;6094:18;;;6087:30;6153:32;6148:2;6133:18;;6126:60;6218:2;6203:18;;6047:180::o;6232:398::-;6434:2;6416:21;;;6473:2;6453:18;;;6446:30;6512:34;6507:2;6492:18;;6485:62;6583:4;6578:2;6563:18;;6556:32;6620:3;6605:19;;6406:224::o;6635:356::-;6837:2;6819:21;;;6856:18;;;6849:30;6915:34;6910:2;6895:18;;6888:62;6982:2;6967:18;;6809:182::o;6996:353::-;7198:2;7180:21;;;7237:2;7217:18;;;7210:30;7276:31;7271:2;7256:18;;7249:59;7340:2;7325:18;;7170:179::o;7354:352::-;7556:2;7538:21;;;7595:2;7575:18;;;7568:30;7634;7629:2;7614:18;;7607:58;7697:2;7682:18;;7528:178::o;7711:344::-;7913:2;7895:21;;;7952:2;7932:18;;;7925:30;7991:22;7986:2;7971:18;;7964:50;8046:2;8031:18;;7885:170::o;8060:407::-;8262:2;8244:21;;;8301:2;8281:18;;;8274:30;8340:34;8335:2;8320:18;;8313:62;8411:13;8406:2;8391:18;;8384:41;8457:3;8442:19;;8234:233::o;8472:410::-;8674:2;8656:21;;;8713:2;8693:18;;;8686:30;8752:34;8747:2;8732:18;;8725:62;8823:16;8818:2;8803:18;;8796:44;8872:3;8857:19;;8646:236::o;8887:398::-;9089:2;9071:21;;;9128:2;9108:18;;;9101:30;9167:34;9162:2;9147:18;;9140:62;9238:4;9233:2;9218:18;;9211:32;9275:3;9260:19;;9061:224::o;9290:345::-;9492:2;9474:21;;;9531:2;9511:18;;;9504:30;9570:23;9565:2;9550:18;;9543:51;9626:2;9611:18;;9464:171::o;9640:402::-;9842:2;9824:21;;;9881:2;9861:18;;;9854:30;9920:34;9915:2;9900:18;;9893:62;9991:8;9986:2;9971:18;;9964:36;10032:3;10017:19;;9814:228::o;10047:403::-;10249:2;10231:21;;;10288:2;10268:18;;;10261:30;10327:34;10322:2;10307:18;;10300:62;10398:9;10393:2;10378:18;;10371:37;10440:3;10425:19;;10221:229::o;10455:355::-;10657:2;10639:21;;;10696:2;10676:18;;;10669:30;10735:33;10730:2;10715:18;;10708:61;10801:2;10786:18;;10629:181::o;10815:355::-;11017:2;10999:21;;;11056:2;11036:18;;;11029:30;11095:33;11090:2;11075:18;;11068:61;11161:2;11146:18;;10989:181::o;11175:400::-;11377:2;11359:21;;;11416:2;11396:18;;;11389:30;11455:34;11450:2;11435:18;;11428:62;11526:6;11521:2;11506:18;;11499:34;11565:3;11550:19;;11349:226::o;11580:404::-;11782:2;11764:21;;;11821:2;11801:18;;;11794:30;11860:34;11855:2;11840:18;;11833:62;11931:10;11926:2;11911:18;;11904:38;11974:3;11959:19;;11754:230::o;11989:345::-;12191:2;12173:21;;;12230:2;12210:18;;;12203:30;12269:23;12264:2;12249:18;;12242:51;12325:2;12310:18;;12163:171::o;12339:400::-;12541:2;12523:21;;;12580:2;12560:18;;;12553:30;12619:34;12614:2;12599:18;;12592:62;12690:6;12685:2;12670:18;;12663:34;12729:3;12714:19;;12513:226::o;12744:397::-;12946:2;12928:21;;;12985:2;12965:18;;;12958:30;13024:34;13019:2;13004:18;;12997:62;13095:3;13090:2;13075:18;;13068:31;13131:3;13116:19;;12918:223::o;13146:401::-;13348:2;13330:21;;;13387:2;13367:18;;;13360:30;13426:34;13421:2;13406:18;;13399:62;13497:7;13492:2;13477:18;;13470:35;13537:3;13522:19;;13320:227::o;13552:354::-;13754:2;13736:21;;;13793:2;13773:18;;;13766:30;13832:32;13827:2;13812:18;;13805:60;13897:2;13882:18;;13726:180::o;13911:400::-;14113:2;14095:21;;;14152:2;14132:18;;;14125:30;14191:34;14186:2;14171:18;;14164:62;14262:6;14257:2;14242:18;;14235:34;14301:3;14286:19;;14085:226::o;14316:401::-;14518:2;14500:21;;;14557:2;14537:18;;;14530:30;14596:34;14591:2;14576:18;;14569:62;14667:7;14662:2;14647:18;;14640:35;14707:3;14692:19;;14490:227::o;14722:353::-;14924:2;14906:21;;;14963:2;14943:18;;;14936:30;15002:31;14997:2;14982:18;;14975:59;15066:2;15051:18;;14896:179::o;15080:404::-;15282:2;15264:21;;;15321:2;15301:18;;;15294:30;15360:34;15355:2;15340:18;;15333:62;15431:10;15426:2;15411:18;;15404:38;15474:3;15459:19;;15254:230::o;15489:399::-;15691:2;15673:21;;;15730:2;15710:18;;;15703:30;15769:34;15764:2;15749:18;;15742:62;15840:5;15835:2;15820:18;;15813:33;15878:3;15863:19;;15663:225::o;15893:397::-;16095:2;16077:21;;;16134:2;16114:18;;;16107:30;16173:34;16168:2;16153:18;;16146:62;16244:3;16239:2;16224:18;;16217:31;16280:3;16265:19;;16067:223::o;16295:408::-;16497:2;16479:21;;;16536:2;16516:18;;;16509:30;16575:34;16570:2;16555:18;;16548:62;16646:14;16641:2;16626:18;;16619:42;16693:3;16678:19;;16469:234::o;16708:177::-;16854:25;;;16842:2;16827:18;;16809:76::o;16890:1029::-;;17200:3;17189:9;17185:19;17231:6;17220:9;17213:25;17257:2;17295:6;17290:2;17279:9;17275:18;17268:34;17338:3;17333:2;17322:9;17318:18;17311:31;17362:6;17397;17391:13;17428:6;17420;17413:22;17466:3;17455:9;17451:19;17444:26;;17505:2;17497:6;17493:15;17479:29;;17526:4;17539:218;17553:6;17550:1;17547:13;17539:218;;;17618:13;;-1:-1:-1;;;;;17614:62:1;17602:75;;17732:15;;;;17697:12;;;;17575:1;17568:9;17539:218;;;-1:-1:-1;;;;;;;17813:55:1;;;;17808:2;17793:18;;17786:83;-1:-1:-1;;;17900:3:1;17885:19;17878:35;17774:3;17161:758;-1:-1:-1;;;17161:758:1:o;17924:248::-;18098:25;;;18154:2;18139:18;;18132:34;18086:2;18071:18;;18053:119::o;18177:319::-;18379:25;;;18435:2;18420:18;;18413:34;;;;18478:2;18463:18;;18456:34;18367:2;18352:18;;18334:162::o;18501:184::-;18673:4;18661:17;;;;18643:36;;18631:2;18616:18;;18598:87::o;18690:266::-;18890:4;18878:17;;;18860:36;;18932:17;;18927:2;18912:18;;18905:45;18848:2;18833:18;;18815:141::o;18961:128::-;;19032:1;19028:6;19025:1;19022:13;19019:2;;;19038:18;;:::i;:::-;-1:-1:-1;19074:9:1;;19009:80::o;19094:274::-;;19160:1;19150:2;;-1:-1:-1;;;19192:1:1;19185:88;19296:4;19293:1;19286:15;19324:4;19321:1;19314:15;19150:2;-1:-1:-1;19353:9:1;;19140:228::o;19373:::-;;19539:1;19471:66;19467:74;19464:1;19461:81;19456:1;19449:9;19442:17;19438:105;19435:2;;;19546:18;;:::i;:::-;-1:-1:-1;19586:9:1;;19425:176::o;19606:125::-;;19674:1;19671;19668:8;19665:2;;;19679:18;;:::i;:::-;-1:-1:-1;19716:9:1;;19655:76::o;19736:184::-;-1:-1:-1;;;19785:1:1;19778:88;19885:4;19882:1;19875:15;19909:4;19906:1;19899:15;19925:156;-1:-1:-1;;;;;20006:5:1;20002:54;19995:5;19992:65;19982:2;;20071:1;20068;20061:12;19982:2;19972:109;:::o

Swarm Source

ipfs://6579fe0f42afe3205b7deb200f9295bff0e1b426db0e8d69f9a4a73ca17db1a7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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