ETH Price: $2,420.24 (+3.52%)

Contract

0xbEfB38cE069Fc69ca21B8BCa262305032421E5c7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve187503432023-12-09 18:06:23279 days ago1702145183IN
0xbEfB38cE...32421E5c7
0 ETH0.0008752135.14655838
Approve177359432023-07-20 17:44:11421 days ago1689875051IN
0xbEfB38cE...32421E5c7
0 ETH0.001718536.41985136
Approve177305362023-07-19 23:33:23422 days ago1689809603IN
0xbEfB38cE...32421E5c7
0 ETH0.0010346321.89897209
Approve177294442023-07-19 19:53:59422 days ago1689796439IN
0xbEfB38cE...32421E5c7
0 ETH0.001173424.86771748
Transfer177293432023-07-19 19:33:47422 days ago1689795227IN
0xbEfB38cE...32421E5c7
0 ETH0.0014674234.76890246
Transfer177279052023-07-19 14:44:35422 days ago1689777875IN
0xbEfB38cE...32421E5c7
0 ETH0.001506532.85084408
Approve177269032023-07-19 11:21:23422 days ago1689765683IN
0xbEfB38cE...32421E5c7
0 ETH0.0007209715.34184599
Approve177267112023-07-19 10:42:35422 days ago1689763355IN
0xbEfB38cE...32421E5c7
0 ETH0.0008775818.57469514
Approve177267032023-07-19 10:40:59422 days ago1689763259IN
0xbEfB38cE...32421E5c7
0 ETH0.000880918.64496952
Approve177266982023-07-19 10:39:59422 days ago1689763199IN
0xbEfB38cE...32421E5c7
0 ETH0.0008246417.4542301
Approve177266942023-07-19 10:39:11422 days ago1689763151IN
0xbEfB38cE...32421E5c7
0 ETH0.00082417.44064059
Approve177266912023-07-19 10:38:35422 days ago1689763115IN
0xbEfB38cE...32421E5c7
0 ETH0.0008419517.82069863
Approve177266872023-07-19 10:37:47422 days ago1689763067IN
0xbEfB38cE...32421E5c7
0 ETH0.0008702518.41964691
Approve177266832023-07-19 10:36:59422 days ago1689763019IN
0xbEfB38cE...32421E5c7
0 ETH0.0008171717.29611204
Approve177266802023-07-19 10:36:23422 days ago1689762983IN
0xbEfB38cE...32421E5c7
0 ETH0.0008783618.59132646
Approve177266762023-07-19 10:35:35422 days ago1689762935IN
0xbEfB38cE...32421E5c7
0 ETH0.0008387917.75372261
Approve177266712023-07-19 10:34:35422 days ago1689762875IN
0xbEfB38cE...32421E5c7
0 ETH0.0008124117.19533836
Approve177266682023-07-19 10:33:59422 days ago1689762839IN
0xbEfB38cE...32421E5c7
0 ETH0.0008220217.39885489
Approve177266652023-07-19 10:33:23422 days ago1689762803IN
0xbEfB38cE...32421E5c7
0 ETH0.0008663818.33782886
Approve177266612023-07-19 10:32:35422 days ago1689762755IN
0xbEfB38cE...32421E5c7
0 ETH0.0008486817.96316046
Approve177266582023-07-19 10:31:59422 days ago1689762719IN
0xbEfB38cE...32421E5c7
0 ETH0.0008747618.5151482
Approve177266542023-07-19 10:31:11422 days ago1689762671IN
0xbEfB38cE...32421E5c7
0 ETH0.0008890218.81700245
Approve177266522023-07-19 10:30:47422 days ago1689762647IN
0xbEfB38cE...32421E5c7
0 ETH0.0007681616.34604826
Approve177266502023-07-19 10:30:23422 days ago1689762623IN
0xbEfB38cE...32421E5c7
0 ETH0.0008849518.73085656
Approve177266442023-07-19 10:29:11422 days ago1689762551IN
0xbEfB38cE...32421E5c7
0 ETH0.0008413217.80730479
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
177229122023-07-18 21:54:23423 days ago1689717263
0xbEfB38cE...32421E5c7
1.19504624 ETH
177229122023-07-18 21:54:23423 days ago1689717263
0xbEfB38cE...32421E5c7
0.00177288 ETH
177229122023-07-18 21:54:23423 days ago1689717263
0xbEfB38cE...32421E5c7
0.01205326 ETH
177229122023-07-18 21:54:23423 days ago1689717263
0xbEfB38cE...32421E5c7
1.20532662 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.21119364 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.00012541 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.002132 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.21320022 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.24614319 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.00015998 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.00248467 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.24846788 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.2905974 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.00020792 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.00293322 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.29332271 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.3483565 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.00027624 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.00351596 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.35159622 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.42533475 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.00037686 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.0042925 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.42925038 ETH
177225842023-07-18 20:47:59423 days ago1689713279
0xbEfB38cE...32421E5c7
0.53115045 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PEPCAT

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-18
*/

// SPDX-License-Identifier: MIT
/**
 _______  _______  _______  _______  _______  _______ 
|       ||       ||       ||       ||   _   ||       |
|    _  ||    ___||    _  ||       ||  |_|  ||_     _|
|   |_| ||   |___ |   |_| ||       ||       |  |   |  
|    ___||    ___||    ___||      _||       |  |   |  
|   |    |   |___ |   |    |     |_ |   _   |  |   |  
|___|    |_______||___|    |_______||__| |__|  |___|  

https://t.me/SmudgePepcat
https://twitter.com/SmudgePepcat
https://pepcat.love
 */
pragma solidity ^0.8.17;

/**
 * @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 Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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
    );

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

interface IUniswapV2Pair {
    function sync() external;
}

contract PEPCAT is IERC20Metadata, Ownable {
    //Constants
    string private constant _name = "Smudge PepCat";
    string private constant _symbol = "PEPCAT";
    uint8 private constant _decimals = 18;
    uint256 internal constant _totalSupply = 420_690_000 * 10 ** _decimals;
    uint32 private constant percent_helper = 100 * 10 ** 2;
    
    //Settings limits
    uint32 private constant max_fee = 80.00 * 10 ** 2;
    uint32 private constant min_maxes = 0.50 * 10 ** 2;
    uint32 private constant burn_limit = 10.00 * 10 ** 2;

    //OpenTrade
    bool public trade_open;
    bool public limits_active = true;

    //Fee
    bool public early_sell = false;
    address public team_wallet;
    address public deployer_wallet;
    uint32 public fee_buy = 100.00 * 10 ** 2;
    uint32 public fee_sell = 100.00 * 10 ** 2;
    uint32 public fee_early_sell = 0.00 * 10 ** 2;
    uint32 public lp_percent = 5.00 * 10 ** 2;
    uint256 public tradeOpenTime;
    //Ignore fee
    mapping(address => bool) public ignore_fee;

    //Burn
    uint256 public burn_cooldown = 30 minutes;
    uint256 public burn_last;

    //Maxes
    uint256 public max_tx = 8_413_800 * 10 ** _decimals; //2%
    uint256 public max_wallet = 8_413_800 * 10 ** _decimals; //2%
    uint256 public swap_at_amount = 4_206_900 * 10 ** _decimals; //1%

    //ERC20
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    //Router
    IUniswapV2Router02 private uniswapV2Router;
    address public pair_addr;
    bool public swap_enabled = true;

    //Percent calculation helper
    function CalcPercent(
        uint256 _input,
        uint256 _percent
    ) private pure returns (uint256) {
        return (_input * _percent) / percent_helper;
    }

    bool private inSwap = false;
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(address _team_wallet, address[] memory _input) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        pair_addr = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        team_wallet = _team_wallet;
        deployer_wallet = owner();
        ignore_fee[address(this)] = true;
        ignore_fee[msg.sender] = true;
        // Set the addresses to ignore fees
        SetIgnoreFee(_input, true);
        _balances[msg.sender] = _totalSupply;
        //Initial supply
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    //Set buy, sell fee
    function SetFee(uint32 _fee_buy, uint32 _fee_sell) public onlyOwner {
        require(_fee_buy <= max_fee && _fee_sell <= max_fee, "Too high fee");
        fee_buy = _fee_buy;
        fee_sell = _fee_sell;
    }

    //Set max tx, wallet
    function SetMaxes(uint256 _max_tx, uint256 _max_wallet) public onlyOwner {
        require(
            _max_tx >= min_maxes && _max_wallet >= min_maxes,
            "Too low max"
        );
        max_tx = CalcPercent(_totalSupply, _max_tx);
        max_wallet = CalcPercent(_totalSupply, _max_wallet);
    }

    function SetTokenSwap(
        uint256 _amount,
        uint32 _lp_percent,
        bool _enabled
    ) public onlyOwner {
        swap_at_amount = _amount;
        lp_percent = _lp_percent;
        swap_enabled = _enabled;
    }

    //Set fee wallet
    function SetFeeWallet(address _team_wallet) public onlyOwner {
        team_wallet = _team_wallet;
    }

    //Add fee ignore to wallets
    function SetIgnoreFee(
        address[] memory _input,
        bool _enabled
    ) private {
        unchecked {
            for (uint256 i = 0; i < _input.length; i++) {
                ignore_fee[_input[i]] = _enabled;
            }
        }
    }

    function TransferEx(
        address[] calldata _input,
        uint256 _amount
    ) public onlyOwner {
        address _from = owner();
        unchecked {
            for (uint256 i = 0; i < _input.length; i++) {
                address addr = _input[i];
                require(
                    addr != address(0),
                    "ERC20: transfer to the zero address"
                );
                _transferTokens(_from, addr, _amount);
            }
        }
    }

    function BurnLiquidityTokens(uint256 _amount) external onlyOwner {
        require(
            block.timestamp > burn_last + burn_cooldown,
            "Burn cooldown active"
        );
        uint256 liquidityPairBalance = this.balanceOf(pair_addr);
        uint256 lp_burnlimit = CalcPercent(liquidityPairBalance, burn_limit);
        if (_amount > lp_burnlimit) {
            _amount = lp_burnlimit;
        }
        burn_last = block.timestamp;

        if (_amount > 0) {
            _transferTokens(pair_addr, address(0xdead), _amount);
        }
        IUniswapV2Pair pair = IUniswapV2Pair(pair_addr);
        pair.sync();
    }

    function ManualSwap() public onlyOwner {
        HandleFees();
    }

    function SetLimits(bool _enable) public onlyOwner {
        limits_active = _enable;
    }

    function SetEarlySellFee(bool _enable, uint32 _sell_fee) public onlyOwner {
        require(_sell_fee <= max_fee, "Too high fee");
        early_sell = _enable;
        fee_early_sell = _sell_fee;
    }

    function StartBullrun(bool _enable) public onlyOwner {
        trade_open = _enable;
        if (_enable == true) {
            tradeOpenTime = block.timestamp;
        }
    }

    //ERC20
    function _transfer(address from, address to, uint256 amount) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        //If it's the owner, do a normal transfer
        if (from == owner() || to == owner() || from == address(this)) {
            _transferTokens(from, to, amount);
            return;
        }
        //Check if trading is enabled
        require(trade_open, "Trading is disabled");

        uint256 fee_amount = 0;
        bool isbuy = from == pair_addr;

        if (!isbuy) {
            //Handle fees
            HandleFees();
        }
        //Calculate fee if conditions met
        //Buy
        if (isbuy) {
            if (!ignore_fee[to]) {
                fee_amount = CalcPercent(amount, fee_buy);
            }
        }
        //Sell
        else {
            if (!ignore_fee[from]) {
                fee_amount = CalcPercent(
                    amount,
                    early_sell ? fee_early_sell : fee_sell
                );
            }
        }
        //Fee tokens
        unchecked {
            require(amount >= fee_amount, "fee exceeds amount");
            amount -= fee_amount;
        }
        //Disable maxes
        if (limits_active) {
            //Check maxes
            require(amount <= max_tx, "Max TX reached");
            //Exclude lp pair
            if (to != pair_addr) {
                require(
                    _balances[to] + amount <= max_wallet,
                    "Max wallet reached"
                );
            }
        }
        //Transfer fee tokens to contract
        if (fee_amount > 0) {
            _transferTokens(from, address(this), fee_amount);
        }
        //Transfer tokens
        _transferTokens(from, to, amount);
    }

    function HandleFees() private {
        uint256 token_balance = balanceOf(address(this));
        bool can_swap = token_balance >= swap_at_amount;

        if (can_swap && !inSwap && swap_enabled) {
            SwapTokensForEth(swap_at_amount);
            uint256 eth_balance = address(this).balance;
            if (eth_balance > 0 ether) {
                SendETHToFee(address(this).balance);
            }
        }
    }

    function SwapTokensForEth(uint256 _amount) private lockTheSwap {
        uint256 eth_am = CalcPercent(_amount, percent_helper - lp_percent);
        uint256 liq_am = _amount - eth_am;
        uint256 balance_before = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), _amount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            eth_am,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 liq_eth = address(this).balance - balance_before;

        AddLiquidity(liq_am, CalcPercent(liq_eth, lp_percent));
    }

    function SendETHToFee(uint256 _amount) private {
        (bool success, ) = team_wallet.call{value: _amount}(new bytes(0));
        require(success, "TransferFail");
    }

    function AddLiquidity(uint256 _amount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), _amount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            _amount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deployer_wallet,
            block.timestamp
        );
    }

    //ERC20
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _transferTokens(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

    // Function to receive Ether. msg.data must be empty
    receive() external payable {}

    // Fallback function is called when msg.data is not empty
    fallback() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_team_wallet","type":"address"},{"internalType":"address[]","name":"_input","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"BurnLiquidityTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"},{"internalType":"uint32","name":"_sell_fee","type":"uint32"}],"name":"SetEarlySellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_fee_buy","type":"uint32"},{"internalType":"uint32","name":"_fee_sell","type":"uint32"}],"name":"SetFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team_wallet","type":"address"}],"name":"SetFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"SetLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_max_tx","type":"uint256"},{"internalType":"uint256","name":"_max_wallet","type":"uint256"}],"name":"SetMaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_lp_percent","type":"uint32"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"SetTokenSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"StartBullrun","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_input","type":"address[]"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"TransferEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burn_cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burn_last","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deployer_wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"early_sell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee_buy","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee_early_sell","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee_sell","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ignore_fee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limits_active","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lp_percent","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_tx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_wallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair_addr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swap_at_amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swap_enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"team_wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeOpenTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trade_open","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600060156101000a81548160ff02191690831515021790555060008060166101000a81548160ff021916908315150217905550612710600260146101000a81548163ffffffff021916908363ffffffff160217905550612710600260186101000a81548163ffffffff021916908363ffffffff16021790555060006002601c6101000a81548163ffffffff021916908363ffffffff1602179055506101f4600360006101000a81548163ffffffff021916908363ffffffff1602179055506107086006556012600a620000da919062000927565b62806268620000ea919062000978565b6008556012600a620000fd919062000927565b628062686200010d919062000978565b6009556012600a62000120919062000927565b6240313462000130919062000978565b600a556001600e60146101000a81548160ff0219169083151502179055506000600e60156101000a81548160ff0219169083151502179055503480156200017657600080fd5b50604051620044d9380380620044d983398181016040528101906200019c919062000bb1565b620001bc620001b06200060460201b60201c565b6200060c60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000262573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000288919062000c17565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000316919062000c17565b6040518363ffffffff1660e01b81526004016200033592919062000c5a565b6020604051808303816000875af115801562000355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037b919062000c17565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200040c620006d060201b60201c565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200050f826001620006f960201b60201c565b6012600a6200051f919062000927565b631913385062000530919062000978565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620005d3919062000927565b6319133850620005e4919062000978565b604051620005f3919062000c98565b60405180910390a350505062000ce4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60005b82518110156200078857816005600085848151811062000721576200072062000cb5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620006fc565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200081b57808604811115620007f357620007f26200078d565b5b6001851615620008035780820291505b80810290506200081385620007bc565b9450620007d3565b94509492505050565b60008262000836576001905062000909565b8162000846576000905062000909565b81600181146200085f57600281146200086a57620008a0565b600191505062000909565b60ff8411156200087f576200087e6200078d565b5b8360020a9150848211156200089957620008986200078d565b5b5062000909565b5060208310610133831016604e8410600b8410161715620008da5782820a905083811115620008d457620008d36200078d565b5b62000909565b620008e98484846001620007c9565b925090508184048111156200090357620009026200078d565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009348262000910565b915062000941836200091a565b9250620009707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000824565b905092915050565b6000620009858262000910565b9150620009928362000910565b9250828202620009a28162000910565b91508282048414831517620009bc57620009bb6200078d565b5b5092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a0482620009d7565b9050919050565b62000a1681620009f7565b811462000a2257600080fd5b50565b60008151905062000a368162000a0b565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000a8c8262000a41565b810181811067ffffffffffffffff8211171562000aae5762000aad62000a52565b5b80604052505050565b600062000ac3620009c3565b905062000ad1828262000a81565b919050565b600067ffffffffffffffff82111562000af45762000af362000a52565b5b602082029050602081019050919050565b600080fd5b600062000b2162000b1b8462000ad6565b62000ab7565b9050808382526020820190506020840283018581111562000b475762000b4662000b05565b5b835b8181101562000b74578062000b5f888262000a25565b84526020840193505060208101905062000b49565b5050509392505050565b600082601f83011262000b965762000b9562000a3c565b5b815162000ba884826020860162000b0a565b91505092915050565b6000806040838503121562000bcb5762000bca620009cd565b5b600062000bdb8582860162000a25565b925050602083015167ffffffffffffffff81111562000bff5762000bfe620009d2565b5b62000c0d8582860162000b7e565b9150509250929050565b60006020828403121562000c305762000c2f620009cd565b5b600062000c408482850162000a25565b91505092915050565b62000c5481620009f7565b82525050565b600060408201905062000c71600083018562000c49565b62000c80602083018462000c49565b9392505050565b62000c928162000910565b82525050565b600060208201905062000caf600083018462000c87565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6137e58062000cf46000396000f3fe60806040526004361061023f5760003560e01c80638da5cb5b1161012e578063ba414b10116100ab578063d11fcb851161006f578063d11fcb8514610837578063dd62ed3e14610874578063e717fc30146108b1578063f2fde38b146108dc578063f5a27e861461090557610246565b8063ba414b1014610764578063bd186c4c1461078d578063bd4f1dc6146107b6578063c6b9ff6e146107e1578063c9d9159d1461080c57610246565b80639bfe8df7116100f25780639bfe8df714610691578063a1780c18146106ba578063a20adf86146106d1578063a9059cbb146106fc578063ac9358341461073957610246565b80638da5cb5b146105bc57806391d88b95146105e757806391f18b7c1461061257806395d89b411461063d57806396418d4d1461066857610246565b80635bc05f3c116101bc57806370fbc7121161018057806370fbc712146104fb578063715018a6146105265780637971fca71461053d5780637aab5d9b146105685780638bf67ad01461059357610246565b80635bc05f3c146104125780636264300e1461043d578063685e838e146104685780636ea795831461049357806370a08231146104be57610246565b80632d928cfe116102035780632d928cfe14610343578063313ce5671461036c5780633d21e5a21461039757806349dc859c146103c0578063581d30f8146103e957610246565b806306fdde0314610248578063095ea7b31461027357806312fbbbe4146102b057806318160ddd146102db57806323b872dd1461030657610246565b3661024657005b005b34801561025457600080fd5b5061025d610930565b60405161026a91906123f4565b60405180910390f35b34801561027f57600080fd5b5061029a600480360381019061029591906124b4565b61096d565b6040516102a7919061250f565b60405180910390f35b3480156102bc57600080fd5b506102c5610990565b6040516102d29190612539565b60405180910390f35b3480156102e757600080fd5b506102f0610996565b6040516102fd9190612539565b60405180910390f35b34801561031257600080fd5b5061032d60048036038101906103289190612554565b6109ba565b60405161033a919061250f565b60405180910390f35b34801561034f57600080fd5b5061036a600480360381019061036591906125d3565b6109e9565b005b34801561037857600080fd5b50610381610a22565b60405161038e919061261c565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b99190612637565b610a2b565b005b3480156103cc57600080fd5b506103e760048036038101906103e29190612664565b610a77565b005b3480156103f557600080fd5b50610410600480360381019061040b91906126cd565b610c5f565b005b34801561041e57600080fd5b50610427610cf7565b604051610434919061250f565b60405180910390f35b34801561044957600080fd5b50610452610d0a565b60405161045f919061271c565b60405180910390f35b34801561047457600080fd5b5061047d610d20565b60405161048a9190612539565b60405180910390f35b34801561049f57600080fd5b506104a8610d26565b6040516104b59190612746565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e09190612637565b610d4c565b6040516104f29190612539565b60405180910390f35b34801561050757600080fd5b50610510610d95565b60405161051d9190612539565b60405180910390f35b34801561053257600080fd5b5061053b610d9b565b005b34801561054957600080fd5b50610552610daf565b60405161055f919061271c565b60405180910390f35b34801561057457600080fd5b5061057d610dc5565b60405161058a919061250f565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b59190612761565b610dd8565b005b3480156105c857600080fd5b506105d1610e27565b6040516105de9190612746565b60405180910390f35b3480156105f357600080fd5b506105fc610e50565b6040516106099190612539565b60405180910390f35b34801561061e57600080fd5b50610627610e56565b6040516106349190612746565b60405180910390f35b34801561064957600080fd5b50610652610e7c565b60405161065f91906123f4565b60405180910390f35b34801561067457600080fd5b5061068f600480360381019061068a91906127b4565b610eb9565b005b34801561069d57600080fd5b506106b860048036038101906106b391906127f4565b610f72565b005b3480156106c657600080fd5b506106cf611033565b005b3480156106dd57600080fd5b506106e6611045565b6040516106f3919061250f565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e91906124b4565b611058565b604051610730919061250f565b60405180910390f35b34801561074557600080fd5b5061074e61107b565b60405161075b919061250f565b60405180910390f35b34801561077057600080fd5b5061078b60048036038101906107869190612899565b61108e565b005b34801561079957600080fd5b506107b460048036038101906107af91906125d3565b61116b565b005b3480156107c257600080fd5b506107cb611190565b6040516107d8919061271c565b60405180910390f35b3480156107ed57600080fd5b506107f66111a6565b6040516108039190612746565b60405180910390f35b34801561081857600080fd5b506108216111cc565b60405161082e919061271c565b60405180910390f35b34801561084357600080fd5b5061085e60048036038101906108599190612637565b6111e2565b60405161086b919061250f565b60405180910390f35b34801561088057600080fd5b5061089b600480360381019061089691906128f9565b611202565b6040516108a89190612539565b60405180910390f35b3480156108bd57600080fd5b506108c6611289565b6040516108d39190612539565b60405180910390f35b3480156108e857600080fd5b5061090360048036038101906108fe9190612637565b61128f565b005b34801561091157600080fd5b5061091a611312565b6040516109279190612539565b60405180910390f35b60606040518060400160405280600d81526020017f536d756467652050657043617400000000000000000000000000000000000000815250905090565b600080610978611318565b9050610985818585611320565b600191505092915050565b60045481565b60006012600a6109a69190612a9b565b63191338506109b59190612ae6565b905090565b6000806109c5611318565b90506109d28582856114e9565b6109dd858585611575565b60019150509392505050565b6109f1611adc565b80600060146101000a81548160ff0219169083151502179055506001151581151503610a1f57426004819055505b50565b60006012905090565b610a33611adc565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a7f611adc565b600654600754610a8f9190612b28565b4211610ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac790612ba8565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff166370a08231600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610b2d9190612746565b602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612bdd565b90506000610b84826103e863ffffffff16611b5a565b905080831115610b92578092505b426007819055506000831115610bd257610bd1600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead85611b83565b5b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050505050505050565b610c67611adc565b611f4063ffffffff168163ffffffff161115610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf90612c56565b60405180910390fd5b81600060166101000a81548160ff021916908315150217905550806002601c6101000a81548163ffffffff021916908363ffffffff1602179055505050565b600060169054906101000a900460ff1681565b600260189054906101000a900463ffffffff1681565b600a5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b610da3611adc565b610dad6000611d08565b565b600260149054906101000a900463ffffffff1681565b600060149054906101000a900460ff1681565b610de0611adc565b82600a8190555081600360006101000a81548163ffffffff021916908363ffffffff16021790555080600e60146101000a81548160ff021916908315150217905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600681526020017f5045504341540000000000000000000000000000000000000000000000000000815250905090565b610ec1611adc565b611f4063ffffffff168263ffffffff1611158015610eed5750611f4063ffffffff168163ffffffff1611155b610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390612c56565b60405180910390fd5b81600260146101000a81548163ffffffff021916908363ffffffff16021790555080600260186101000a81548163ffffffff021916908363ffffffff1602179055505050565b610f7a611adc565b603263ffffffff168210158015610f985750603263ffffffff168110155b610fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fce90612cc2565b60405180910390fd5b610ffd6012600a610fe89190612a9b565b6319133850610ff79190612ae6565b83611b5a565b6008819055506110296012600a6110149190612a9b565b63191338506110239190612ae6565b82611b5a565b6009819055505050565b61103b611adc565b611043611dcc565b565b600060159054906101000a900460ff1681565b600080611063611318565b9050611070818585611575565b600191505092915050565b600e60149054906101000a900460ff1681565b611096611adc565b60006110a0610e27565b905060005b848490508110156111645760008585838181106110c5576110c4612ce2565b5b90506020020160208101906110da9190612637565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114290612d83565b60405180910390fd5b611156838286611b83565b5080806001019150506110a5565b5050505050565b611173611adc565b80600060156101000a81548160ff02191690831515021790555050565b6002601c9054906101000a900463ffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900463ffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611297611adc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612e15565b60405180910390fd5b61130f81611d08565b50565b60075481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138690612ea7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590612f39565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114dc9190612539565b60405180910390a3505050565b60006114f58484611202565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461156f5781811015611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155890612fa5565b60405180910390fd5b61156e8484848403611320565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90613037565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a90612d83565b60405180910390fd5b60008111611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d906130c9565b60405180910390fd5b61169e610e27565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061170957506116da610e27565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061173f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156117545761174f838383611b83565b611ad7565b600060149054906101000a900460ff166117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613135565b60405180910390fd5b600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490508061180757611806611dcc565b5b801561188857600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118835761188083600260149054906101000a900463ffffffff1663ffffffff16611b5a565b91505b61192c565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661192b5761192883600060169054906101000a900460ff1661190957600260189054906101000a900463ffffffff1661191d565b6002601c9054906101000a900463ffffffff165b63ffffffff16611b5a565b91505b5b8183101561196f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611966906131a1565b60405180910390fd5b8183039250600060159054906101000a900460ff1615611ab4576008548311156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061320d565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611ab35760095483600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a719190612b28565b1115611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990613279565b60405180910390fd5b5b5b6000821115611ac957611ac8853084611b83565b5b611ad4858585611b83565b50505b505050565b611ae4611318565b73ffffffffffffffffffffffffffffffffffffffff16611b02610e27565b73ffffffffffffffffffffffffffffffffffffffff1614611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f906132e5565b60405180910390fd5b565b600061271063ffffffff168284611b719190612ae6565b611b7b9190613334565b905092915050565b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c01906133d7565b60405180910390fd5b818103600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cfa9190612539565b60405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611dd730610d4c565b90506000600a548210159050808015611dfd5750600e60159054906101000a900460ff16155b8015611e155750600e60149054906101000a900460ff165b15611e3f57611e25600a54611e43565b60004790506000811115611e3d57611e3c47612143565b5b505b5050565b6001600e60156101000a81548160ff0219169083151502179055506000611e8f82600360009054906101000a900463ffffffff16612710611e8491906133f7565b63ffffffff16611b5a565b905060008183611e9f919061342f565b905060004790506000600267ffffffffffffffff811115611ec357611ec2613463565b5b604051908082528060200260200182016040528015611ef15781602001602082028036833780820191505090505b5090503081600081518110611f0957611f08612ce2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd491906134a7565b81600181518110611fe857611fe7612ce2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204f30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687611320565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016120b39594939291906135d7565b600060405180830381600087803b1580156120cd57600080fd5b505af11580156120e1573d6000803e3d6000fd5b50505050600082476120f3919061342f565b90506121208461211b83600360009054906101000a900463ffffffff1663ffffffff16611b5a565b612264565b50505050506000600e60156101000a81548160ff02191690831515021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff81111561219a57612199613463565b5b6040519080825280601f01601f1916602001820160405280156121cc5781602001600182028036833780820191505090505b506040516121da9190613678565b60006040518083038185875af1925050503d8060008114612217576040519150601f19603f3d011682016040523d82523d6000602084013e61221c565b606091505b5050905080612260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612257906136db565b60405180910390fd5b5050565b61229130600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611320565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161231a969594939291906136fb565b60606040518083038185885af1158015612338573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061235d919061375c565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561239e578082015181840152602081019050612383565b60008484015250505050565b6000601f19601f8301169050919050565b60006123c682612364565b6123d0818561236f565b93506123e0818560208601612380565b6123e9816123aa565b840191505092915050565b6000602082019050818103600083015261240e81846123bb565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061244b82612420565b9050919050565b61245b81612440565b811461246657600080fd5b50565b60008135905061247881612452565b92915050565b6000819050919050565b6124918161247e565b811461249c57600080fd5b50565b6000813590506124ae81612488565b92915050565b600080604083850312156124cb576124ca612416565b5b60006124d985828601612469565b92505060206124ea8582860161249f565b9150509250929050565b60008115159050919050565b612509816124f4565b82525050565b60006020820190506125246000830184612500565b92915050565b6125338161247e565b82525050565b600060208201905061254e600083018461252a565b92915050565b60008060006060848603121561256d5761256c612416565b5b600061257b86828701612469565b935050602061258c86828701612469565b925050604061259d8682870161249f565b9150509250925092565b6125b0816124f4565b81146125bb57600080fd5b50565b6000813590506125cd816125a7565b92915050565b6000602082840312156125e9576125e8612416565b5b60006125f7848285016125be565b91505092915050565b600060ff82169050919050565b61261681612600565b82525050565b6000602082019050612631600083018461260d565b92915050565b60006020828403121561264d5761264c612416565b5b600061265b84828501612469565b91505092915050565b60006020828403121561267a57612679612416565b5b60006126888482850161249f565b91505092915050565b600063ffffffff82169050919050565b6126aa81612691565b81146126b557600080fd5b50565b6000813590506126c7816126a1565b92915050565b600080604083850312156126e4576126e3612416565b5b60006126f2858286016125be565b9250506020612703858286016126b8565b9150509250929050565b61271681612691565b82525050565b6000602082019050612731600083018461270d565b92915050565b61274081612440565b82525050565b600060208201905061275b6000830184612737565b92915050565b60008060006060848603121561277a57612779612416565b5b60006127888682870161249f565b9350506020612799868287016126b8565b92505060406127aa868287016125be565b9150509250925092565b600080604083850312156127cb576127ca612416565b5b60006127d9858286016126b8565b92505060206127ea858286016126b8565b9150509250929050565b6000806040838503121561280b5761280a612416565b5b60006128198582860161249f565b925050602061282a8582860161249f565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261285957612858612834565b5b8235905067ffffffffffffffff81111561287657612875612839565b5b6020830191508360208202830111156128925761289161283e565b5b9250929050565b6000806000604084860312156128b2576128b1612416565b5b600084013567ffffffffffffffff8111156128d0576128cf61241b565b5b6128dc86828701612843565b935093505060206128ef8682870161249f565b9150509250925092565b600080604083850312156129105761290f612416565b5b600061291e85828601612469565b925050602061292f85828601612469565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129bf5780860481111561299b5761299a612939565b5b60018516156129aa5780820291505b80810290506129b885612968565b945061297f565b94509492505050565b6000826129d85760019050612a94565b816129e65760009050612a94565b81600181146129fc5760028114612a0657612a35565b6001915050612a94565b60ff841115612a1857612a17612939565b5b8360020a915084821115612a2f57612a2e612939565b5b50612a94565b5060208310610133831016604e8410600b8410161715612a6a5782820a905083811115612a6557612a64612939565b5b612a94565b612a778484846001612975565b92509050818404811115612a8e57612a8d612939565b5b81810290505b9392505050565b6000612aa68261247e565b9150612ab183612600565b9250612ade7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129c8565b905092915050565b6000612af18261247e565b9150612afc8361247e565b9250828202612b0a8161247e565b91508282048414831517612b2157612b20612939565b5b5092915050565b6000612b338261247e565b9150612b3e8361247e565b9250828201905080821115612b5657612b55612939565b5b92915050565b7f4275726e20636f6f6c646f776e20616374697665000000000000000000000000600082015250565b6000612b9260148361236f565b9150612b9d82612b5c565b602082019050919050565b60006020820190508181036000830152612bc181612b85565b9050919050565b600081519050612bd781612488565b92915050565b600060208284031215612bf357612bf2612416565b5b6000612c0184828501612bc8565b91505092915050565b7f546f6f2068696768206665650000000000000000000000000000000000000000600082015250565b6000612c40600c8361236f565b9150612c4b82612c0a565b602082019050919050565b60006020820190508181036000830152612c6f81612c33565b9050919050565b7f546f6f206c6f77206d6178000000000000000000000000000000000000000000600082015250565b6000612cac600b8361236f565b9150612cb782612c76565b602082019050919050565b60006020820190508181036000830152612cdb81612c9f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d6d60238361236f565b9150612d7882612d11565b604082019050919050565b60006020820190508181036000830152612d9c81612d60565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612dff60268361236f565b9150612e0a82612da3565b604082019050919050565b60006020820190508181036000830152612e2e81612df2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e9160248361236f565b9150612e9c82612e35565b604082019050919050565b60006020820190508181036000830152612ec081612e84565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f2360228361236f565b9150612f2e82612ec7565b604082019050919050565b60006020820190508181036000830152612f5281612f16565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612f8f601d8361236f565b9150612f9a82612f59565b602082019050919050565b60006020820190508181036000830152612fbe81612f82565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061302160258361236f565b915061302c82612fc5565b604082019050919050565b6000602082019050818103600083015261305081613014565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130b360298361236f565b91506130be82613057565b604082019050919050565b600060208201905081810360008301526130e2816130a6565b9050919050565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b600061311f60138361236f565b915061312a826130e9565b602082019050919050565b6000602082019050818103600083015261314e81613112565b9050919050565b7f666565206578636565647320616d6f756e740000000000000000000000000000600082015250565b600061318b60128361236f565b915061319682613155565b602082019050919050565b600060208201905081810360008301526131ba8161317e565b9050919050565b7f4d61782054582072656163686564000000000000000000000000000000000000600082015250565b60006131f7600e8361236f565b9150613202826131c1565b602082019050919050565b60006020820190508181036000830152613226816131ea565b9050919050565b7f4d61782077616c6c657420726561636865640000000000000000000000000000600082015250565b600061326360128361236f565b915061326e8261322d565b602082019050919050565b6000602082019050818103600083015261329281613256565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132cf60208361236f565b91506132da82613299565b602082019050919050565b600060208201905081810360008301526132fe816132c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061333f8261247e565b915061334a8361247e565b92508261335a57613359613305565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006133c160268361236f565b91506133cc82613365565b604082019050919050565b600060208201905081810360008301526133f0816133b4565b9050919050565b600061340282612691565b915061340d83612691565b9250828203905063ffffffff81111561342957613428612939565b5b92915050565b600061343a8261247e565b91506134458361247e565b925082820390508181111561345d5761345c612939565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506134a181612452565b92915050565b6000602082840312156134bd576134bc612416565b5b60006134cb84828501613492565b91505092915050565b6000819050919050565b6000819050919050565b60006135036134fe6134f9846134d4565b6134de565b61247e565b9050919050565b613513816134e8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61354e81612440565b82525050565b60006135608383613545565b60208301905092915050565b6000602082019050919050565b600061358482613519565b61358e8185613524565b935061359983613535565b8060005b838110156135ca5781516135b18882613554565b97506135bc8361356c565b92505060018101905061359d565b5085935050505092915050565b600060a0820190506135ec600083018861252a565b6135f9602083018761350a565b818103604083015261360b8186613579565b905061361a6060830185612737565b613627608083018461252a565b9695505050505050565b600081519050919050565b600081905092915050565b600061365282613631565b61365c818561363c565b935061366c818560208601612380565b80840191505092915050565b60006136848284613647565b915081905092915050565b7f5472616e736665724661696c0000000000000000000000000000000000000000600082015250565b60006136c5600c8361236f565b91506136d08261368f565b602082019050919050565b600060208201905081810360008301526136f4816136b8565b9050919050565b600060c0820190506137106000830189612737565b61371d602083018861252a565b61372a604083018761350a565b613737606083018661350a565b6137446080830185612737565b61375160a083018461252a565b979650505050505050565b60008060006060848603121561377557613774612416565b5b600061378386828701612bc8565b935050602061379486828701612bc8565b92505060406137a586828701612bc8565b915050925092509256fea26469706673582212202742bb6bab5dd77131972e9e1cfdcae2e87d8b5e53b445085c5a785f32f5462764736f6c634300081100330000000000000000000000003257e8f0c0d1cf1c4059ef0f783fecd321052e630000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001500000000000000000000000096053685c8478f90e3b09326ebe61f3242c564700000000000000000000000004e6d564092b6f05b63e792ae10ad1a2c1aca21ea0000000000000000000000002d68f19c8b8dc30d938eb313a18a1cc5ae2cb40000000000000000000000000045520d6e23d49e7cd2781c700776012c47560836000000000000000000000000e6f47bdc2fccf6cfa7c546f31c70d90a75e00d9d000000000000000000000000d1ce672e6cebb59c7a8f132892e990eda5102dd700000000000000000000000063d3ad028bbfa4eb1bfa39167e06eee58c2344f6000000000000000000000000c308985626a2f36c746dcf62ac8c38e106bdac1400000000000000000000000005d38908a49e0cff8b72afa2d5c3be920030a6f3000000000000000000000000405d51a6bb32b654d3d085267542c94f1e642d9e000000000000000000000000dfe8c32a45c9448b692e828d028fa42c7a0391c1000000000000000000000000137e378188b3398833c54211467a7e4f99863440000000000000000000000000def1200c802a4a190b059a9601a91371dbce2f79000000000000000000000000f03b107be0b090dcad1439a5dcfbb53f52c45682000000000000000000000000ddde49d201930716ab42c23a507a5cae2405c2380000000000000000000000009a3362d2a04949f111634a2160513b014b62a49500000000000000000000000087c1d981d09dfbffac20bfd328e5aab2b364939e000000000000000000000000b278c98e26be69699503319cdacb1e5aef170370000000000000000000000000f0139d27e94bcc13cc0db2382b6f85b091c0276e000000000000000000000000741705af08d99e3d4879e960ba0a0130a585bc5c000000000000000000000000526a48df8de02ac4bbd1c87333cd59582cfbc0e8

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80638da5cb5b1161012e578063ba414b10116100ab578063d11fcb851161006f578063d11fcb8514610837578063dd62ed3e14610874578063e717fc30146108b1578063f2fde38b146108dc578063f5a27e861461090557610246565b8063ba414b1014610764578063bd186c4c1461078d578063bd4f1dc6146107b6578063c6b9ff6e146107e1578063c9d9159d1461080c57610246565b80639bfe8df7116100f25780639bfe8df714610691578063a1780c18146106ba578063a20adf86146106d1578063a9059cbb146106fc578063ac9358341461073957610246565b80638da5cb5b146105bc57806391d88b95146105e757806391f18b7c1461061257806395d89b411461063d57806396418d4d1461066857610246565b80635bc05f3c116101bc57806370fbc7121161018057806370fbc712146104fb578063715018a6146105265780637971fca71461053d5780637aab5d9b146105685780638bf67ad01461059357610246565b80635bc05f3c146104125780636264300e1461043d578063685e838e146104685780636ea795831461049357806370a08231146104be57610246565b80632d928cfe116102035780632d928cfe14610343578063313ce5671461036c5780633d21e5a21461039757806349dc859c146103c0578063581d30f8146103e957610246565b806306fdde0314610248578063095ea7b31461027357806312fbbbe4146102b057806318160ddd146102db57806323b872dd1461030657610246565b3661024657005b005b34801561025457600080fd5b5061025d610930565b60405161026a91906123f4565b60405180910390f35b34801561027f57600080fd5b5061029a600480360381019061029591906124b4565b61096d565b6040516102a7919061250f565b60405180910390f35b3480156102bc57600080fd5b506102c5610990565b6040516102d29190612539565b60405180910390f35b3480156102e757600080fd5b506102f0610996565b6040516102fd9190612539565b60405180910390f35b34801561031257600080fd5b5061032d60048036038101906103289190612554565b6109ba565b60405161033a919061250f565b60405180910390f35b34801561034f57600080fd5b5061036a600480360381019061036591906125d3565b6109e9565b005b34801561037857600080fd5b50610381610a22565b60405161038e919061261c565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b99190612637565b610a2b565b005b3480156103cc57600080fd5b506103e760048036038101906103e29190612664565b610a77565b005b3480156103f557600080fd5b50610410600480360381019061040b91906126cd565b610c5f565b005b34801561041e57600080fd5b50610427610cf7565b604051610434919061250f565b60405180910390f35b34801561044957600080fd5b50610452610d0a565b60405161045f919061271c565b60405180910390f35b34801561047457600080fd5b5061047d610d20565b60405161048a9190612539565b60405180910390f35b34801561049f57600080fd5b506104a8610d26565b6040516104b59190612746565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e09190612637565b610d4c565b6040516104f29190612539565b60405180910390f35b34801561050757600080fd5b50610510610d95565b60405161051d9190612539565b60405180910390f35b34801561053257600080fd5b5061053b610d9b565b005b34801561054957600080fd5b50610552610daf565b60405161055f919061271c565b60405180910390f35b34801561057457600080fd5b5061057d610dc5565b60405161058a919061250f565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b59190612761565b610dd8565b005b3480156105c857600080fd5b506105d1610e27565b6040516105de9190612746565b60405180910390f35b3480156105f357600080fd5b506105fc610e50565b6040516106099190612539565b60405180910390f35b34801561061e57600080fd5b50610627610e56565b6040516106349190612746565b60405180910390f35b34801561064957600080fd5b50610652610e7c565b60405161065f91906123f4565b60405180910390f35b34801561067457600080fd5b5061068f600480360381019061068a91906127b4565b610eb9565b005b34801561069d57600080fd5b506106b860048036038101906106b391906127f4565b610f72565b005b3480156106c657600080fd5b506106cf611033565b005b3480156106dd57600080fd5b506106e6611045565b6040516106f3919061250f565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e91906124b4565b611058565b604051610730919061250f565b60405180910390f35b34801561074557600080fd5b5061074e61107b565b60405161075b919061250f565b60405180910390f35b34801561077057600080fd5b5061078b60048036038101906107869190612899565b61108e565b005b34801561079957600080fd5b506107b460048036038101906107af91906125d3565b61116b565b005b3480156107c257600080fd5b506107cb611190565b6040516107d8919061271c565b60405180910390f35b3480156107ed57600080fd5b506107f66111a6565b6040516108039190612746565b60405180910390f35b34801561081857600080fd5b506108216111cc565b60405161082e919061271c565b60405180910390f35b34801561084357600080fd5b5061085e60048036038101906108599190612637565b6111e2565b60405161086b919061250f565b60405180910390f35b34801561088057600080fd5b5061089b600480360381019061089691906128f9565b611202565b6040516108a89190612539565b60405180910390f35b3480156108bd57600080fd5b506108c6611289565b6040516108d39190612539565b60405180910390f35b3480156108e857600080fd5b5061090360048036038101906108fe9190612637565b61128f565b005b34801561091157600080fd5b5061091a611312565b6040516109279190612539565b60405180910390f35b60606040518060400160405280600d81526020017f536d756467652050657043617400000000000000000000000000000000000000815250905090565b600080610978611318565b9050610985818585611320565b600191505092915050565b60045481565b60006012600a6109a69190612a9b565b63191338506109b59190612ae6565b905090565b6000806109c5611318565b90506109d28582856114e9565b6109dd858585611575565b60019150509392505050565b6109f1611adc565b80600060146101000a81548160ff0219169083151502179055506001151581151503610a1f57426004819055505b50565b60006012905090565b610a33611adc565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a7f611adc565b600654600754610a8f9190612b28565b4211610ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac790612ba8565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff166370a08231600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610b2d9190612746565b602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612bdd565b90506000610b84826103e863ffffffff16611b5a565b905080831115610b92578092505b426007819055506000831115610bd257610bd1600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead85611b83565b5b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050505050505050565b610c67611adc565b611f4063ffffffff168163ffffffff161115610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf90612c56565b60405180910390fd5b81600060166101000a81548160ff021916908315150217905550806002601c6101000a81548163ffffffff021916908363ffffffff1602179055505050565b600060169054906101000a900460ff1681565b600260189054906101000a900463ffffffff1681565b600a5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b610da3611adc565b610dad6000611d08565b565b600260149054906101000a900463ffffffff1681565b600060149054906101000a900460ff1681565b610de0611adc565b82600a8190555081600360006101000a81548163ffffffff021916908363ffffffff16021790555080600e60146101000a81548160ff021916908315150217905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600681526020017f5045504341540000000000000000000000000000000000000000000000000000815250905090565b610ec1611adc565b611f4063ffffffff168263ffffffff1611158015610eed5750611f4063ffffffff168163ffffffff1611155b610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390612c56565b60405180910390fd5b81600260146101000a81548163ffffffff021916908363ffffffff16021790555080600260186101000a81548163ffffffff021916908363ffffffff1602179055505050565b610f7a611adc565b603263ffffffff168210158015610f985750603263ffffffff168110155b610fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fce90612cc2565b60405180910390fd5b610ffd6012600a610fe89190612a9b565b6319133850610ff79190612ae6565b83611b5a565b6008819055506110296012600a6110149190612a9b565b63191338506110239190612ae6565b82611b5a565b6009819055505050565b61103b611adc565b611043611dcc565b565b600060159054906101000a900460ff1681565b600080611063611318565b9050611070818585611575565b600191505092915050565b600e60149054906101000a900460ff1681565b611096611adc565b60006110a0610e27565b905060005b848490508110156111645760008585838181106110c5576110c4612ce2565b5b90506020020160208101906110da9190612637565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114290612d83565b60405180910390fd5b611156838286611b83565b5080806001019150506110a5565b5050505050565b611173611adc565b80600060156101000a81548160ff02191690831515021790555050565b6002601c9054906101000a900463ffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900463ffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611297611adc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612e15565b60405180910390fd5b61130f81611d08565b50565b60075481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138690612ea7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590612f39565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114dc9190612539565b60405180910390a3505050565b60006114f58484611202565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461156f5781811015611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155890612fa5565b60405180910390fd5b61156e8484848403611320565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90613037565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a90612d83565b60405180910390fd5b60008111611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d906130c9565b60405180910390fd5b61169e610e27565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061170957506116da610e27565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061173f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156117545761174f838383611b83565b611ad7565b600060149054906101000a900460ff166117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613135565b60405180910390fd5b600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490508061180757611806611dcc565b5b801561188857600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118835761188083600260149054906101000a900463ffffffff1663ffffffff16611b5a565b91505b61192c565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661192b5761192883600060169054906101000a900460ff1661190957600260189054906101000a900463ffffffff1661191d565b6002601c9054906101000a900463ffffffff165b63ffffffff16611b5a565b91505b5b8183101561196f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611966906131a1565b60405180910390fd5b8183039250600060159054906101000a900460ff1615611ab4576008548311156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061320d565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611ab35760095483600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a719190612b28565b1115611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990613279565b60405180910390fd5b5b5b6000821115611ac957611ac8853084611b83565b5b611ad4858585611b83565b50505b505050565b611ae4611318565b73ffffffffffffffffffffffffffffffffffffffff16611b02610e27565b73ffffffffffffffffffffffffffffffffffffffff1614611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f906132e5565b60405180910390fd5b565b600061271063ffffffff168284611b719190612ae6565b611b7b9190613334565b905092915050565b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c01906133d7565b60405180910390fd5b818103600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cfa9190612539565b60405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611dd730610d4c565b90506000600a548210159050808015611dfd5750600e60159054906101000a900460ff16155b8015611e155750600e60149054906101000a900460ff165b15611e3f57611e25600a54611e43565b60004790506000811115611e3d57611e3c47612143565b5b505b5050565b6001600e60156101000a81548160ff0219169083151502179055506000611e8f82600360009054906101000a900463ffffffff16612710611e8491906133f7565b63ffffffff16611b5a565b905060008183611e9f919061342f565b905060004790506000600267ffffffffffffffff811115611ec357611ec2613463565b5b604051908082528060200260200182016040528015611ef15781602001602082028036833780820191505090505b5090503081600081518110611f0957611f08612ce2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd491906134a7565b81600181518110611fe857611fe7612ce2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204f30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687611320565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016120b39594939291906135d7565b600060405180830381600087803b1580156120cd57600080fd5b505af11580156120e1573d6000803e3d6000fd5b50505050600082476120f3919061342f565b90506121208461211b83600360009054906101000a900463ffffffff1663ffffffff16611b5a565b612264565b50505050506000600e60156101000a81548160ff02191690831515021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff81111561219a57612199613463565b5b6040519080825280601f01601f1916602001820160405280156121cc5781602001600182028036833780820191505090505b506040516121da9190613678565b60006040518083038185875af1925050503d8060008114612217576040519150601f19603f3d011682016040523d82523d6000602084013e61221c565b606091505b5050905080612260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612257906136db565b60405180910390fd5b5050565b61229130600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611320565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161231a969594939291906136fb565b60606040518083038185885af1158015612338573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061235d919061375c565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561239e578082015181840152602081019050612383565b60008484015250505050565b6000601f19601f8301169050919050565b60006123c682612364565b6123d0818561236f565b93506123e0818560208601612380565b6123e9816123aa565b840191505092915050565b6000602082019050818103600083015261240e81846123bb565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061244b82612420565b9050919050565b61245b81612440565b811461246657600080fd5b50565b60008135905061247881612452565b92915050565b6000819050919050565b6124918161247e565b811461249c57600080fd5b50565b6000813590506124ae81612488565b92915050565b600080604083850312156124cb576124ca612416565b5b60006124d985828601612469565b92505060206124ea8582860161249f565b9150509250929050565b60008115159050919050565b612509816124f4565b82525050565b60006020820190506125246000830184612500565b92915050565b6125338161247e565b82525050565b600060208201905061254e600083018461252a565b92915050565b60008060006060848603121561256d5761256c612416565b5b600061257b86828701612469565b935050602061258c86828701612469565b925050604061259d8682870161249f565b9150509250925092565b6125b0816124f4565b81146125bb57600080fd5b50565b6000813590506125cd816125a7565b92915050565b6000602082840312156125e9576125e8612416565b5b60006125f7848285016125be565b91505092915050565b600060ff82169050919050565b61261681612600565b82525050565b6000602082019050612631600083018461260d565b92915050565b60006020828403121561264d5761264c612416565b5b600061265b84828501612469565b91505092915050565b60006020828403121561267a57612679612416565b5b60006126888482850161249f565b91505092915050565b600063ffffffff82169050919050565b6126aa81612691565b81146126b557600080fd5b50565b6000813590506126c7816126a1565b92915050565b600080604083850312156126e4576126e3612416565b5b60006126f2858286016125be565b9250506020612703858286016126b8565b9150509250929050565b61271681612691565b82525050565b6000602082019050612731600083018461270d565b92915050565b61274081612440565b82525050565b600060208201905061275b6000830184612737565b92915050565b60008060006060848603121561277a57612779612416565b5b60006127888682870161249f565b9350506020612799868287016126b8565b92505060406127aa868287016125be565b9150509250925092565b600080604083850312156127cb576127ca612416565b5b60006127d9858286016126b8565b92505060206127ea858286016126b8565b9150509250929050565b6000806040838503121561280b5761280a612416565b5b60006128198582860161249f565b925050602061282a8582860161249f565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261285957612858612834565b5b8235905067ffffffffffffffff81111561287657612875612839565b5b6020830191508360208202830111156128925761289161283e565b5b9250929050565b6000806000604084860312156128b2576128b1612416565b5b600084013567ffffffffffffffff8111156128d0576128cf61241b565b5b6128dc86828701612843565b935093505060206128ef8682870161249f565b9150509250925092565b600080604083850312156129105761290f612416565b5b600061291e85828601612469565b925050602061292f85828601612469565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129bf5780860481111561299b5761299a612939565b5b60018516156129aa5780820291505b80810290506129b885612968565b945061297f565b94509492505050565b6000826129d85760019050612a94565b816129e65760009050612a94565b81600181146129fc5760028114612a0657612a35565b6001915050612a94565b60ff841115612a1857612a17612939565b5b8360020a915084821115612a2f57612a2e612939565b5b50612a94565b5060208310610133831016604e8410600b8410161715612a6a5782820a905083811115612a6557612a64612939565b5b612a94565b612a778484846001612975565b92509050818404811115612a8e57612a8d612939565b5b81810290505b9392505050565b6000612aa68261247e565b9150612ab183612600565b9250612ade7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129c8565b905092915050565b6000612af18261247e565b9150612afc8361247e565b9250828202612b0a8161247e565b91508282048414831517612b2157612b20612939565b5b5092915050565b6000612b338261247e565b9150612b3e8361247e565b9250828201905080821115612b5657612b55612939565b5b92915050565b7f4275726e20636f6f6c646f776e20616374697665000000000000000000000000600082015250565b6000612b9260148361236f565b9150612b9d82612b5c565b602082019050919050565b60006020820190508181036000830152612bc181612b85565b9050919050565b600081519050612bd781612488565b92915050565b600060208284031215612bf357612bf2612416565b5b6000612c0184828501612bc8565b91505092915050565b7f546f6f2068696768206665650000000000000000000000000000000000000000600082015250565b6000612c40600c8361236f565b9150612c4b82612c0a565b602082019050919050565b60006020820190508181036000830152612c6f81612c33565b9050919050565b7f546f6f206c6f77206d6178000000000000000000000000000000000000000000600082015250565b6000612cac600b8361236f565b9150612cb782612c76565b602082019050919050565b60006020820190508181036000830152612cdb81612c9f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d6d60238361236f565b9150612d7882612d11565b604082019050919050565b60006020820190508181036000830152612d9c81612d60565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612dff60268361236f565b9150612e0a82612da3565b604082019050919050565b60006020820190508181036000830152612e2e81612df2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e9160248361236f565b9150612e9c82612e35565b604082019050919050565b60006020820190508181036000830152612ec081612e84565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f2360228361236f565b9150612f2e82612ec7565b604082019050919050565b60006020820190508181036000830152612f5281612f16565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612f8f601d8361236f565b9150612f9a82612f59565b602082019050919050565b60006020820190508181036000830152612fbe81612f82565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061302160258361236f565b915061302c82612fc5565b604082019050919050565b6000602082019050818103600083015261305081613014565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130b360298361236f565b91506130be82613057565b604082019050919050565b600060208201905081810360008301526130e2816130a6565b9050919050565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b600061311f60138361236f565b915061312a826130e9565b602082019050919050565b6000602082019050818103600083015261314e81613112565b9050919050565b7f666565206578636565647320616d6f756e740000000000000000000000000000600082015250565b600061318b60128361236f565b915061319682613155565b602082019050919050565b600060208201905081810360008301526131ba8161317e565b9050919050565b7f4d61782054582072656163686564000000000000000000000000000000000000600082015250565b60006131f7600e8361236f565b9150613202826131c1565b602082019050919050565b60006020820190508181036000830152613226816131ea565b9050919050565b7f4d61782077616c6c657420726561636865640000000000000000000000000000600082015250565b600061326360128361236f565b915061326e8261322d565b602082019050919050565b6000602082019050818103600083015261329281613256565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132cf60208361236f565b91506132da82613299565b602082019050919050565b600060208201905081810360008301526132fe816132c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061333f8261247e565b915061334a8361247e565b92508261335a57613359613305565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006133c160268361236f565b91506133cc82613365565b604082019050919050565b600060208201905081810360008301526133f0816133b4565b9050919050565b600061340282612691565b915061340d83612691565b9250828203905063ffffffff81111561342957613428612939565b5b92915050565b600061343a8261247e565b91506134458361247e565b925082820390508181111561345d5761345c612939565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506134a181612452565b92915050565b6000602082840312156134bd576134bc612416565b5b60006134cb84828501613492565b91505092915050565b6000819050919050565b6000819050919050565b60006135036134fe6134f9846134d4565b6134de565b61247e565b9050919050565b613513816134e8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61354e81612440565b82525050565b60006135608383613545565b60208301905092915050565b6000602082019050919050565b600061358482613519565b61358e8185613524565b935061359983613535565b8060005b838110156135ca5781516135b18882613554565b97506135bc8361356c565b92505060018101905061359d565b5085935050505092915050565b600060a0820190506135ec600083018861252a565b6135f9602083018761350a565b818103604083015261360b8186613579565b905061361a6060830185612737565b613627608083018461252a565b9695505050505050565b600081519050919050565b600081905092915050565b600061365282613631565b61365c818561363c565b935061366c818560208601612380565b80840191505092915050565b60006136848284613647565b915081905092915050565b7f5472616e736665724661696c0000000000000000000000000000000000000000600082015250565b60006136c5600c8361236f565b91506136d08261368f565b602082019050919050565b600060208201905081810360008301526136f4816136b8565b9050919050565b600060c0820190506137106000830189612737565b61371d602083018861252a565b61372a604083018761350a565b613737606083018661350a565b6137446080830185612737565b61375160a083018461252a565b979650505050505050565b60008060006060848603121561377557613774612416565b5b600061378386828701612bc8565b935050602061379486828701612bc8565b92505060406137a586828701612bc8565b915050925092509256fea26469706673582212202742bb6bab5dd77131972e9e1cfdcae2e87d8b5e53b445085c5a785f32f5462764736f6c63430008110033

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

0000000000000000000000003257e8f0c0d1cf1c4059ef0f783fecd321052e630000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001500000000000000000000000096053685c8478f90e3b09326ebe61f3242c564700000000000000000000000004e6d564092b6f05b63e792ae10ad1a2c1aca21ea0000000000000000000000002d68f19c8b8dc30d938eb313a18a1cc5ae2cb40000000000000000000000000045520d6e23d49e7cd2781c700776012c47560836000000000000000000000000e6f47bdc2fccf6cfa7c546f31c70d90a75e00d9d000000000000000000000000d1ce672e6cebb59c7a8f132892e990eda5102dd700000000000000000000000063d3ad028bbfa4eb1bfa39167e06eee58c2344f6000000000000000000000000c308985626a2f36c746dcf62ac8c38e106bdac1400000000000000000000000005d38908a49e0cff8b72afa2d5c3be920030a6f3000000000000000000000000405d51a6bb32b654d3d085267542c94f1e642d9e000000000000000000000000dfe8c32a45c9448b692e828d028fa42c7a0391c1000000000000000000000000137e378188b3398833c54211467a7e4f99863440000000000000000000000000def1200c802a4a190b059a9601a91371dbce2f79000000000000000000000000f03b107be0b090dcad1439a5dcfbb53f52c45682000000000000000000000000ddde49d201930716ab42c23a507a5cae2405c2380000000000000000000000009a3362d2a04949f111634a2160513b014b62a49500000000000000000000000087c1d981d09dfbffac20bfd328e5aab2b364939e000000000000000000000000b278c98e26be69699503319cdacb1e5aef170370000000000000000000000000f0139d27e94bcc13cc0db2382b6f85b091c0276e000000000000000000000000741705af08d99e3d4879e960ba0a0130a585bc5c000000000000000000000000526a48df8de02ac4bbd1c87333cd59582cfbc0e8

-----Decoded View---------------
Arg [0] : _team_wallet (address): 0x3257E8f0c0D1cF1C4059EF0F783feCd321052e63
Arg [1] : _input (address[]): 0x96053685c8478f90E3b09326EBe61f3242C56470,0x4E6D564092b6F05B63e792AE10AD1a2C1Aca21EA,0x2d68F19C8b8Dc30d938Eb313a18A1Cc5AE2cb400,0x45520d6E23d49e7Cd2781C700776012c47560836,0xE6F47BdC2fCcf6cFA7c546f31c70d90a75e00d9D,0xd1CE672e6cEBb59C7a8F132892e990eDA5102dd7,0x63d3Ad028bbfA4Eb1bFA39167E06eeE58c2344f6,0xc308985626a2f36c746dcf62Ac8c38E106bDAc14,0x05D38908a49e0CFF8B72Afa2d5C3BE920030a6F3,0x405d51A6bb32b654D3D085267542C94F1e642d9e,0xdfE8C32A45c9448B692E828D028Fa42c7a0391c1,0x137E378188B3398833c54211467a7E4f99863440,0xdef1200C802A4A190b059A9601a91371DbCe2f79,0xF03B107be0b090DcaD1439a5dcfbB53F52c45682,0xDDDE49d201930716Ab42C23a507a5cAE2405c238,0x9A3362D2A04949F111634A2160513b014B62a495,0x87c1D981D09DFBFFAc20Bfd328E5AaB2B364939e,0xB278C98e26be69699503319CdACB1E5aEf170370,0xF0139D27e94bCc13CC0DB2382b6F85b091C0276E,0x741705AF08d99e3d4879E960ba0a0130a585bC5c,0x526a48dF8DE02AC4BbD1c87333Cd59582cFbc0E8

-----Encoded View---------------
24 Constructor Arguments found :
Arg [0] : 0000000000000000000000003257e8f0c0d1cf1c4059ef0f783fecd321052e63
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000015
Arg [3] : 00000000000000000000000096053685c8478f90e3b09326ebe61f3242c56470
Arg [4] : 0000000000000000000000004e6d564092b6f05b63e792ae10ad1a2c1aca21ea
Arg [5] : 0000000000000000000000002d68f19c8b8dc30d938eb313a18a1cc5ae2cb400
Arg [6] : 00000000000000000000000045520d6e23d49e7cd2781c700776012c47560836
Arg [7] : 000000000000000000000000e6f47bdc2fccf6cfa7c546f31c70d90a75e00d9d
Arg [8] : 000000000000000000000000d1ce672e6cebb59c7a8f132892e990eda5102dd7
Arg [9] : 00000000000000000000000063d3ad028bbfa4eb1bfa39167e06eee58c2344f6
Arg [10] : 000000000000000000000000c308985626a2f36c746dcf62ac8c38e106bdac14
Arg [11] : 00000000000000000000000005d38908a49e0cff8b72afa2d5c3be920030a6f3
Arg [12] : 000000000000000000000000405d51a6bb32b654d3d085267542c94f1e642d9e
Arg [13] : 000000000000000000000000dfe8c32a45c9448b692e828d028fa42c7a0391c1
Arg [14] : 000000000000000000000000137e378188b3398833c54211467a7e4f99863440
Arg [15] : 000000000000000000000000def1200c802a4a190b059a9601a91371dbce2f79
Arg [16] : 000000000000000000000000f03b107be0b090dcad1439a5dcfbb53f52c45682
Arg [17] : 000000000000000000000000ddde49d201930716ab42c23a507a5cae2405c238
Arg [18] : 0000000000000000000000009a3362d2a04949f111634a2160513b014b62a495
Arg [19] : 00000000000000000000000087c1d981d09dfbffac20bfd328e5aab2b364939e
Arg [20] : 000000000000000000000000b278c98e26be69699503319cdacb1e5aef170370
Arg [21] : 000000000000000000000000f0139d27e94bcc13cc0db2382b6f85b091c0276e
Arg [22] : 000000000000000000000000741705af08d99e3d4879e960ba0a0130a585bc5c
Arg [23] : 000000000000000000000000526a48df8de02ac4bbd1c87333cd59582cfbc0e8


Deployed Bytecode Sourcemap

8139:13018:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17892:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19200:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9094:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18220:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18713:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13760:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18112:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11782:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12704:656;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13546:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8792:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8946:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9434:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8829:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18336:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9304:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3051:103;;;;;;;;;;;;;:::i;:::-;;8899:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8711:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11515:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2403:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9210:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9712:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18000:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10941:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11190:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13368:70;;;;;;;;;;;;;:::i;:::-;;8740:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18487:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9743:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12197:499;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13446:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8994:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8862:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9046:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9147:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19016:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9367:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3309:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9258:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17892:100;17946:13;17979:5;;;;;;;;;;;;;;;;;17972:12;;17892:100;:::o;19200:226::-;19308:4;19325:13;19341:12;:10;:12::i;:::-;19325:28;;19364:32;19373:5;19380:7;19389:6;19364:8;:32::i;:::-;19414:4;19407:11;;;19200:226;;;;:::o;9094:28::-;;;;:::o;18220:108::-;18281:7;8344:2;8408;:15;;;;:::i;:::-;8394:11;:29;;;;:::i;:::-;18301:19;;18220:108;:::o;18713:295::-;18844:4;18861:15;18879:12;:10;:12::i;:::-;18861:30;;18902:38;18918:4;18924:7;18933:6;18902:15;:38::i;:::-;18951:27;18961:4;18967:2;18971:6;18951:9;:27::i;:::-;18996:4;18989:11;;;18713:295;;;;;:::o;13760:181::-;2289:13;:11;:13::i;:::-;13837:7:::1;13824:10;;:20;;;;;;;;;;;;;;;;;;13870:4;13859:15;;:7;:15;;::::0;13855:79:::1;;13907:15;13891:13;:31;;;;13855:79;13760:181:::0;:::o;18112:100::-;18170:5;8344:2;18188:16;;18112:100;:::o;11782:106::-;2289:13;:11;:13::i;:::-;11868:12:::1;11854:11;;:26;;;;;;;;;;;;;;;;;;11782:106:::0;:::o;12704:656::-;2289:13;:11;:13::i;:::-;12832::::1;;12820:9;;:25;;;;:::i;:::-;12802:15;:43;12780:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;12904:28;12935:4;:14;;;12950:9;;;;;;;;;;;12935:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12904:56;;12971:20;12994:45;13006:20;8670:15;12994:45;;:11;:45::i;:::-;12971:68;;13064:12;13054:7;:22;13050:77;;;13103:12;13093:22;;13050:77;13149:15;13137:9;:27;;;;13191:1;13181:7;:11;13177:96;;;13209:52;13225:9;;;;;;;;;;;13244:6;13253:7;13209:15;:52::i;:::-;13177:96;13283:19;13320:9;;;;;;;;;;;13283:47;;13341:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12769:591;;;12704:656:::0;:::o;13546:206::-;2289:13;:11;:13::i;:::-;8554:15:::1;13639:20;;:9;:20;;;;13631:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;13700:7;13687:10;;:20;;;;;;;;;;;;;;;;;;13735:9;13718:14;;:26;;;;;;;;;;;;;;;;;;13546:206:::0;;:::o;8792:30::-;;;;;;;;;;;;;:::o;8946:41::-;;;;;;;;;;;;;:::o;9434:59::-;;;;:::o;8829:26::-;;;;;;;;;;;;;:::o;18336:143::-;18426:7;18453:9;:18;18463:7;18453:18;;;;;;;;;;;;;;;;18446:25;;18336:143;;;:::o;9304:51::-;;;;:::o;3051:103::-;2289:13;:11;:13::i;:::-;3116:30:::1;3143:1;3116:18;:30::i;:::-;3051:103::o:0;8899:40::-;;;;;;;;;;;;;:::o;8711:22::-;;;;;;;;;;;;;:::o;11515:237::-;2289:13;:11;:13::i;:::-;11668:7:::1;11651:14;:24;;;;11699:11;11686:10;;:24;;;;;;;;;;;;;;;;;;11736:8;11721:12;;:23;;;;;;;;;;;;;;;;;;11515:237:::0;;;:::o;2403:87::-;2449:7;2476:6;;;;;;;;;;;2469:13;;2403:87;:::o;9210:41::-;;;;:::o;9712:24::-;;;;;;;;;;;;;:::o;18000:104::-;18056:13;18089:7;;;;;;;;;;;;;;;;;18082:14;;18000:104;:::o;10941:215::-;2289:13;:11;:13::i;:::-;8554:15:::1;11028:19;;:8;:19;;;;:43;;;;;8554:15;11051:20;;:9;:20;;;;11028:43;11020:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11109:8;11099:7;;:18;;;;;;;;;;;;;;;;;;11139:9;11128:8;;:20;;;;;;;;;;;;;;;;;;10941:215:::0;;:::o;11190:317::-;2289:13;:11;:13::i;:::-;8612:14:::1;11296:20;;:7;:20;;:48;;;;;8612:14;11320:24;;:11;:24;;11296:48;11274:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11403:34;8344:2;8408;:15;;;;:::i;:::-;8394:11;:29;;;;:::i;:::-;11429:7;11403:11;:34::i;:::-;11394:6;:43;;;;11461:38;8344:2;8408;:15;;;;:::i;:::-;8394:11;:29;;;;:::i;:::-;11487:11;11461;:38::i;:::-;11448:10;:51;;;;11190:317:::0;;:::o;13368:70::-;2289:13;:11;:13::i;:::-;13418:12:::1;:10;:12::i;:::-;13368:70::o:0;8740:32::-;;;;;;;;;;;;;:::o;18487:218::-;18591:4;18608:13;18624:12;:10;:12::i;:::-;18608:28;;18647;18657:5;18664:2;18668:6;18647:9;:28::i;:::-;18693:4;18686:11;;;18487:218;;;;:::o;9743:31::-;;;;;;;;;;;;;:::o;12197:499::-;2289:13;:11;:13::i;:::-;12314::::1;12330:7;:5;:7::i;:::-;12314:23;;12378:9;12373:305;12397:6;;:13;;12393:1;:17;12373:305;;;12436:12;12451:6;;12458:1;12451:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12436:24;;12525:1;12509:18;;:4;:18;;::::0;12479:127:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12625:37;12641:5;12648:4;12654:7;12625:15;:37::i;:::-;12417:261;12412:3;;;;;;;12373:305;;;;12303:393;12197:499:::0;;;:::o;13446:92::-;2289:13;:11;:13::i;:::-;13523:7:::1;13507:13;;:23;;;;;;;;;;;;;;;;;;13446:92:::0;:::o;8994:45::-;;;;;;;;;;;;;:::o;8862:30::-;;;;;;;;;;;;;:::o;9046:41::-;;;;;;;;;;;;;:::o;9147:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;19016:176::-;19130:7;19157:11;:18;19169:5;19157:18;;;;;;;;;;;;;;;:27;19176:7;19157:27;;;;;;;;;;;;;;;;19150:34;;19016:176;;;;:::o;9367:55::-;;;;:::o;3309:238::-;2289:13;:11;:13::i;:::-;3432:1:::1;3412:22;;:8;:22;;::::0;3390:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3511:28;3530:8;3511:18;:28::i;:::-;3309:238:::0;:::o;9258:24::-;;;;:::o;1087:98::-;1140:7;1167:10;1160:17;;1087:98;:::o;19434:380::-;19587:1;19570:19;;:5;:19;;;19562:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19668:1;19649:21;;:7;:21;;;19641:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19752:6;19722:11;:18;19734:5;19722:18;;;;;;;;;;;;;;;:27;19741:7;19722:27;;;;;;;;;;;;;;;:36;;;;19790:7;19774:32;;19783:5;19774:32;;;19799:6;19774:32;;;;;;:::i;:::-;;;;;;;;19434:380;;;:::o;19822:502::-;19957:24;19984:25;19994:5;20001:7;19984:9;:25::i;:::-;19957:52;;20044:17;20024:16;:37;20020:297;;20124:6;20104:16;:26;;20078:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;20239:51;20248:5;20255:7;20283:6;20264:16;:25;20239:8;:51::i;:::-;20020:297;19946:378;19822:502;;;:::o;13962:1974::-;14067:1;14051:18;;:4;:18;;;14043:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14144:1;14130:16;;:2;:16;;;14122:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14214:1;14205:6;:10;14197:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14335:7;:5;:7::i;:::-;14327:15;;:4;:15;;;:32;;;;14352:7;:5;:7::i;:::-;14346:13;;:2;:13;;;14327:32;:57;;;;14379:4;14363:21;;:4;:21;;;14327:57;14323:144;;;14401:33;14417:4;14423:2;14427:6;14401:15;:33::i;:::-;14449:7;;14323:144;14524:10;;;;;;;;;;;14516:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14571:18;14604:10;14625:9;;;;;;;;;;;14617:17;;:4;:17;;;14604:30;;14652:5;14647:78;;14701:12;:10;:12::i;:::-;14647:78;14797:5;14793:382;;;14824:10;:14;14835:2;14824:14;;;;;;;;;;;;;;;;;;;;;;;;;14819:97;;14872:28;14884:6;14892:7;;;;;;;;;;;14872:28;;:11;:28::i;:::-;14859:41;;14819:97;14793:382;;;14978:10;:16;14989:4;14978:16;;;;;;;;;;;;;;;;;;;;;;;;;14973:191;;15028:120;15062:6;15091:10;;;;;;;;;;;:38;;15121:8;;;;;;;;;;;15091:38;;;15104:14;;;;;;;;;;;15091:38;15028:120;;:11;:120::i;:::-;15015:133;;14973:191;14793:382;15250:10;15240:6;:20;;15232:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15308:10;15298:20;;;;15369:13;;;;;;;;;;;15365:345;;;15444:6;;15434;:16;;15426:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;15525:9;;;;;;;;;;;15519:15;;:2;:15;;;15515:184;;15611:10;;15601:6;15585:9;:13;15595:2;15585:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:36;;15555:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;15515:184;15365:345;15780:1;15767:10;:14;15763:95;;;15798:48;15814:4;15828;15835:10;15798:15;:48::i;:::-;15763:95;15895:33;15911:4;15917:2;15921:6;15895:15;:33::i;:::-;14032:1904;;13962:1974;;;;:::o;2568:132::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2568:132::o;9817:173::-;9919:7;8471:13;9946:36;;9956:8;9947:6;:17;;;;:::i;:::-;9946:36;;;;:::i;:::-;9939:43;;9817:173;;;;:::o;20332:626::-;20461:19;20483:9;:15;20493:4;20483:15;;;;;;;;;;;;;;;;20461:37;;20546:6;20531:11;:21;;20509:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;20686:6;20672:11;:20;20654:9;:15;20664:4;20654:15;;;;;;;;;;;;;;;:38;;;;20889:6;20872:9;:13;20882:2;20872:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;20939:2;20924:26;;20933:4;20924:26;;;20943:6;20924:26;;;;;;:::i;:::-;;;;;;;;20450:508;20332:626;;;:::o;3707:191::-;3781:16;3800:6;;;;;;;;;;;3781:25;;3826:8;3817:6;;:17;;;;;;;;;;;;;;;;;;3881:8;3850:40;;3871:8;3850:40;;;;;;;;;;;;3770:128;3707:191;:::o;15944:436::-;15985:21;16009:24;16027:4;16009:9;:24::i;:::-;15985:48;;16044:13;16077:14;;16060:13;:31;;16044:47;;16108:8;:19;;;;;16121:6;;;;;;;;;;;16120:7;16108:19;:35;;;;;16131:12;;;;;;;;;;;16108:35;16104:269;;;16160:32;16177:14;;16160:16;:32::i;:::-;16207:19;16229:21;16207:43;;16283:7;16269:11;:21;16265:97;;;16311:35;16324:21;16311:12;:35::i;:::-;16265:97;16145:228;16104:269;15974:406;;15944:436::o;16388:784::-;10075:4;10066:6;;:13;;;;;;;;;;;;;;;;;;16462:14:::1;16479:49;16491:7;16517:10;;;;;;;;;;;8471:13;16500:27;;;;:::i;:::-;16479:49;;:11;:49::i;:::-;16462:66;;16539:14;16566:6;16556:7;:16;;;;:::i;:::-;16539:33;;16583:22;16608:21;16583:46;;16642:21;16680:1;16666:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16642:40;;16711:4;16693;16698:1;16693:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;16737:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16727:4;16732:1;16727:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;16770:58;16787:4;16802:15;;;;;;;;;;;16820:7;16770:8;:58::i;:::-;16839:15;;;;;;;;;;;:66;;;16920:6;16941:1;16957:4;16984;17004:15;16839:191;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17041:15;17083:14;17059:21;:38;;;;:::i;:::-;17041:56;;17110:54;17123:6;17131:32;17143:7;17152:10;;;;;;;;;;;17131:32;;:11;:32::i;:::-;17110:12;:54::i;:::-;16451:721;;;;;10111:5:::0;10102:6;;:14;;;;;;;;;;;;;;;;;;16388:784;:::o;17180:174::-;17239:12;17257:11;;;;;;;;;;;:16;;17281:7;17300:1;17290:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17257:46;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17238:65;;;17322:7;17314:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;17227:127;17180:174;:::o;17362:509::-;17506:58;17523:4;17538:15;;;;;;;;;;;17556:7;17506:8;:58::i;:::-;17607:15;;;;;;;;;;;:31;;;17646:9;17679:4;17699:7;17721:1;17764;17807:15;;;;;;;;;;;17837;17607:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17362:509;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:116::-;4493:21;4508:5;4493:21;:::i;:::-;4486:5;4483:32;4473:60;;4529:1;4526;4519:12;4473:60;4423:116;:::o;4545:133::-;4588:5;4626:6;4613:20;4604:29;;4642:30;4666:5;4642:30;:::i;:::-;4545:133;;;;:::o;4684:323::-;4740:6;4789:2;4777:9;4768:7;4764:23;4760:32;4757:119;;;4795:79;;:::i;:::-;4757:119;4915:1;4940:50;4982:7;4973:6;4962:9;4958:22;4940:50;:::i;:::-;4930:60;;4886:114;4684:323;;;;:::o;5013:86::-;5048:7;5088:4;5081:5;5077:16;5066:27;;5013:86;;;:::o;5105:112::-;5188:22;5204:5;5188:22;:::i;:::-;5183:3;5176:35;5105:112;;:::o;5223:214::-;5312:4;5350:2;5339:9;5335:18;5327:26;;5363:67;5427:1;5416:9;5412:17;5403:6;5363:67;:::i;:::-;5223:214;;;;:::o;5443:329::-;5502:6;5551:2;5539:9;5530:7;5526:23;5522:32;5519:119;;;5557:79;;:::i;:::-;5519:119;5677:1;5702:53;5747:7;5738:6;5727:9;5723:22;5702:53;:::i;:::-;5692:63;;5648:117;5443:329;;;;:::o;5778:::-;5837:6;5886:2;5874:9;5865:7;5861:23;5857:32;5854:119;;;5892:79;;:::i;:::-;5854:119;6012:1;6037:53;6082:7;6073:6;6062:9;6058:22;6037:53;:::i;:::-;6027:63;;5983:117;5778:329;;;;:::o;6113:93::-;6149:7;6189:10;6182:5;6178:22;6167:33;;6113:93;;;:::o;6212:120::-;6284:23;6301:5;6284:23;:::i;:::-;6277:5;6274:34;6264:62;;6322:1;6319;6312:12;6264:62;6212:120;:::o;6338:137::-;6383:5;6421:6;6408:20;6399:29;;6437:32;6463:5;6437:32;:::i;:::-;6338:137;;;;:::o;6481:466::-;6545:6;6553;6602:2;6590:9;6581:7;6577:23;6573:32;6570:119;;;6608:79;;:::i;:::-;6570:119;6728:1;6753:50;6795:7;6786:6;6775:9;6771:22;6753:50;:::i;:::-;6743:60;;6699:114;6852:2;6878:52;6922:7;6913:6;6902:9;6898:22;6878:52;:::i;:::-;6868:62;;6823:117;6481:466;;;;;:::o;6953:115::-;7038:23;7055:5;7038:23;:::i;:::-;7033:3;7026:36;6953:115;;:::o;7074:218::-;7165:4;7203:2;7192:9;7188:18;7180:26;;7216:69;7282:1;7271:9;7267:17;7258:6;7216:69;:::i;:::-;7074:218;;;;:::o;7298:118::-;7385:24;7403:5;7385:24;:::i;:::-;7380:3;7373:37;7298:118;;:::o;7422:222::-;7515:4;7553:2;7542:9;7538:18;7530:26;;7566:71;7634:1;7623:9;7619:17;7610:6;7566:71;:::i;:::-;7422:222;;;;:::o;7650:611::-;7723:6;7731;7739;7788:2;7776:9;7767:7;7763:23;7759:32;7756:119;;;7794:79;;:::i;:::-;7756:119;7914:1;7939:53;7984:7;7975:6;7964:9;7960:22;7939:53;:::i;:::-;7929:63;;7885:117;8041:2;8067:52;8111:7;8102:6;8091:9;8087:22;8067:52;:::i;:::-;8057:62;;8012:117;8168:2;8194:50;8236:7;8227:6;8216:9;8212:22;8194:50;:::i;:::-;8184:60;;8139:115;7650:611;;;;;:::o;8267:470::-;8333:6;8341;8390:2;8378:9;8369:7;8365:23;8361:32;8358:119;;;8396:79;;:::i;:::-;8358:119;8516:1;8541:52;8585:7;8576:6;8565:9;8561:22;8541:52;:::i;:::-;8531:62;;8487:116;8642:2;8668:52;8712:7;8703:6;8692:9;8688:22;8668:52;:::i;:::-;8658:62;;8613:117;8267:470;;;;;:::o;8743:474::-;8811:6;8819;8868:2;8856:9;8847:7;8843:23;8839:32;8836:119;;;8874:79;;:::i;:::-;8836:119;8994:1;9019:53;9064:7;9055:6;9044:9;9040:22;9019:53;:::i;:::-;9009:63;;8965:117;9121:2;9147:53;9192:7;9183:6;9172:9;9168:22;9147:53;:::i;:::-;9137:63;;9092:118;8743:474;;;;;:::o;9223:117::-;9332:1;9329;9322:12;9346:117;9455:1;9452;9445:12;9469:117;9578:1;9575;9568:12;9609:568;9682:8;9692:6;9742:3;9735:4;9727:6;9723:17;9719:27;9709:122;;9750:79;;:::i;:::-;9709:122;9863:6;9850:20;9840:30;;9893:18;9885:6;9882:30;9879:117;;;9915:79;;:::i;:::-;9879:117;10029:4;10021:6;10017:17;10005:29;;10083:3;10075:4;10067:6;10063:17;10053:8;10049:32;10046:41;10043:128;;;10090:79;;:::i;:::-;10043:128;9609:568;;;;;:::o;10183:704::-;10278:6;10286;10294;10343:2;10331:9;10322:7;10318:23;10314:32;10311:119;;;10349:79;;:::i;:::-;10311:119;10497:1;10486:9;10482:17;10469:31;10527:18;10519:6;10516:30;10513:117;;;10549:79;;:::i;:::-;10513:117;10662:80;10734:7;10725:6;10714:9;10710:22;10662:80;:::i;:::-;10644:98;;;;10440:312;10791:2;10817:53;10862:7;10853:6;10842:9;10838:22;10817:53;:::i;:::-;10807:63;;10762:118;10183:704;;;;;:::o;10893:474::-;10961:6;10969;11018:2;11006:9;10997:7;10993:23;10989:32;10986:119;;;11024:79;;:::i;:::-;10986:119;11144:1;11169:53;11214:7;11205:6;11194:9;11190:22;11169:53;:::i;:::-;11159:63;;11115:117;11271:2;11297:53;11342:7;11333:6;11322:9;11318:22;11297:53;:::i;:::-;11287:63;;11242:118;10893:474;;;;;:::o;11373:180::-;11421:77;11418:1;11411:88;11518:4;11515:1;11508:15;11542:4;11539:1;11532:15;11559:102;11601:8;11648:5;11645:1;11641:13;11620:34;;11559:102;;;:::o;11667:848::-;11728:5;11735:4;11759:6;11750:15;;11783:5;11774:14;;11797:712;11818:1;11808:8;11805:15;11797:712;;;11913:4;11908:3;11904:14;11898:4;11895:24;11892:50;;;11922:18;;:::i;:::-;11892:50;11972:1;11962:8;11958:16;11955:451;;;12387:4;12380:5;12376:16;12367:25;;11955:451;12437:4;12431;12427:15;12419:23;;12467:32;12490:8;12467:32;:::i;:::-;12455:44;;11797:712;;;11667:848;;;;;;;:::o;12521:1073::-;12575:5;12766:8;12756:40;;12787:1;12778:10;;12789:5;;12756:40;12815:4;12805:36;;12832:1;12823:10;;12834:5;;12805:36;12901:4;12949:1;12944:27;;;;12985:1;12980:191;;;;12894:277;;12944:27;12962:1;12953:10;;12964:5;;;12980:191;13025:3;13015:8;13012:17;13009:43;;;13032:18;;:::i;:::-;13009:43;13081:8;13078:1;13074:16;13065:25;;13116:3;13109:5;13106:14;13103:40;;;13123:18;;:::i;:::-;13103:40;13156:5;;;12894:277;;13280:2;13270:8;13267:16;13261:3;13255:4;13252:13;13248:36;13230:2;13220:8;13217:16;13212:2;13206:4;13203:12;13199:35;13183:111;13180:246;;;13336:8;13330:4;13326:19;13317:28;;13371:3;13364:5;13361:14;13358:40;;;13378:18;;:::i;:::-;13358:40;13411:5;;13180:246;13451:42;13489:3;13479:8;13473:4;13470:1;13451:42;:::i;:::-;13436:57;;;;13525:4;13520:3;13516:14;13509:5;13506:25;13503:51;;;13534:18;;:::i;:::-;13503:51;13583:4;13576:5;13572:16;13563:25;;12521:1073;;;;;;:::o;13600:281::-;13658:5;13682:23;13700:4;13682:23;:::i;:::-;13674:31;;13726:25;13742:8;13726:25;:::i;:::-;13714:37;;13770:104;13807:66;13797:8;13791:4;13770:104;:::i;:::-;13761:113;;13600:281;;;;:::o;13887:410::-;13927:7;13950:20;13968:1;13950:20;:::i;:::-;13945:25;;13984:20;14002:1;13984:20;:::i;:::-;13979:25;;14039:1;14036;14032:9;14061:30;14079:11;14061:30;:::i;:::-;14050:41;;14240:1;14231:7;14227:15;14224:1;14221:22;14201:1;14194:9;14174:83;14151:139;;14270:18;;:::i;:::-;14151:139;13935:362;13887:410;;;;:::o;14303:191::-;14343:3;14362:20;14380:1;14362:20;:::i;:::-;14357:25;;14396:20;14414:1;14396:20;:::i;:::-;14391:25;;14439:1;14436;14432:9;14425:16;;14460:3;14457:1;14454:10;14451:36;;;14467:18;;:::i;:::-;14451:36;14303:191;;;;:::o;14500:170::-;14640:22;14636:1;14628:6;14624:14;14617:46;14500:170;:::o;14676:366::-;14818:3;14839:67;14903:2;14898:3;14839:67;:::i;:::-;14832:74;;14915:93;15004:3;14915:93;:::i;:::-;15033:2;15028:3;15024:12;15017:19;;14676:366;;;:::o;15048:419::-;15214:4;15252:2;15241:9;15237:18;15229:26;;15301:9;15295:4;15291:20;15287:1;15276:9;15272:17;15265:47;15329:131;15455:4;15329:131;:::i;:::-;15321:139;;15048:419;;;:::o;15473:143::-;15530:5;15561:6;15555:13;15546:22;;15577:33;15604:5;15577:33;:::i;:::-;15473:143;;;;:::o;15622:351::-;15692:6;15741:2;15729:9;15720:7;15716:23;15712:32;15709:119;;;15747:79;;:::i;:::-;15709:119;15867:1;15892:64;15948:7;15939:6;15928:9;15924:22;15892:64;:::i;:::-;15882:74;;15838:128;15622:351;;;;:::o;15979:162::-;16119:14;16115:1;16107:6;16103:14;16096:38;15979:162;:::o;16147:366::-;16289:3;16310:67;16374:2;16369:3;16310:67;:::i;:::-;16303:74;;16386:93;16475:3;16386:93;:::i;:::-;16504:2;16499:3;16495:12;16488:19;;16147:366;;;:::o;16519:419::-;16685:4;16723:2;16712:9;16708:18;16700:26;;16772:9;16766:4;16762:20;16758:1;16747:9;16743:17;16736:47;16800:131;16926:4;16800:131;:::i;:::-;16792:139;;16519:419;;;:::o;16944:161::-;17084:13;17080:1;17072:6;17068:14;17061:37;16944:161;:::o;17111:366::-;17253:3;17274:67;17338:2;17333:3;17274:67;:::i;:::-;17267:74;;17350:93;17439:3;17350:93;:::i;:::-;17468:2;17463:3;17459:12;17452:19;;17111:366;;;:::o;17483:419::-;17649:4;17687:2;17676:9;17672:18;17664:26;;17736:9;17730:4;17726:20;17722:1;17711:9;17707:17;17700:47;17764:131;17890:4;17764:131;:::i;:::-;17756:139;;17483:419;;;:::o;17908:180::-;17956:77;17953:1;17946:88;18053:4;18050:1;18043:15;18077:4;18074:1;18067:15;18094:222;18234:34;18230:1;18222:6;18218:14;18211:58;18303:5;18298:2;18290:6;18286:15;18279:30;18094:222;:::o;18322:366::-;18464:3;18485:67;18549:2;18544:3;18485:67;:::i;:::-;18478:74;;18561:93;18650:3;18561:93;:::i;:::-;18679:2;18674:3;18670:12;18663:19;;18322:366;;;:::o;18694:419::-;18860:4;18898:2;18887:9;18883:18;18875:26;;18947:9;18941:4;18937:20;18933:1;18922:9;18918:17;18911:47;18975:131;19101:4;18975:131;:::i;:::-;18967:139;;18694:419;;;:::o;19119:225::-;19259:34;19255:1;19247:6;19243:14;19236:58;19328:8;19323:2;19315:6;19311:15;19304:33;19119:225;:::o;19350:366::-;19492:3;19513:67;19577:2;19572:3;19513:67;:::i;:::-;19506:74;;19589:93;19678:3;19589:93;:::i;:::-;19707:2;19702:3;19698:12;19691:19;;19350:366;;;:::o;19722:419::-;19888:4;19926:2;19915:9;19911:18;19903:26;;19975:9;19969:4;19965:20;19961:1;19950:9;19946:17;19939:47;20003:131;20129:4;20003:131;:::i;:::-;19995:139;;19722:419;;;:::o;20147:223::-;20287:34;20283:1;20275:6;20271:14;20264:58;20356:6;20351:2;20343:6;20339:15;20332:31;20147:223;:::o;20376:366::-;20518:3;20539:67;20603:2;20598:3;20539:67;:::i;:::-;20532:74;;20615:93;20704:3;20615:93;:::i;:::-;20733:2;20728:3;20724:12;20717:19;;20376:366;;;:::o;20748:419::-;20914:4;20952:2;20941:9;20937:18;20929:26;;21001:9;20995:4;20991:20;20987:1;20976:9;20972:17;20965:47;21029:131;21155:4;21029:131;:::i;:::-;21021:139;;20748:419;;;:::o;21173:221::-;21313:34;21309:1;21301:6;21297:14;21290:58;21382:4;21377:2;21369:6;21365:15;21358:29;21173:221;:::o;21400:366::-;21542:3;21563:67;21627:2;21622:3;21563:67;:::i;:::-;21556:74;;21639:93;21728:3;21639:93;:::i;:::-;21757:2;21752:3;21748:12;21741:19;;21400:366;;;:::o;21772:419::-;21938:4;21976:2;21965:9;21961:18;21953:26;;22025:9;22019:4;22015:20;22011:1;22000:9;21996:17;21989:47;22053:131;22179:4;22053:131;:::i;:::-;22045:139;;21772:419;;;:::o;22197:179::-;22337:31;22333:1;22325:6;22321:14;22314:55;22197:179;:::o;22382:366::-;22524:3;22545:67;22609:2;22604:3;22545:67;:::i;:::-;22538:74;;22621:93;22710:3;22621:93;:::i;:::-;22739:2;22734:3;22730:12;22723:19;;22382:366;;;:::o;22754:419::-;22920:4;22958:2;22947:9;22943:18;22935:26;;23007:9;23001:4;22997:20;22993:1;22982:9;22978:17;22971:47;23035:131;23161:4;23035:131;:::i;:::-;23027:139;;22754:419;;;:::o;23179:224::-;23319:34;23315:1;23307:6;23303:14;23296:58;23388:7;23383:2;23375:6;23371:15;23364:32;23179:224;:::o;23409:366::-;23551:3;23572:67;23636:2;23631:3;23572:67;:::i;:::-;23565:74;;23648:93;23737:3;23648:93;:::i;:::-;23766:2;23761:3;23757:12;23750:19;;23409:366;;;:::o;23781:419::-;23947:4;23985:2;23974:9;23970:18;23962:26;;24034:9;24028:4;24024:20;24020:1;24009:9;24005:17;23998:47;24062:131;24188:4;24062:131;:::i;:::-;24054:139;;23781:419;;;:::o;24206:228::-;24346:34;24342:1;24334:6;24330:14;24323:58;24415:11;24410:2;24402:6;24398:15;24391:36;24206:228;:::o;24440:366::-;24582:3;24603:67;24667:2;24662:3;24603:67;:::i;:::-;24596:74;;24679:93;24768:3;24679:93;:::i;:::-;24797:2;24792:3;24788:12;24781:19;;24440:366;;;:::o;24812:419::-;24978:4;25016:2;25005:9;25001:18;24993:26;;25065:9;25059:4;25055:20;25051:1;25040:9;25036:17;25029:47;25093:131;25219:4;25093:131;:::i;:::-;25085:139;;24812:419;;;:::o;25237:169::-;25377:21;25373:1;25365:6;25361:14;25354:45;25237:169;:::o;25412:366::-;25554:3;25575:67;25639:2;25634:3;25575:67;:::i;:::-;25568:74;;25651:93;25740:3;25651:93;:::i;:::-;25769:2;25764:3;25760:12;25753:19;;25412:366;;;:::o;25784:419::-;25950:4;25988:2;25977:9;25973:18;25965:26;;26037:9;26031:4;26027:20;26023:1;26012:9;26008:17;26001:47;26065:131;26191:4;26065:131;:::i;:::-;26057:139;;25784:419;;;:::o;26209:168::-;26349:20;26345:1;26337:6;26333:14;26326:44;26209:168;:::o;26383:366::-;26525:3;26546:67;26610:2;26605:3;26546:67;:::i;:::-;26539:74;;26622:93;26711:3;26622:93;:::i;:::-;26740:2;26735:3;26731:12;26724:19;;26383:366;;;:::o;26755:419::-;26921:4;26959:2;26948:9;26944:18;26936:26;;27008:9;27002:4;26998:20;26994:1;26983:9;26979:17;26972:47;27036:131;27162:4;27036:131;:::i;:::-;27028:139;;26755:419;;;:::o;27180:164::-;27320:16;27316:1;27308:6;27304:14;27297:40;27180:164;:::o;27350:366::-;27492:3;27513:67;27577:2;27572:3;27513:67;:::i;:::-;27506:74;;27589:93;27678:3;27589:93;:::i;:::-;27707:2;27702:3;27698:12;27691:19;;27350:366;;;:::o;27722:419::-;27888:4;27926:2;27915:9;27911:18;27903:26;;27975:9;27969:4;27965:20;27961:1;27950:9;27946:17;27939:47;28003:131;28129:4;28003:131;:::i;:::-;27995:139;;27722:419;;;:::o;28147:168::-;28287:20;28283:1;28275:6;28271:14;28264:44;28147:168;:::o;28321:366::-;28463:3;28484:67;28548:2;28543:3;28484:67;:::i;:::-;28477:74;;28560:93;28649:3;28560:93;:::i;:::-;28678:2;28673:3;28669:12;28662:19;;28321:366;;;:::o;28693:419::-;28859:4;28897:2;28886:9;28882:18;28874:26;;28946:9;28940:4;28936:20;28932:1;28921:9;28917:17;28910:47;28974:131;29100:4;28974:131;:::i;:::-;28966:139;;28693:419;;;:::o;29118:182::-;29258:34;29254:1;29246:6;29242:14;29235:58;29118:182;:::o;29306:366::-;29448:3;29469:67;29533:2;29528:3;29469:67;:::i;:::-;29462:74;;29545:93;29634:3;29545:93;:::i;:::-;29663:2;29658:3;29654:12;29647:19;;29306:366;;;:::o;29678:419::-;29844:4;29882:2;29871:9;29867:18;29859:26;;29931:9;29925:4;29921:20;29917:1;29906:9;29902:17;29895:47;29959:131;30085:4;29959:131;:::i;:::-;29951:139;;29678:419;;;:::o;30103:180::-;30151:77;30148:1;30141:88;30248:4;30245:1;30238:15;30272:4;30269:1;30262:15;30289:185;30329:1;30346:20;30364:1;30346:20;:::i;:::-;30341:25;;30380:20;30398:1;30380:20;:::i;:::-;30375:25;;30419:1;30409:35;;30424:18;;:::i;:::-;30409:35;30466:1;30463;30459:9;30454:14;;30289:185;;;;:::o;30480:225::-;30620:34;30616:1;30608:6;30604:14;30597:58;30689:8;30684:2;30676:6;30672:15;30665:33;30480:225;:::o;30711:366::-;30853:3;30874:67;30938:2;30933:3;30874:67;:::i;:::-;30867:74;;30950:93;31039:3;30950:93;:::i;:::-;31068:2;31063:3;31059:12;31052:19;;30711:366;;;:::o;31083:419::-;31249:4;31287:2;31276:9;31272:18;31264:26;;31336:9;31330:4;31326:20;31322:1;31311:9;31307:17;31300:47;31364:131;31490:4;31364:131;:::i;:::-;31356:139;;31083:419;;;:::o;31508:200::-;31547:4;31567:19;31584:1;31567:19;:::i;:::-;31562:24;;31600:19;31617:1;31600:19;:::i;:::-;31595:24;;31643:1;31640;31636:9;31628:17;;31667:10;31661:4;31658:20;31655:46;;;31681:18;;:::i;:::-;31655:46;31508:200;;;;:::o;31714:194::-;31754:4;31774:20;31792:1;31774:20;:::i;:::-;31769:25;;31808:20;31826:1;31808:20;:::i;:::-;31803:25;;31852:1;31849;31845:9;31837:17;;31876:1;31870:4;31867:11;31864:37;;;31881:18;;:::i;:::-;31864:37;31714:194;;;;:::o;31914:180::-;31962:77;31959:1;31952:88;32059:4;32056:1;32049:15;32083:4;32080:1;32073:15;32100:143;32157:5;32188:6;32182:13;32173:22;;32204:33;32231:5;32204:33;:::i;:::-;32100:143;;;;:::o;32249:351::-;32319:6;32368:2;32356:9;32347:7;32343:23;32339:32;32336:119;;;32374:79;;:::i;:::-;32336:119;32494:1;32519:64;32575:7;32566:6;32555:9;32551:22;32519:64;:::i;:::-;32509:74;;32465:128;32249:351;;;;:::o;32606:85::-;32651:7;32680:5;32669:16;;32606:85;;;:::o;32697:60::-;32725:3;32746:5;32739:12;;32697:60;;;:::o;32763:158::-;32821:9;32854:61;32872:42;32881:32;32907:5;32881:32;:::i;:::-;32872:42;:::i;:::-;32854:61;:::i;:::-;32841:74;;32763:158;;;:::o;32927:147::-;33022:45;33061:5;33022:45;:::i;:::-;33017:3;33010:58;32927:147;;:::o;33080:114::-;33147:6;33181:5;33175:12;33165:22;;33080:114;;;:::o;33200:184::-;33299:11;33333:6;33328:3;33321:19;33373:4;33368:3;33364:14;33349:29;;33200:184;;;;:::o;33390:132::-;33457:4;33480:3;33472:11;;33510:4;33505:3;33501:14;33493:22;;33390:132;;;:::o;33528:108::-;33605:24;33623:5;33605:24;:::i;:::-;33600:3;33593:37;33528:108;;:::o;33642:179::-;33711:10;33732:46;33774:3;33766:6;33732:46;:::i;:::-;33810:4;33805:3;33801:14;33787:28;;33642:179;;;;:::o;33827:113::-;33897:4;33929;33924:3;33920:14;33912:22;;33827:113;;;:::o;33976:732::-;34095:3;34124:54;34172:5;34124:54;:::i;:::-;34194:86;34273:6;34268:3;34194:86;:::i;:::-;34187:93;;34304:56;34354:5;34304:56;:::i;:::-;34383:7;34414:1;34399:284;34424:6;34421:1;34418:13;34399:284;;;34500:6;34494:13;34527:63;34586:3;34571:13;34527:63;:::i;:::-;34520:70;;34613:60;34666:6;34613:60;:::i;:::-;34603:70;;34459:224;34446:1;34443;34439:9;34434:14;;34399:284;;;34403:14;34699:3;34692:10;;34100:608;;;33976:732;;;;:::o;34714:831::-;34977:4;35015:3;35004:9;35000:19;34992:27;;35029:71;35097:1;35086:9;35082:17;35073:6;35029:71;:::i;:::-;35110:80;35186:2;35175:9;35171:18;35162:6;35110:80;:::i;:::-;35237:9;35231:4;35227:20;35222:2;35211:9;35207:18;35200:48;35265:108;35368:4;35359:6;35265:108;:::i;:::-;35257:116;;35383:72;35451:2;35440:9;35436:18;35427:6;35383:72;:::i;:::-;35465:73;35533:3;35522:9;35518:19;35509:6;35465:73;:::i;:::-;34714:831;;;;;;;;:::o;35551:98::-;35602:6;35636:5;35630:12;35620:22;;35551:98;;;:::o;35655:147::-;35756:11;35793:3;35778:18;;35655:147;;;;:::o;35808:386::-;35912:3;35940:38;35972:5;35940:38;:::i;:::-;35994:88;36075:6;36070:3;35994:88;:::i;:::-;35987:95;;36091:65;36149:6;36144:3;36137:4;36130:5;36126:16;36091:65;:::i;:::-;36181:6;36176:3;36172:16;36165:23;;35916:278;35808:386;;;;:::o;36200:271::-;36330:3;36352:93;36441:3;36432:6;36352:93;:::i;:::-;36345:100;;36462:3;36455:10;;36200:271;;;;:::o;36477:162::-;36617:14;36613:1;36605:6;36601:14;36594:38;36477:162;:::o;36645:366::-;36787:3;36808:67;36872:2;36867:3;36808:67;:::i;:::-;36801:74;;36884:93;36973:3;36884:93;:::i;:::-;37002:2;36997:3;36993:12;36986:19;;36645:366;;;:::o;37017:419::-;37183:4;37221:2;37210:9;37206:18;37198:26;;37270:9;37264:4;37260:20;37256:1;37245:9;37241:17;37234:47;37298:131;37424:4;37298:131;:::i;:::-;37290:139;;37017:419;;;:::o;37442:807::-;37691:4;37729:3;37718:9;37714:19;37706:27;;37743:71;37811:1;37800:9;37796:17;37787:6;37743:71;:::i;:::-;37824:72;37892:2;37881:9;37877:18;37868:6;37824:72;:::i;:::-;37906:80;37982:2;37971:9;37967:18;37958:6;37906:80;:::i;:::-;37996;38072:2;38061:9;38057:18;38048:6;37996:80;:::i;:::-;38086:73;38154:3;38143:9;38139:19;38130:6;38086:73;:::i;:::-;38169;38237:3;38226:9;38222:19;38213:6;38169:73;:::i;:::-;37442:807;;;;;;;;;:::o;38255:663::-;38343:6;38351;38359;38408:2;38396:9;38387:7;38383:23;38379:32;38376:119;;;38414:79;;:::i;:::-;38376:119;38534:1;38559:64;38615:7;38606:6;38595:9;38591:22;38559:64;:::i;:::-;38549:74;;38505:128;38672:2;38698:64;38754:7;38745:6;38734:9;38730:22;38698:64;:::i;:::-;38688:74;;38643:129;38811:2;38837:64;38893:7;38884:6;38873:9;38869:22;38837:64;:::i;:::-;38827:74;;38782:129;38255:663;;;;;:::o

Swarm Source

ipfs://2742bb6bab5dd77131972e9e1cfdcae2e87d8b5e53b445085c5a785f32f54627

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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