ETH Price: $3,693.47 (+2.70%)

Token

ERC-20: liquidity.money (LIM)
 

Overview

Max Total Supply

100,000,000 LIM

Holders

698

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
phuongtt.eth
Balance
13,000.000000480073813033 LIM

Value
$0.00
0xD832DC1b9f66F3ef378a9c21BBeFFAAe9469Be2D
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
LiquidiyMoney

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-27
*/

// SPDX-License-Identifier: MIT

/*
Website: https://liquidity.money/
Docs: https://docs.liquidity.money/
Twitter: https://twitter.com/liquiditymoney
Telegram: https://t.me/LiquidityMoney
Announcements: https://t.me/LIMAnnouncements
*/

pragma solidity ^0.8.6;

interface IStaking {
    function updateReward(uint256 _amount) external;

    function init(address _rewardToken, address _stakingToken) external;
}

pragma solidity ^0.8.6;

interface IDividendTracker {
    function LP_Token() external view returns (address);

    function accumulativeDividendOf(address _owner)
        external
        view
        returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function balanceOf(address account) external view returns (uint256);

    function decimals() external view returns (uint8);

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool);

    function distributeLPDividends(uint256 amount) external;

    function dividendOf(address _owner) external view returns (uint256);

    function excludeFromDividends(address account, bool value) external;

    function excludedFromDividends(address) external view returns (bool);

    function getAccount(address account)
        external
        view
        returns (
            address,
            uint256,
            uint256,
            uint256,
            uint256
        );

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool);

    function init() external;

    function lastClaimTimes(address) external view returns (uint256);

    function name() external view returns (string memory);

    function owner() external view returns (address);

    function processAccount(address account) external returns (bool);

    function renounceOwnership() external;

    function setBalance(address account, uint256 newBalance) external;

    function totalDividendsDistributed() external view returns (uint256);

    function totalDividendsWithdrawn() external view returns (uint256);

    function totalSupply() external view returns (uint256);

    function trackerRescueETH20Tokens(address recipient, address tokenAddress)
        external;

    function transfer(address to, uint256 amount) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);

    function transferOwnership(address newOwner) external;

    function updateLP_Token(address _lpToken) external;

    function withdrawDividend() external;

    function withdrawableDividendOf(address _owner)
        external
        view
        returns (uint256);

    function withdrawnDividendOf(address _owner)
        external
        view
        returns (uint256);
}

pragma solidity ^0.8.0;

interface IPair {
    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function token0() external view returns (address);
}

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface IUniswapRouter {
    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
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

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

// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

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

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    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;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

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

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    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);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @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. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}

pragma solidity ^0.8.21;

contract LiquidiyMoney is ERC20, Ownable {
    IUniswapRouter public router;
    address public pair;

    bool private swapping;
    bool public claimEnabled;
    bool public tradingEnabled;

    IDividendTracker public dividendTracker;

    address public marketingWallet;
    IStaking public stakingPool;

    uint256 public swapTokensAtAmount;
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWallet;

    struct Taxes {
        uint256 liquidity;
        uint256 dev;
        uint256 stakingPool;
    }

    Taxes public taxes = Taxes(3, 2, 1);

    uint256 public tax = 6;

    uint256 private _initialTax = 20;
    uint256 private _reduceTaxAt = 25;
    uint256 private _buyCount = 0;
    uint256 private _sellCount = 0;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) private _isExcludedFromMaxWallet;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event GasForProcessingUpdated(
        uint256 indexed newValue,
        uint256 indexed oldValue
    );
    event SendDividends(uint256 tokensSwapped, uint256 amount);

    constructor(address _dividendTracker, address _stakingPool)
        ERC20("liquidity.money", "LIM")
    {
        marketingWallet = _msgSender();

        IUniswapRouter _router = IUniswapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );

        router = _router;
        pair = _pair;

        dividendTracker = IDividendTracker(_dividendTracker);
        dividendTracker.init();

        stakingPool = IStaking(_stakingPool);
        stakingPool.init(address(this), _pair);

        setSwapTokensAtAmount(300000);
        updateMaxWalletAmount(2000000);
        setMaxBuyAndSell(2000000, 2000000);

        _setAutomatedMarketMakerPair(_pair, true);

        dividendTracker.updateLP_Token(pair);

        dividendTracker.excludeFromDividends(address(dividendTracker), true);
        dividendTracker.excludeFromDividends(_stakingPool, true);
        dividendTracker.excludeFromDividends(address(this), true);
        dividendTracker.excludeFromDividends(owner(), true);
        dividendTracker.excludeFromDividends(address(0xdead), true);
        dividendTracker.excludeFromDividends(address(_router), true);

        setExcludeFromMaxWallet(address(_pair), true);
        setExcludeFromMaxWallet(address(this), true);
        setExcludeFromMaxWallet(address(_router), true);
        setExcludeFromMaxWallet(_stakingPool, true);

        setExcludeFromFees(owner(), true);
        setExcludeFromFees(address(this), true);
        setExcludeFromFees(_stakingPool, true);

        _mint(owner(), 100000000 * (10**18));
    }

    receive() external payable {}

    function claim() external {
        require(claimEnabled, "Claim not enabled");
        dividendTracker.processAccount(payable(msg.sender));
    }

    function updateMaxWalletAmount(uint256 newNum) public onlyOwner {
        require(newNum >= 1000000, "Cannot set maxWallet lower than 1%");
        maxWallet = newNum * 10**18;
    }

    function setMaxBuyAndSell(uint256 maxBuy, uint256 maxSell)
        public
        onlyOwner
    {
        require(maxBuy >= 1000000, "Can't set maxbuy lower than 1% ");
        require(maxSell >= 500000, "Can't set maxsell lower than 0.5% ");
        maxBuyAmount = maxBuy * 10**18;
        maxSellAmount = maxSell * 10**18;
    }

    function setSwapTokensAtAmount(uint256 amount) public onlyOwner {
        swapTokensAtAmount = amount * 10**18;
    }

    function setExcludeFromMaxWallet(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedFromMaxWallet[account] = excluded;
    }

    function setExcludeFromFees(address account, bool excluded)
        public
        onlyOwner
    {
        require(
            _isExcludedFromFees[account] != excluded,
            "Account is already the value of 'excluded'"
        );
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function excludeFromDividends(address account, bool value)
        public
        onlyOwner
    {
        dividendTracker.excludeFromDividends(account, value);
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Already enabled");
        tradingEnabled = true;
    }

    function setClaimStatus(bool _status) external onlyOwner {
        claimEnabled = _status;
    }

    function _setAutomatedMarketMakerPair(address newPair, bool value) private {
        require(
            automatedMarketMakerPairs[newPair] != value,
            "Automated market maker pair is already set to that value"
        );
        automatedMarketMakerPairs[newPair] = value;

        if (value) {
            dividendTracker.excludeFromDividends(newPair, true);
        }

        emit SetAutomatedMarketMakerPair(newPair, value);
    }

    function getTotalDividendsDistributed() external view returns (uint256) {
        return dividendTracker.totalDividendsDistributed();
    }

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

    function withdrawableDividendOf(address account)
        public
        view
        returns (uint256)
    {
        return dividendTracker.withdrawableDividendOf(account);
    }

    function dividendTokenBalanceOf(address account)
        public
        view
        returns (uint256)
    {
        return dividendTracker.balanceOf(account);
    }

    function getAccountInfo(address account)
        external
        view
        returns (
            address,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        return dividendTracker.getAccount(account);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (
            !_isExcludedFromFees[from] && !_isExcludedFromFees[to] && !swapping
        ) {
            require(tradingEnabled, "Trading not active");
            if (automatedMarketMakerPairs[to]) {
                require(
                    amount <= maxSellAmount,
                    "You are exceeding maxSellAmount"
                );
                _sellCount++;
            } else if (automatedMarketMakerPairs[from]) {
                require(
                    amount <= maxBuyAmount,
                    "You are exceeding maxBuyAmount"
                );
                _buyCount++;
            }
            if (!_isExcludedFromMaxWallet[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Unable to exceed Max Wallet"
                );
            }
        }

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !swapping &&
            automatedMarketMakerPairs[to] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapAndLiquify(swapTokensAtAmount);

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        if (!automatedMarketMakerPairs[to] && !automatedMarketMakerPairs[from])
            takeFee = false;

        if (takeFee) {
            uint256 feeAmt;
            if (automatedMarketMakerPairs[to]) {
                feeAmt =
                    (amount * (_sellCount > _reduceTaxAt ? tax : _initialTax)) /
                    100;
            } else if (automatedMarketMakerPairs[from]) {
                feeAmt =
                    (amount * (_buyCount > _reduceTaxAt ? tax : _initialTax)) /
                    100;
            }

            amount = amount - feeAmt;
            super._transfer(from, address(this), feeAmt);
        }
        super._transfer(from, to, amount);

        try dividendTracker.setBalance(from, balanceOf(from)) {} catch {}
        try dividendTracker.setBalance(to, balanceOf(to)) {} catch {}
    }

    function swapAndLiquify(uint256 tokens) private {
        uint256 toSwapForLiq = ((tokens * taxes.liquidity) / tax) / 2;
        uint256 tokensToAddLiquidityWith = ((tokens * taxes.liquidity) / tax) /
            2;
        uint256 toSwapForDev = (tokens * taxes.dev) / tax;
        uint256 toStakingPool = (tokens * taxes.stakingPool) / tax;

        super._transfer(address(this), address(stakingPool), toStakingPool);
        try stakingPool.updateReward(toStakingPool) {} catch {}

        swapTokensForETH(toSwapForLiq);

        uint256 currentbalance = address(this).balance;

        if (currentbalance > 0) {
            // Add liquidity to uni
            addLiquidity(tokensToAddLiquidityWith, currentbalance);
        }

        swapTokensForETH(toSwapForDev);

        uint256 EthTaxBalance = address(this).balance;

        // Send ETH to dev
        uint256 devAmt = EthTaxBalance;

        if (devAmt > 0) {
            (bool success, ) = payable(marketingWallet).call{value: devAmt}("");
            require(success, "Failed to send ETH to dev wallet");
        }

        uint256 lpBalance = IERC20(pair).balanceOf(address(this));

        //Send LP to dividends
        uint256 dividends = lpBalance;

        if (dividends > 0) {
            bool success = IERC20(pair).transfer(
                address(dividendTracker),
                dividends
            );
            if (success) {
                dividendTracker.distributeLPDividends(dividends);
                emit SendDividends(tokens, dividends);
            }
        }
    }

    function distributionLiquidity(uint256 amount) public onlyOwner {
        bool success = IERC20(pair).transferFrom(
            msg.sender,
            address(dividendTracker),
            amount
        );
        if (success) {
            dividendTracker.distributeLPDividends(amount);
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);
        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
}
// 1 + 2 + 3 + ⋯ + ∞ = -1/12?

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_dividendTracker","type":"address"},{"internalType":"address","name":"_stakingPool","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"distributionLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dividendTokenBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract IDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setClaimStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"setMaxBuyAndSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingPool","outputs":[{"internalType":"contract IStaking","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"stakingPool","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052604051806060016040528060038152602001600281526020016001815250600f5f820151815f0155602082015181600101556040820151816002015550506006601255601460135560196014555f6015555f60165534801562000065575f80fd5b50604051620060793803806200607983398181016040528101906200008b9190620012b0565b6040518060400160405280600f81526020017f6c69717569646974792e6d6f6e657900000000000000000000000000000000008152506040518060400160405280600381526020017f4c494d0000000000000000000000000000000000000000000000000000000000815250816003908162000108919062001559565b5080600490816200011a919062001559565b5050506200013d6200013162000a5c60201b60201c565b62000a6360201b60201c565b6200014d62000a5c60201b60201c565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021591906200163d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a191906200163d565b6040518363ffffffff1660e01b8152600401620002c09291906200167e565b6020604051808303815f875af1158015620002dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200030391906200163d565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1c7392a6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200042c575f80fd5b505af11580156200043f573d5f803e3d5ffd5b5050505082600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f09a401630836040518363ffffffff1660e01b8152600401620004e19291906200167e565b5f604051808303815f87803b158015620004f9575f80fd5b505af11580156200050c573d5f803e3d5ffd5b5050505062000524620493e062000b2660201b60201c565b62000538621e848062000b5560201b60201c565b6200054d621e84808062000bcd60201b60201c565b6200056081600162000cab60201b60201c565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344b6bd9e60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401620005dd9190620016a9565b5f604051808303815f87803b158015620005f5575f80fd5b505af115801562000608573d5f803e3d5ffd5b5050505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016040518363ffffffff1660e01b81526004016200068c929190620016e0565b5f604051808303815f87803b158015620006a4575f80fd5b505af1158015620006b7573d5f803e3d5ffd5b5050505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a08460016040518363ffffffff1660e01b81526004016200071a929190620016e0565b5f604051808303815f87803b15801562000732575f80fd5b505af115801562000745573d5f803e3d5ffd5b5050505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a03060016040518363ffffffff1660e01b8152600401620007a8929190620016e0565b5f604051808303815f87803b158015620007c0575f80fd5b505af1158015620007d3573d5f803e3d5ffd5b5050505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a06200082462000e7160201b60201c565b60016040518363ffffffff1660e01b815260040162000845929190620016e0565b5f604051808303815f87803b1580156200085d575f80fd5b505af115801562000870573d5f803e3d5ffd5b5050505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a061dead60016040518363ffffffff1660e01b8152600401620008d5929190620016e0565b5f604051808303815f87803b158015620008ed575f80fd5b505af115801562000900573d5f803e3d5ffd5b5050505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a08360016040518363ffffffff1660e01b815260040162000963929190620016e0565b5f604051808303815f87803b1580156200097b575f80fd5b505af11580156200098e573d5f803e3d5ffd5b50505050620009a581600162000e9960201b60201c565b620009b830600162000e9960201b60201c565b620009cb82600162000e9960201b60201c565b620009de83600162000e9960201b60201c565b62000a00620009f262000e7160201b60201c565b600162000f0160201b60201c565b62000a1330600162000f0160201b60201c565b62000a2683600162000f0160201b60201c565b62000a5262000a3a62000e7160201b60201c565b6a52b7d2dcc80cd2e40000006200104b60201b60201c565b5050505062001bad565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000b36620011b060201b60201c565b670de0b6b3a76400008162000b4c919062001738565b600b8190555050565b62000b65620011b060201b60201c565b620f424081101562000bae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ba59062001806565b60405180910390fd5b670de0b6b3a76400008162000bc4919062001738565b600e8190555050565b62000bdd620011b060201b60201c565b620f424082101562000c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c1d9062001874565b60405180910390fd5b6207a12081101562000c6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c669062001908565b60405180910390fd5b670de0b6b3a76400008262000c85919062001738565b600c81905550670de0b6b3a76400008162000ca1919062001738565b600d819055505050565b80151560185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150362000d3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d34906200199c565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550801562000e275760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a08360016040518363ffffffff1660e01b815260040162000df7929190620016e0565b5f604051808303815f87803b15801562000e0f575f80fd5b505af115801562000e22573d5f803e3d5ffd5b505050505b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000ea9620011b060201b60201c565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b62000f11620011b060201b60201c565b80151560175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150362000fa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f9a9062001a30565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200103f919062001a50565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620010bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010b39062001ab9565b60405180910390fd5b620010cf5f83836200124160201b60201c565b8060025f828254620010e2919062001ad9565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001191919062001b24565b60405180910390a3620011ac5f83836200124660201b60201c565b5050565b620011c062000a5c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620011e662000e7160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200123f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012369062001b8d565b60405180910390fd5b565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200127a826200124f565b9050919050565b6200128c816200126e565b811462001297575f80fd5b50565b5f81519050620012aa8162001281565b92915050565b5f8060408385031215620012c957620012c86200124b565b5b5f620012d8858286016200129a565b9250506020620012eb858286016200129a565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200137157607f821691505b6020821081036200138757620013866200132c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620013eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620013ae565b620013f78683620013ae565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620014416200143b62001435846200140f565b62001418565b6200140f565b9050919050565b5f819050919050565b6200145c8362001421565b620014746200146b8262001448565b848454620013ba565b825550505050565b5f90565b6200148a6200147c565b6200149781848462001451565b505050565b5b81811015620014be57620014b25f8262001480565b6001810190506200149d565b5050565b601f8211156200150d57620014d7816200138d565b620014e2846200139f565b81016020851015620014f2578190505b6200150a62001501856200139f565b8301826200149c565b50505b505050565b5f82821c905092915050565b5f6200152f5f198460080262001512565b1980831691505092915050565b5f6200154983836200151e565b9150826002028217905092915050565b6200156482620012f5565b67ffffffffffffffff81111562001580576200157f620012ff565b5b6200158c825462001359565b62001599828285620014c2565b5f60209050601f831160018114620015cf575f8415620015ba578287015190505b620015c685826200153c565b86555062001635565b601f198416620015df866200138d565b5f5b828110156200160857848901518255600182019150602085019450602081019050620015e1565b8683101562001628578489015162001624601f8916826200151e565b8355505b6001600288020188555050505b505050505050565b5f602082840312156200165557620016546200124b565b5b5f62001664848285016200129a565b91505092915050565b62001678816200126e565b82525050565b5f604082019050620016935f8301856200166d565b620016a260208301846200166d565b9392505050565b5f602082019050620016be5f8301846200166d565b92915050565b5f8115159050919050565b620016da81620016c4565b82525050565b5f604082019050620016f55f8301856200166d565b620017046020830184620016cf565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62001744826200140f565b915062001751836200140f565b925082820262001761816200140f565b915082820484148315176200177b576200177a6200170b565b5b5092915050565b5f82825260208201905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f620017ee60228362001782565b9150620017fb8262001792565b604082019050919050565b5f6020820190508181035f8301526200181f81620017e0565b9050919050565b7f43616e277420736574206d6178627579206c6f776572207468616e20312520005f82015250565b5f6200185c601f8362001782565b9150620018698262001826565b602082019050919050565b5f6020820190508181035f8301526200188d816200184e565b9050919050565b7f43616e277420736574206d617873656c6c206c6f776572207468616e20302e355f8201527f2520000000000000000000000000000000000000000000000000000000000000602082015250565b5f620018f060228362001782565b9150620018fd8262001894565b604082019050919050565b5f6020820190508181035f8301526200192181620018e2565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b6572207061697220697320615f8201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b5f6200198460388362001782565b9150620019918262001928565b604082019050919050565b5f6020820190508181035f830152620019b58162001976565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f66205f8201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b5f62001a18602a8362001782565b915062001a2582620019bc565b604082019050919050565b5f6020820190508181035f83015262001a498162001a0a565b9050919050565b5f60208201905062001a655f830184620016cf565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001aa1601f8362001782565b915062001aae8262001a6b565b602082019050919050565b5f6020820190508181035f83015262001ad28162001a93565b9050919050565b5f62001ae5826200140f565b915062001af2836200140f565b925082820190508082111562001b0d5762001b0c6200170b565b5b92915050565b62001b1e816200140f565b82525050565b5f60208201905062001b395f83018462001b13565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62001b7560208362001782565b915062001b828262001b3f565b602082019050919050565b5f6020820190508181035f83015262001ba68162001b67565b9050919050565b6144be8062001bbb5f395ff3fe60806040526004361061025f575f3560e01c806379b447bd11610143578063a8b9d240116100b5578063d63cad2211610079578063d63cad22146108fe578063dd62ed3e14610926578063e2f4560514610962578063f2fde38b1461098c578063f887ea40146109b4578063f8b45b05146109de57610266565b8063a8b9d240146107fa578063a9059cbb14610836578063afa4f3b214610872578063b62496f51461089a578063c18bc195146108d657610266565b8063929f136011610107578063929f1360146106f057806395d89b411461071857806399c8d55614610742578063a457c2d71461076c578063a6ca5d24146107a8578063a8aa1b31146107d057610266565b806379b447bd1461061e5780637b510fe81461064657806388e765ff146106865780638a8c523c146106b05780638da5cb5b146106c657610266565b806339509351116101dc57806366d602ae116101a057806366d602ae146105105780636843cd841461053a57806370a0823114610576578063715018a6146105b2578063728f8eea146105c857806375f0a874146105f457610266565b806339509351146104305780634ada218b1461046c5780634e71d92d146104965780634fbee193146104ac578063654f97a3146104e857610266565b806323b872dd1161022357806323b872dd1461034c5780632866ed21146103885780632c1f5216146103b257806330bb4cff146103dc578063313ce5671461040657610266565b80630483f7a01461026a57806306fdde0314610292578063095ea7b3146102bc5780630c56ae3b146102f857806318160ddd1461032257610266565b3661026657005b5f80fd5b348015610275575f80fd5b50610290600480360381019061028b9190612fb0565b610a08565b005b34801561029d575f80fd5b506102a6610a9d565b6040516102b39190613078565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd91906130cb565b610b2d565b6040516102ef9190613118565b60405180910390f35b348015610303575f80fd5b5061030c610b4f565b604051610319919061318c565b60405180910390f35b34801561032d575f80fd5b50610336610b74565b60405161034391906131b4565b60405180910390f35b348015610357575f80fd5b50610372600480360381019061036d91906131cd565b610b7d565b60405161037f9190613118565b60405180910390f35b348015610393575f80fd5b5061039c610bab565b6040516103a99190613118565b60405180910390f35b3480156103bd575f80fd5b506103c6610bbe565b6040516103d3919061323d565b60405180910390f35b3480156103e7575f80fd5b506103f0610be3565b6040516103fd91906131b4565b60405180910390f35b348015610411575f80fd5b5061041a610c77565b6040516104279190613271565b60405180910390f35b34801561043b575f80fd5b50610456600480360381019061045191906130cb565b610c7f565b6040516104639190613118565b60405180910390f35b348015610477575f80fd5b50610480610cb5565b60405161048d9190613118565b60405180910390f35b3480156104a1575f80fd5b506104aa610cc8565b005b3480156104b7575f80fd5b506104d260048036038101906104cd919061328a565b610db4565b6040516104df9190613118565b60405180910390f35b3480156104f3575f80fd5b5061050e600480360381019061050991906132b5565b610e06565b005b34801561051b575f80fd5b50610524610e2b565b60405161053191906131b4565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b919061328a565b610e31565b60405161056d91906131b4565b60405180910390f35b348015610581575f80fd5b5061059c6004803603810190610597919061328a565b610ed2565b6040516105a991906131b4565b60405180910390f35b3480156105bd575f80fd5b506105c6610f17565b005b3480156105d3575f80fd5b506105dc610f2a565b6040516105eb939291906132e0565b60405180910390f35b3480156105ff575f80fd5b50610608610f41565b6040516106159190613324565b60405180910390f35b348015610629575f80fd5b50610644600480360381019061063f919061333d565b610f66565b005b348015610651575f80fd5b5061066c6004803603810190610667919061328a565b611032565b60405161067d95949392919061337b565b60405180910390f35b348015610691575f80fd5b5061069a6110e3565b6040516106a791906131b4565b60405180910390f35b3480156106bb575f80fd5b506106c46110e9565b005b3480156106d1575f80fd5b506106da61115e565b6040516106e79190613324565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612fb0565b611186565b005b348015610723575f80fd5b5061072c6111e6565b6040516107399190613078565b60405180910390f35b34801561074d575f80fd5b50610756611276565b60405161076391906131b4565b60405180910390f35b348015610777575f80fd5b50610792600480360381019061078d91906130cb565b61127c565b60405161079f9190613118565b60405180910390f35b3480156107b3575f80fd5b506107ce60048036038101906107c991906133cc565b6112f1565b005b3480156107db575f80fd5b506107e461144d565b6040516107f19190613324565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b919061328a565b611472565b60405161082d91906131b4565b60405180910390f35b348015610841575f80fd5b5061085c600480360381019061085791906130cb565b611513565b6040516108699190613118565b60405180910390f35b34801561087d575f80fd5b50610898600480360381019061089391906133cc565b611535565b005b3480156108a5575f80fd5b506108c060048036038101906108bb919061328a565b61155a565b6040516108cd9190613118565b60405180910390f35b3480156108e1575f80fd5b506108fc60048036038101906108f791906133cc565b611577565b005b348015610909575f80fd5b50610924600480360381019061091f9190612fb0565b6115e2565b005b348015610931575f80fd5b5061094c600480360381019061094791906133f7565b61171f565b60405161095991906131b4565b60405180910390f35b34801561096d575f80fd5b506109766117a1565b60405161098391906131b4565b60405180910390f35b348015610997575f80fd5b506109b260048036038101906109ad919061328a565b6117a7565b005b3480156109bf575f80fd5b506109c8611829565b6040516109d59190613455565b60405180910390f35b3480156109e9575f80fd5b506109f261184e565b6040516109ff91906131b4565b60405180910390f35b610a10611854565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a083836040518363ffffffff1660e01b8152600401610a6c92919061346e565b5f604051808303815f87803b158015610a83575f80fd5b505af1158015610a95573d5f803e3d5ffd5b505050505050565b606060038054610aac906134c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad8906134c2565b8015610b235780601f10610afa57610100808354040283529160200191610b23565b820191905f5260205f20905b815481529060010190602001808311610b0657829003601f168201915b5050505050905090565b5f80610b376118d2565b9050610b448185856118d9565b600191505092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f80610b876118d2565b9050610b94858285611a9c565b610b9f858585611b27565b60019150509392505050565b600760159054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385a6b3ae6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c729190613506565b905090565b5f6012905090565b5f80610c896118d2565b9050610caa818585610c9b858961171f565b610ca5919061355e565b6118d9565b600191505092915050565b600760169054906101000a900460ff1681565b600760159054906101000a900460ff16610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e906135db565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663807ab4f7336040518263ffffffff1660e01b8152600401610d719190613619565b6020604051808303815f875af1158015610d8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db19190613646565b50565b5f60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610e0e611854565b80600760156101000a81548160ff02191690831515021790555050565b600d5481565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610e8c9190613324565b602060405180830381865afa158015610ea7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecb9190613506565b9050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f1f611854565b610f285f61244b565b565b600f805f0154908060010154908060020154905083565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f6e611854565b620f4240821015610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab906136bb565b60405180910390fd5b6207a120811015610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190613749565b60405180910390fd5b670de0b6b3a76400008261100e9190613767565b600c81905550670de0b6b3a7640000816110289190613767565b600d819055505050565b5f805f805f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbcbc0f1876040518263ffffffff1660e01b81526004016110919190613324565b60a060405180830381865afa1580156110ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d091906137bc565b9450945094509450945091939590929450565b600c5481565b6110f1611854565b600760169054906101000a900460ff1615611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111389061387d565b60405180910390fd5b6001600760166101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61118e611854565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6060600480546111f5906134c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611221906134c2565b801561126c5780601f106112435761010080835404028352916020019161126c565b820191905f5260205f20905b81548152906001019060200180831161124f57829003601f168201915b5050505050905090565b60125481565b5f806112866118d2565b90505f611293828661171f565b9050838110156112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061390b565b60405180910390fd5b6112e582868684036118d9565b60019250505092915050565b6112f9611854565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3360085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b815260040161137993929190613929565b6020604051808303815f875af1158015611395573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b99190613646565b905080156114495760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ede6ad9c836040518263ffffffff1660e01b815260040161141b91906131b4565b5f604051808303815f87803b158015611432575f80fd5b505af1158015611444573d5f803e3d5ffd5b505050505b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a8b9d240836040518263ffffffff1660e01b81526004016114cd9190613324565b602060405180830381865afa1580156114e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150c9190613506565b9050919050565b5f8061151d6118d2565b905061152a818585611b27565b600191505092915050565b61153d611854565b670de0b6b3a7640000816115519190613767565b600b8190555050565b6018602052805f5260405f205f915054906101000a900460ff1681565b61157f611854565b620f42408110156115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc906139ce565b60405180910390fd5b670de0b6b3a7640000816115d99190613767565b600e8190555050565b6115ea611854565b80151560175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167090613a5c565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117139190613118565b60405180910390a25050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b6117af611854565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181490613aea565b60405180910390fd5b6118268161244b565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b61185c6118d2565b73ffffffffffffffffffffffffffffffffffffffff1661187a61115e565b73ffffffffffffffffffffffffffffffffffffffff16146118d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c790613b52565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90613be0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613c6e565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a8f91906131b4565b60405180910390a3505050565b5f611aa7848461171f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b215781811015611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a90613cd6565b60405180910390fd5b611b2084848484036118d9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8c90613d64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfa90613df2565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ca1575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cba5750600760149054906101000a900460ff16155b15611f1357600760169054906101000a900460ff16611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590613e5a565b60405180910390fd5b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611dbe57600d54811115611da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9990613ec2565b60405180910390fd5b60165f815480929190611db490613ee0565b9190505550611e6b565b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611e6a57600c54811115611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990613f71565b60405180910390fd5b60155f815480929190611e6490613ee0565b91905055505b5b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611f1257600e54611ec583610ed2565b82611ed0919061355e565b1115611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613fd9565b60405180910390fd5b5b5b5f8103611f2a57611f2583835f61250e565b612446565b5f611f3430610ed2565b90505f600b548210159050808015611f595750600760149054906101000a900460ff16155b8015611fab575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611ffe575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612051575060175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612097576001600760146101000a81548160ff02191690831515021790555061207c600b5461277a565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612146575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561214f575f90505b60185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156121ed575060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121f6575f90505b801561231d575f60185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156122815760646014546016541161226157601354612265565b6012545b866122709190613767565b61227a9190614024565b9050612302565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612301576064601454601554116122e5576013546122e9565b6012545b866122f49190613767565b6122fe9190614024565b90505b5b808561230e9190614054565b945061231b87308361250e565b505b61232886868661250e565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e30443bc8761236f89610ed2565b6040518363ffffffff1660e01b815260040161238c929190614087565b5f604051808303815f87803b1580156123a3575f80fd5b505af19250505080156123b4575060015b5060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e30443bc866123fc88610ed2565b6040518363ffffffff1660e01b8152600401612419929190614087565b5f604051808303815f87803b158015612430575f80fd5b505af1925050508015612441575060015b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361257c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257390613d64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e190613df2565b60405180910390fd5b6125f5838383612c04565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266f9061411e565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161276191906131b4565b60405180910390a3612774848484612c09565b50505050565b5f6002601254600f5f0154846127909190613767565b61279a9190614024565b6127a49190614024565b90505f6002601254600f5f0154856127bc9190613767565b6127c69190614024565b6127d09190614024565b90505f601254600f60010154856127e79190613767565b6127f19190614024565b90505f601254600f60020154866128089190613767565b6128129190614024565b905061284030600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361250e565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663425c8abd826040518263ffffffff1660e01b815260040161289a91906131b4565b5f604051808303815f87803b1580156128b1575f80fd5b505af19250505080156128c2575060015b506128cc84612c0e565b5f4790505f8111156128e3576128e28482612e44565b5b6128ec83612c0e565b5f4790505f8190505f8111156129c7575f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161294290614169565b5f6040518083038185875af1925050503d805f811461297c576040519150601f19603f3d011682016040523d82523d5f602084013e612981565b606091505b50509050806129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc906141c7565b60405180910390fd5b505b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a229190613324565b602060405180830381865afa158015612a3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a619190613506565b90505f8190505f811115612bf8575f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612aed929190614087565b6020604051808303815f875af1158015612b09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b2d9190613646565b90508015612bf65760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ede6ad9c836040518263ffffffff1660e01b8152600401612b8f91906131b4565b5f604051808303815f87803b158015612ba6575f80fd5b505af1158015612bb8573d5f803e3d5ffd5b505050507f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc38b83604051612bed9291906141e5565b60405180910390a15b505b50505050505050505050565b505050565b505050565b5f600267ffffffffffffffff811115612c2a57612c2961420c565b5b604051908082528060200260200182016040528015612c585781602001602082028036833780820191505090505b50905030815f81518110612c6f57612c6e614239565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d379190614266565b81600181518110612d4b57612d4a614239565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612db13060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118d9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612e13959493929190614381565b5f604051808303815f87803b158015612e2a575f80fd5b505af1158015612e3c573d5f803e3d5ffd5b505050505050565b612e703060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118d9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401612ed5969594939291906143d9565b60606040518083038185885af1158015612ef1573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612f169190614438565b5050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f4a82612f21565b9050919050565b612f5a81612f40565b8114612f64575f80fd5b50565b5f81359050612f7581612f51565b92915050565b5f8115159050919050565b612f8f81612f7b565b8114612f99575f80fd5b50565b5f81359050612faa81612f86565b92915050565b5f8060408385031215612fc657612fc5612f1d565b5b5f612fd385828601612f67565b9250506020612fe485828601612f9c565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561302557808201518184015260208101905061300a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61304a82612fee565b6130548185612ff8565b9350613064818560208601613008565b61306d81613030565b840191505092915050565b5f6020820190508181035f8301526130908184613040565b905092915050565b5f819050919050565b6130aa81613098565b81146130b4575f80fd5b50565b5f813590506130c5816130a1565b92915050565b5f80604083850312156130e1576130e0612f1d565b5b5f6130ee85828601612f67565b92505060206130ff858286016130b7565b9150509250929050565b61311281612f7b565b82525050565b5f60208201905061312b5f830184613109565b92915050565b5f819050919050565b5f61315461314f61314a84612f21565b613131565b612f21565b9050919050565b5f6131658261313a565b9050919050565b5f6131768261315b565b9050919050565b6131868161316c565b82525050565b5f60208201905061319f5f83018461317d565b92915050565b6131ae81613098565b82525050565b5f6020820190506131c75f8301846131a5565b92915050565b5f805f606084860312156131e4576131e3612f1d565b5b5f6131f186828701612f67565b935050602061320286828701612f67565b9250506040613213868287016130b7565b9150509250925092565b5f6132278261315b565b9050919050565b6132378161321d565b82525050565b5f6020820190506132505f83018461322e565b92915050565b5f60ff82169050919050565b61326b81613256565b82525050565b5f6020820190506132845f830184613262565b92915050565b5f6020828403121561329f5761329e612f1d565b5b5f6132ac84828501612f67565b91505092915050565b5f602082840312156132ca576132c9612f1d565b5b5f6132d784828501612f9c565b91505092915050565b5f6060820190506132f35f8301866131a5565b61330060208301856131a5565b61330d60408301846131a5565b949350505050565b61331e81612f40565b82525050565b5f6020820190506133375f830184613315565b92915050565b5f806040838503121561335357613352612f1d565b5b5f613360858286016130b7565b9250506020613371858286016130b7565b9150509250929050565b5f60a08201905061338e5f830188613315565b61339b60208301876131a5565b6133a860408301866131a5565b6133b560608301856131a5565b6133c260808301846131a5565b9695505050505050565b5f602082840312156133e1576133e0612f1d565b5b5f6133ee848285016130b7565b91505092915050565b5f806040838503121561340d5761340c612f1d565b5b5f61341a85828601612f67565b925050602061342b85828601612f67565b9150509250929050565b5f61343f8261315b565b9050919050565b61344f81613435565b82525050565b5f6020820190506134685f830184613446565b92915050565b5f6040820190506134815f830185613315565b61348e6020830184613109565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806134d957607f821691505b6020821081036134ec576134eb613495565b5b50919050565b5f81519050613500816130a1565b92915050565b5f6020828403121561351b5761351a612f1d565b5b5f613528848285016134f2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61356882613098565b915061357383613098565b925082820190508082111561358b5761358a613531565b5b92915050565b7f436c61696d206e6f7420656e61626c65640000000000000000000000000000005f82015250565b5f6135c5601183612ff8565b91506135d082613591565b602082019050919050565b5f6020820190508181035f8301526135f2816135b9565b9050919050565b5f6136038261315b565b9050919050565b613613816135f9565b82525050565b5f60208201905061362c5f83018461360a565b92915050565b5f8151905061364081612f86565b92915050565b5f6020828403121561365b5761365a612f1d565b5b5f61366884828501613632565b91505092915050565b7f43616e277420736574206d6178627579206c6f776572207468616e20312520005f82015250565b5f6136a5601f83612ff8565b91506136b082613671565b602082019050919050565b5f6020820190508181035f8301526136d281613699565b9050919050565b7f43616e277420736574206d617873656c6c206c6f776572207468616e20302e355f8201527f2520000000000000000000000000000000000000000000000000000000000000602082015250565b5f613733602283612ff8565b915061373e826136d9565b604082019050919050565b5f6020820190508181035f83015261376081613727565b9050919050565b5f61377182613098565b915061377c83613098565b925082820261378a81613098565b915082820484148315176137a1576137a0613531565b5b5092915050565b5f815190506137b681612f51565b92915050565b5f805f805f60a086880312156137d5576137d4612f1d565b5b5f6137e2888289016137a8565b95505060206137f3888289016134f2565b9450506040613804888289016134f2565b9350506060613815888289016134f2565b9250506080613826888289016134f2565b9150509295509295909350565b7f416c726561647920656e61626c656400000000000000000000000000000000005f82015250565b5f613867600f83612ff8565b915061387282613833565b602082019050919050565b5f6020820190508181035f8301526138948161385b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6138f5602583612ff8565b91506139008261389b565b604082019050919050565b5f6020820190508181035f830152613922816138e9565b9050919050565b5f60608201905061393c5f830186613315565b6139496020830185613315565b61395660408301846131a5565b949350505050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f6139b8602283612ff8565b91506139c38261395e565b604082019050919050565b5f6020820190508181035f8301526139e5816139ac565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f66205f8201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b5f613a46602a83612ff8565b9150613a51826139ec565b604082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613ad4602683612ff8565b9150613adf82613a7a565b604082019050919050565b5f6020820190508181035f830152613b0181613ac8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613b3c602083612ff8565b9150613b4782613b08565b602082019050919050565b5f6020820190508181035f830152613b6981613b30565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613bca602483612ff8565b9150613bd582613b70565b604082019050919050565b5f6020820190508181035f830152613bf781613bbe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c58602283612ff8565b9150613c6382613bfe565b604082019050919050565b5f6020820190508181035f830152613c8581613c4c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613cc0601d83612ff8565b9150613ccb82613c8c565b602082019050919050565b5f6020820190508181035f830152613ced81613cb4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d4e602583612ff8565b9150613d5982613cf4565b604082019050919050565b5f6020820190508181035f830152613d7b81613d42565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613ddc602383612ff8565b9150613de782613d82565b604082019050919050565b5f6020820190508181035f830152613e0981613dd0565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f613e44601283612ff8565b9150613e4f82613e10565b602082019050919050565b5f6020820190508181035f830152613e7181613e38565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c416d6f756e74005f82015250565b5f613eac601f83612ff8565b9150613eb782613e78565b602082019050919050565b5f6020820190508181035f830152613ed981613ea0565b9050919050565b5f613eea82613098565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f1c57613f1b613531565b5b600182019050919050565b7f596f752061726520657863656564696e67206d6178427579416d6f756e7400005f82015250565b5f613f5b601e83612ff8565b9150613f6682613f27565b602082019050919050565b5f6020820190508181035f830152613f8881613f4f565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c657400000000005f82015250565b5f613fc3601b83612ff8565b9150613fce82613f8f565b602082019050919050565b5f6020820190508181035f830152613ff081613fb7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61402e82613098565b915061403983613098565b92508261404957614048613ff7565b5b828204905092915050565b5f61405e82613098565b915061406983613098565b925082820390508181111561408157614080613531565b5b92915050565b5f60408201905061409a5f830185613315565b6140a760208301846131a5565b9392505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614108602683612ff8565b9150614113826140ae565b604082019050919050565b5f6020820190508181035f830152614135816140fc565b9050919050565b5f81905092915050565b50565b5f6141545f8361413c565b915061415f82614146565b5f82019050919050565b5f61417382614149565b9150819050919050565b7f4661696c656420746f2073656e642045544820746f206465762077616c6c65745f82015250565b5f6141b1602083612ff8565b91506141bc8261417d565b602082019050919050565b5f6020820190508181035f8301526141de816141a5565b9050919050565b5f6040820190506141f85f8301856131a5565b61420560208301846131a5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561427b5761427a612f1d565b5b5f614288848285016137a8565b91505092915050565b5f819050919050565b5f6142b46142af6142aa84614291565b613131565b613098565b9050919050565b6142c48161429a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6142fc81612f40565b82525050565b5f61430d83836142f3565b60208301905092915050565b5f602082019050919050565b5f61432f826142ca565b61433981856142d4565b9350614344836142e4565b805f5b8381101561437457815161435b8882614302565b975061436683614319565b925050600181019050614347565b5085935050505092915050565b5f60a0820190506143945f8301886131a5565b6143a160208301876142bb565b81810360408301526143b38186614325565b90506143c26060830185613315565b6143cf60808301846131a5565b9695505050505050565b5f60c0820190506143ec5f830189613315565b6143f960208301886131a5565b61440660408301876142bb565b61441360608301866142bb565b6144206080830185613315565b61442d60a08301846131a5565b979650505050505050565b5f805f6060848603121561444f5761444e612f1d565b5b5f61445c868287016134f2565b935050602061446d868287016134f2565b925050604061447e868287016134f2565b915050925092509256fea264697066735822122001e5daa08200efe4a66bb0ff4013ff5ca7d2063d18ef3b83520d650762ff057e64736f6c6343000815003300000000000000000000000078d73a8c9142029197f88790f1fdf82c1ba1b296000000000000000000000000921e1df59122eb3ce31a4a219f5c2d7eebac5de1

Deployed Bytecode

0x60806040526004361061025f575f3560e01c806379b447bd11610143578063a8b9d240116100b5578063d63cad2211610079578063d63cad22146108fe578063dd62ed3e14610926578063e2f4560514610962578063f2fde38b1461098c578063f887ea40146109b4578063f8b45b05146109de57610266565b8063a8b9d240146107fa578063a9059cbb14610836578063afa4f3b214610872578063b62496f51461089a578063c18bc195146108d657610266565b8063929f136011610107578063929f1360146106f057806395d89b411461071857806399c8d55614610742578063a457c2d71461076c578063a6ca5d24146107a8578063a8aa1b31146107d057610266565b806379b447bd1461061e5780637b510fe81461064657806388e765ff146106865780638a8c523c146106b05780638da5cb5b146106c657610266565b806339509351116101dc57806366d602ae116101a057806366d602ae146105105780636843cd841461053a57806370a0823114610576578063715018a6146105b2578063728f8eea146105c857806375f0a874146105f457610266565b806339509351146104305780634ada218b1461046c5780634e71d92d146104965780634fbee193146104ac578063654f97a3146104e857610266565b806323b872dd1161022357806323b872dd1461034c5780632866ed21146103885780632c1f5216146103b257806330bb4cff146103dc578063313ce5671461040657610266565b80630483f7a01461026a57806306fdde0314610292578063095ea7b3146102bc5780630c56ae3b146102f857806318160ddd1461032257610266565b3661026657005b5f80fd5b348015610275575f80fd5b50610290600480360381019061028b9190612fb0565b610a08565b005b34801561029d575f80fd5b506102a6610a9d565b6040516102b39190613078565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd91906130cb565b610b2d565b6040516102ef9190613118565b60405180910390f35b348015610303575f80fd5b5061030c610b4f565b604051610319919061318c565b60405180910390f35b34801561032d575f80fd5b50610336610b74565b60405161034391906131b4565b60405180910390f35b348015610357575f80fd5b50610372600480360381019061036d91906131cd565b610b7d565b60405161037f9190613118565b60405180910390f35b348015610393575f80fd5b5061039c610bab565b6040516103a99190613118565b60405180910390f35b3480156103bd575f80fd5b506103c6610bbe565b6040516103d3919061323d565b60405180910390f35b3480156103e7575f80fd5b506103f0610be3565b6040516103fd91906131b4565b60405180910390f35b348015610411575f80fd5b5061041a610c77565b6040516104279190613271565b60405180910390f35b34801561043b575f80fd5b50610456600480360381019061045191906130cb565b610c7f565b6040516104639190613118565b60405180910390f35b348015610477575f80fd5b50610480610cb5565b60405161048d9190613118565b60405180910390f35b3480156104a1575f80fd5b506104aa610cc8565b005b3480156104b7575f80fd5b506104d260048036038101906104cd919061328a565b610db4565b6040516104df9190613118565b60405180910390f35b3480156104f3575f80fd5b5061050e600480360381019061050991906132b5565b610e06565b005b34801561051b575f80fd5b50610524610e2b565b60405161053191906131b4565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b919061328a565b610e31565b60405161056d91906131b4565b60405180910390f35b348015610581575f80fd5b5061059c6004803603810190610597919061328a565b610ed2565b6040516105a991906131b4565b60405180910390f35b3480156105bd575f80fd5b506105c6610f17565b005b3480156105d3575f80fd5b506105dc610f2a565b6040516105eb939291906132e0565b60405180910390f35b3480156105ff575f80fd5b50610608610f41565b6040516106159190613324565b60405180910390f35b348015610629575f80fd5b50610644600480360381019061063f919061333d565b610f66565b005b348015610651575f80fd5b5061066c6004803603810190610667919061328a565b611032565b60405161067d95949392919061337b565b60405180910390f35b348015610691575f80fd5b5061069a6110e3565b6040516106a791906131b4565b60405180910390f35b3480156106bb575f80fd5b506106c46110e9565b005b3480156106d1575f80fd5b506106da61115e565b6040516106e79190613324565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612fb0565b611186565b005b348015610723575f80fd5b5061072c6111e6565b6040516107399190613078565b60405180910390f35b34801561074d575f80fd5b50610756611276565b60405161076391906131b4565b60405180910390f35b348015610777575f80fd5b50610792600480360381019061078d91906130cb565b61127c565b60405161079f9190613118565b60405180910390f35b3480156107b3575f80fd5b506107ce60048036038101906107c991906133cc565b6112f1565b005b3480156107db575f80fd5b506107e461144d565b6040516107f19190613324565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b919061328a565b611472565b60405161082d91906131b4565b60405180910390f35b348015610841575f80fd5b5061085c600480360381019061085791906130cb565b611513565b6040516108699190613118565b60405180910390f35b34801561087d575f80fd5b50610898600480360381019061089391906133cc565b611535565b005b3480156108a5575f80fd5b506108c060048036038101906108bb919061328a565b61155a565b6040516108cd9190613118565b60405180910390f35b3480156108e1575f80fd5b506108fc60048036038101906108f791906133cc565b611577565b005b348015610909575f80fd5b50610924600480360381019061091f9190612fb0565b6115e2565b005b348015610931575f80fd5b5061094c600480360381019061094791906133f7565b61171f565b60405161095991906131b4565b60405180910390f35b34801561096d575f80fd5b506109766117a1565b60405161098391906131b4565b60405180910390f35b348015610997575f80fd5b506109b260048036038101906109ad919061328a565b6117a7565b005b3480156109bf575f80fd5b506109c8611829565b6040516109d59190613455565b60405180910390f35b3480156109e9575f80fd5b506109f261184e565b6040516109ff91906131b4565b60405180910390f35b610a10611854565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a083836040518363ffffffff1660e01b8152600401610a6c92919061346e565b5f604051808303815f87803b158015610a83575f80fd5b505af1158015610a95573d5f803e3d5ffd5b505050505050565b606060038054610aac906134c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad8906134c2565b8015610b235780601f10610afa57610100808354040283529160200191610b23565b820191905f5260205f20905b815481529060010190602001808311610b0657829003601f168201915b5050505050905090565b5f80610b376118d2565b9050610b448185856118d9565b600191505092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f80610b876118d2565b9050610b94858285611a9c565b610b9f858585611b27565b60019150509392505050565b600760159054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385a6b3ae6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c729190613506565b905090565b5f6012905090565b5f80610c896118d2565b9050610caa818585610c9b858961171f565b610ca5919061355e565b6118d9565b600191505092915050565b600760169054906101000a900460ff1681565b600760159054906101000a900460ff16610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e906135db565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663807ab4f7336040518263ffffffff1660e01b8152600401610d719190613619565b6020604051808303815f875af1158015610d8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db19190613646565b50565b5f60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610e0e611854565b80600760156101000a81548160ff02191690831515021790555050565b600d5481565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610e8c9190613324565b602060405180830381865afa158015610ea7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecb9190613506565b9050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f1f611854565b610f285f61244b565b565b600f805f0154908060010154908060020154905083565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f6e611854565b620f4240821015610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab906136bb565b60405180910390fd5b6207a120811015610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190613749565b60405180910390fd5b670de0b6b3a76400008261100e9190613767565b600c81905550670de0b6b3a7640000816110289190613767565b600d819055505050565b5f805f805f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbcbc0f1876040518263ffffffff1660e01b81526004016110919190613324565b60a060405180830381865afa1580156110ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d091906137bc565b9450945094509450945091939590929450565b600c5481565b6110f1611854565b600760169054906101000a900460ff1615611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111389061387d565b60405180910390fd5b6001600760166101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61118e611854565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6060600480546111f5906134c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611221906134c2565b801561126c5780601f106112435761010080835404028352916020019161126c565b820191905f5260205f20905b81548152906001019060200180831161124f57829003601f168201915b5050505050905090565b60125481565b5f806112866118d2565b90505f611293828661171f565b9050838110156112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061390b565b60405180910390fd5b6112e582868684036118d9565b60019250505092915050565b6112f9611854565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3360085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b815260040161137993929190613929565b6020604051808303815f875af1158015611395573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b99190613646565b905080156114495760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ede6ad9c836040518263ffffffff1660e01b815260040161141b91906131b4565b5f604051808303815f87803b158015611432575f80fd5b505af1158015611444573d5f803e3d5ffd5b505050505b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a8b9d240836040518263ffffffff1660e01b81526004016114cd9190613324565b602060405180830381865afa1580156114e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150c9190613506565b9050919050565b5f8061151d6118d2565b905061152a818585611b27565b600191505092915050565b61153d611854565b670de0b6b3a7640000816115519190613767565b600b8190555050565b6018602052805f5260405f205f915054906101000a900460ff1681565b61157f611854565b620f42408110156115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc906139ce565b60405180910390fd5b670de0b6b3a7640000816115d99190613767565b600e8190555050565b6115ea611854565b80151560175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167090613a5c565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117139190613118565b60405180910390a25050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b6117af611854565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181490613aea565b60405180910390fd5b6118268161244b565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b61185c6118d2565b73ffffffffffffffffffffffffffffffffffffffff1661187a61115e565b73ffffffffffffffffffffffffffffffffffffffff16146118d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c790613b52565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90613be0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613c6e565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a8f91906131b4565b60405180910390a3505050565b5f611aa7848461171f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b215781811015611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a90613cd6565b60405180910390fd5b611b2084848484036118d9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8c90613d64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfa90613df2565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ca1575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cba5750600760149054906101000a900460ff16155b15611f1357600760169054906101000a900460ff16611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590613e5a565b60405180910390fd5b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611dbe57600d54811115611da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9990613ec2565b60405180910390fd5b60165f815480929190611db490613ee0565b9190505550611e6b565b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611e6a57600c54811115611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990613f71565b60405180910390fd5b60155f815480929190611e6490613ee0565b91905055505b5b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611f1257600e54611ec583610ed2565b82611ed0919061355e565b1115611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613fd9565b60405180910390fd5b5b5b5f8103611f2a57611f2583835f61250e565b612446565b5f611f3430610ed2565b90505f600b548210159050808015611f595750600760149054906101000a900460ff16155b8015611fab575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611ffe575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612051575060175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612097576001600760146101000a81548160ff02191690831515021790555061207c600b5461277a565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612146575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561214f575f90505b60185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156121ed575060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121f6575f90505b801561231d575f60185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156122815760646014546016541161226157601354612265565b6012545b866122709190613767565b61227a9190614024565b9050612302565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612301576064601454601554116122e5576013546122e9565b6012545b866122f49190613767565b6122fe9190614024565b90505b5b808561230e9190614054565b945061231b87308361250e565b505b61232886868661250e565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e30443bc8761236f89610ed2565b6040518363ffffffff1660e01b815260040161238c929190614087565b5f604051808303815f87803b1580156123a3575f80fd5b505af19250505080156123b4575060015b5060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e30443bc866123fc88610ed2565b6040518363ffffffff1660e01b8152600401612419929190614087565b5f604051808303815f87803b158015612430575f80fd5b505af1925050508015612441575060015b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361257c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257390613d64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e190613df2565b60405180910390fd5b6125f5838383612c04565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266f9061411e565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161276191906131b4565b60405180910390a3612774848484612c09565b50505050565b5f6002601254600f5f0154846127909190613767565b61279a9190614024565b6127a49190614024565b90505f6002601254600f5f0154856127bc9190613767565b6127c69190614024565b6127d09190614024565b90505f601254600f60010154856127e79190613767565b6127f19190614024565b90505f601254600f60020154866128089190613767565b6128129190614024565b905061284030600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361250e565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663425c8abd826040518263ffffffff1660e01b815260040161289a91906131b4565b5f604051808303815f87803b1580156128b1575f80fd5b505af19250505080156128c2575060015b506128cc84612c0e565b5f4790505f8111156128e3576128e28482612e44565b5b6128ec83612c0e565b5f4790505f8190505f8111156129c7575f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161294290614169565b5f6040518083038185875af1925050503d805f811461297c576040519150601f19603f3d011682016040523d82523d5f602084013e612981565b606091505b50509050806129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc906141c7565b60405180910390fd5b505b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a229190613324565b602060405180830381865afa158015612a3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a619190613506565b90505f8190505f811115612bf8575f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612aed929190614087565b6020604051808303815f875af1158015612b09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b2d9190613646565b90508015612bf65760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ede6ad9c836040518263ffffffff1660e01b8152600401612b8f91906131b4565b5f604051808303815f87803b158015612ba6575f80fd5b505af1158015612bb8573d5f803e3d5ffd5b505050507f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc38b83604051612bed9291906141e5565b60405180910390a15b505b50505050505050505050565b505050565b505050565b5f600267ffffffffffffffff811115612c2a57612c2961420c565b5b604051908082528060200260200182016040528015612c585781602001602082028036833780820191505090505b50905030815f81518110612c6f57612c6e614239565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d379190614266565b81600181518110612d4b57612d4a614239565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612db13060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118d9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612e13959493929190614381565b5f604051808303815f87803b158015612e2a575f80fd5b505af1158015612e3c573d5f803e3d5ffd5b505050505050565b612e703060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118d9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401612ed5969594939291906143d9565b60606040518083038185885af1158015612ef1573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612f169190614438565b5050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f4a82612f21565b9050919050565b612f5a81612f40565b8114612f64575f80fd5b50565b5f81359050612f7581612f51565b92915050565b5f8115159050919050565b612f8f81612f7b565b8114612f99575f80fd5b50565b5f81359050612faa81612f86565b92915050565b5f8060408385031215612fc657612fc5612f1d565b5b5f612fd385828601612f67565b9250506020612fe485828601612f9c565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561302557808201518184015260208101905061300a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61304a82612fee565b6130548185612ff8565b9350613064818560208601613008565b61306d81613030565b840191505092915050565b5f6020820190508181035f8301526130908184613040565b905092915050565b5f819050919050565b6130aa81613098565b81146130b4575f80fd5b50565b5f813590506130c5816130a1565b92915050565b5f80604083850312156130e1576130e0612f1d565b5b5f6130ee85828601612f67565b92505060206130ff858286016130b7565b9150509250929050565b61311281612f7b565b82525050565b5f60208201905061312b5f830184613109565b92915050565b5f819050919050565b5f61315461314f61314a84612f21565b613131565b612f21565b9050919050565b5f6131658261313a565b9050919050565b5f6131768261315b565b9050919050565b6131868161316c565b82525050565b5f60208201905061319f5f83018461317d565b92915050565b6131ae81613098565b82525050565b5f6020820190506131c75f8301846131a5565b92915050565b5f805f606084860312156131e4576131e3612f1d565b5b5f6131f186828701612f67565b935050602061320286828701612f67565b9250506040613213868287016130b7565b9150509250925092565b5f6132278261315b565b9050919050565b6132378161321d565b82525050565b5f6020820190506132505f83018461322e565b92915050565b5f60ff82169050919050565b61326b81613256565b82525050565b5f6020820190506132845f830184613262565b92915050565b5f6020828403121561329f5761329e612f1d565b5b5f6132ac84828501612f67565b91505092915050565b5f602082840312156132ca576132c9612f1d565b5b5f6132d784828501612f9c565b91505092915050565b5f6060820190506132f35f8301866131a5565b61330060208301856131a5565b61330d60408301846131a5565b949350505050565b61331e81612f40565b82525050565b5f6020820190506133375f830184613315565b92915050565b5f806040838503121561335357613352612f1d565b5b5f613360858286016130b7565b9250506020613371858286016130b7565b9150509250929050565b5f60a08201905061338e5f830188613315565b61339b60208301876131a5565b6133a860408301866131a5565b6133b560608301856131a5565b6133c260808301846131a5565b9695505050505050565b5f602082840312156133e1576133e0612f1d565b5b5f6133ee848285016130b7565b91505092915050565b5f806040838503121561340d5761340c612f1d565b5b5f61341a85828601612f67565b925050602061342b85828601612f67565b9150509250929050565b5f61343f8261315b565b9050919050565b61344f81613435565b82525050565b5f6020820190506134685f830184613446565b92915050565b5f6040820190506134815f830185613315565b61348e6020830184613109565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806134d957607f821691505b6020821081036134ec576134eb613495565b5b50919050565b5f81519050613500816130a1565b92915050565b5f6020828403121561351b5761351a612f1d565b5b5f613528848285016134f2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61356882613098565b915061357383613098565b925082820190508082111561358b5761358a613531565b5b92915050565b7f436c61696d206e6f7420656e61626c65640000000000000000000000000000005f82015250565b5f6135c5601183612ff8565b91506135d082613591565b602082019050919050565b5f6020820190508181035f8301526135f2816135b9565b9050919050565b5f6136038261315b565b9050919050565b613613816135f9565b82525050565b5f60208201905061362c5f83018461360a565b92915050565b5f8151905061364081612f86565b92915050565b5f6020828403121561365b5761365a612f1d565b5b5f61366884828501613632565b91505092915050565b7f43616e277420736574206d6178627579206c6f776572207468616e20312520005f82015250565b5f6136a5601f83612ff8565b91506136b082613671565b602082019050919050565b5f6020820190508181035f8301526136d281613699565b9050919050565b7f43616e277420736574206d617873656c6c206c6f776572207468616e20302e355f8201527f2520000000000000000000000000000000000000000000000000000000000000602082015250565b5f613733602283612ff8565b915061373e826136d9565b604082019050919050565b5f6020820190508181035f83015261376081613727565b9050919050565b5f61377182613098565b915061377c83613098565b925082820261378a81613098565b915082820484148315176137a1576137a0613531565b5b5092915050565b5f815190506137b681612f51565b92915050565b5f805f805f60a086880312156137d5576137d4612f1d565b5b5f6137e2888289016137a8565b95505060206137f3888289016134f2565b9450506040613804888289016134f2565b9350506060613815888289016134f2565b9250506080613826888289016134f2565b9150509295509295909350565b7f416c726561647920656e61626c656400000000000000000000000000000000005f82015250565b5f613867600f83612ff8565b915061387282613833565b602082019050919050565b5f6020820190508181035f8301526138948161385b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6138f5602583612ff8565b91506139008261389b565b604082019050919050565b5f6020820190508181035f830152613922816138e9565b9050919050565b5f60608201905061393c5f830186613315565b6139496020830185613315565b61395660408301846131a5565b949350505050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f6139b8602283612ff8565b91506139c38261395e565b604082019050919050565b5f6020820190508181035f8301526139e5816139ac565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f66205f8201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b5f613a46602a83612ff8565b9150613a51826139ec565b604082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613ad4602683612ff8565b9150613adf82613a7a565b604082019050919050565b5f6020820190508181035f830152613b0181613ac8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613b3c602083612ff8565b9150613b4782613b08565b602082019050919050565b5f6020820190508181035f830152613b6981613b30565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613bca602483612ff8565b9150613bd582613b70565b604082019050919050565b5f6020820190508181035f830152613bf781613bbe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c58602283612ff8565b9150613c6382613bfe565b604082019050919050565b5f6020820190508181035f830152613c8581613c4c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613cc0601d83612ff8565b9150613ccb82613c8c565b602082019050919050565b5f6020820190508181035f830152613ced81613cb4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d4e602583612ff8565b9150613d5982613cf4565b604082019050919050565b5f6020820190508181035f830152613d7b81613d42565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613ddc602383612ff8565b9150613de782613d82565b604082019050919050565b5f6020820190508181035f830152613e0981613dd0565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f613e44601283612ff8565b9150613e4f82613e10565b602082019050919050565b5f6020820190508181035f830152613e7181613e38565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c416d6f756e74005f82015250565b5f613eac601f83612ff8565b9150613eb782613e78565b602082019050919050565b5f6020820190508181035f830152613ed981613ea0565b9050919050565b5f613eea82613098565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f1c57613f1b613531565b5b600182019050919050565b7f596f752061726520657863656564696e67206d6178427579416d6f756e7400005f82015250565b5f613f5b601e83612ff8565b9150613f6682613f27565b602082019050919050565b5f6020820190508181035f830152613f8881613f4f565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c657400000000005f82015250565b5f613fc3601b83612ff8565b9150613fce82613f8f565b602082019050919050565b5f6020820190508181035f830152613ff081613fb7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61402e82613098565b915061403983613098565b92508261404957614048613ff7565b5b828204905092915050565b5f61405e82613098565b915061406983613098565b925082820390508181111561408157614080613531565b5b92915050565b5f60408201905061409a5f830185613315565b6140a760208301846131a5565b9392505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614108602683612ff8565b9150614113826140ae565b604082019050919050565b5f6020820190508181035f830152614135816140fc565b9050919050565b5f81905092915050565b50565b5f6141545f8361413c565b915061415f82614146565b5f82019050919050565b5f61417382614149565b9150819050919050565b7f4661696c656420746f2073656e642045544820746f206465762077616c6c65745f82015250565b5f6141b1602083612ff8565b91506141bc8261417d565b602082019050919050565b5f6020820190508181035f8301526141de816141a5565b9050919050565b5f6040820190506141f85f8301856131a5565b61420560208301846131a5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561427b5761427a612f1d565b5b5f614288848285016137a8565b91505092915050565b5f819050919050565b5f6142b46142af6142aa84614291565b613131565b613098565b9050919050565b6142c48161429a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6142fc81612f40565b82525050565b5f61430d83836142f3565b60208301905092915050565b5f602082019050919050565b5f61432f826142ca565b61433981856142d4565b9350614344836142e4565b805f5b8381101561437457815161435b8882614302565b975061436683614319565b925050600181019050614347565b5085935050505092915050565b5f60a0820190506143945f8301886131a5565b6143a160208301876142bb565b81810360408301526143b38186614325565b90506143c26060830185613315565b6143cf60808301846131a5565b9695505050505050565b5f60c0820190506143ec5f830189613315565b6143f960208301886131a5565b61440660408301876142bb565b61441360608301866142bb565b6144206080830185613315565b61442d60a08301846131a5565b979650505050505050565b5f805f6060848603121561444f5761444e612f1d565b5b5f61445c868287016134f2565b935050602061446d868287016134f2565b925050604061447e868287016134f2565b915050925092509256fea264697066735822122001e5daa08200efe4a66bb0ff4013ff5ca7d2063d18ef3b83520d650762ff057e64736f6c63430008150033

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

00000000000000000000000078d73a8c9142029197f88790f1fdf82c1ba1b296000000000000000000000000921e1df59122eb3ce31a4a219f5c2d7eebac5de1

-----Decoded View---------------
Arg [0] : _dividendTracker (address): 0x78d73a8c9142029197F88790F1Fdf82C1BA1b296
Arg [1] : _stakingPool (address): 0x921E1Df59122EB3ce31A4A219f5C2d7eeBAC5De1

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000078d73a8c9142029197f88790f1fdf82c1ba1b296
Arg [1] : 000000000000000000000000921e1df59122eb3ce31a4a219f5c2d7eebac5de1


Deployed Bytecode Sourcemap

25558:12151:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30096:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11268:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13769:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25848:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12397:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14591:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25697:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25763:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30992:141;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12239:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15295:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25728:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28736:149;;;;;;;;;;;;;:::i;:::-;;31141:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30420:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25958:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31467:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12568:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24676:103;;;;;;;;;;;;;:::i;:::-;;26135:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;25811:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29086:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31646:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;25924:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30274:138;;;;;;;;;;;;;:::i;:::-;;24035:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29559:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11487:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26179:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16068:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36375:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25641:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31275:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12951:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29432:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26423:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28893:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29735:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13248:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25884:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24934:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25606:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25993:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30096:170;23921:13;:11;:13::i;:::-;30206:15:::1;;;;;;;;;;;:36;;;30243:7;30252:5;30206:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30096:170:::0;;:::o;11268:100::-;11322:13;11355:5;11348:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11268:100;:::o;13769:242::-;13888:4;13910:13;13926:12;:10;:12::i;:::-;13910:28;;13949:32;13958:5;13965:7;13974:6;13949:8;:32::i;:::-;13999:4;13992:11;;;13769:242;;;;:::o;25848:27::-;;;;;;;;;;;;;:::o;12397:108::-;12458:7;12485:12;;12478:19;;12397:108;:::o;14591:295::-;14722:4;14739:15;14757:12;:10;:12::i;:::-;14739:30;;14780:38;14796:4;14802:7;14811:6;14780:15;:38::i;:::-;14829:27;14839:4;14845:2;14849:6;14829:9;:27::i;:::-;14874:4;14867:11;;;14591:295;;;;;:::o;25697:24::-;;;;;;;;;;;;;:::o;25763:39::-;;;;;;;;;;;;;:::o;30992:141::-;31055:7;31082:15;;;;;;;;;;;:41;;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31075:50;;30992:141;:::o;12239:93::-;12297:5;12322:2;12315:9;;12239:93;:::o;15295:270::-;15410:4;15432:13;15448:12;:10;:12::i;:::-;15432:28;;15471:64;15480:5;15487:7;15524:10;15496:25;15506:5;15513:7;15496:9;:25::i;:::-;:38;;;;:::i;:::-;15471:8;:64::i;:::-;15553:4;15546:11;;;15295:270;;;;:::o;25728:26::-;;;;;;;;;;;;;:::o;28736:149::-;28781:12;;;;;;;;;;;28773:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;28826:15;;;;;;;;;;;:30;;;28865:10;28826:51;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28736:149::o;31141:126::-;31207:4;31231:19;:28;31251:7;31231:28;;;;;;;;;;;;;;;;;;;;;;;;;31224:35;;31141:126;;;:::o;30420:98::-;23921:13;:11;:13::i;:::-;30503:7:::1;30488:12;;:22;;;;;;;;;;;;;;;;;;30420:98:::0;:::o;25958:28::-;;;;:::o;31467:171::-;31564:7;31596:15;;;;;;;;;;;:25;;;31622:7;31596:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31589:41;;31467:171;;;:::o;12568:177::-;12687:7;12719:9;:18;12729:7;12719:18;;;;;;;;;;;;;;;;12712:25;;12568:177;;;:::o;24676:103::-;23921:13;:11;:13::i;:::-;24741:30:::1;24768:1;24741:18;:30::i;:::-;24676:103::o:0;26135:35::-;;;;;;;;;;;;;;;;;;;:::o;25811:30::-;;;;;;;;;;;;;:::o;29086:338::-;23921:13;:11;:13::i;:::-;29214:7:::1;29204:6;:17;;29196:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29287:6;29276:7;:17;;29268:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29367:6;29358;:15;;;;:::i;:::-;29343:12;:30;;;;29410:6;29400:7;:16;;;;:::i;:::-;29384:13;:32;;;;29086:338:::0;;:::o;31646:278::-;31751:7;31773;31795;31817;31839;31881:15;;;;;;;;;;;:26;;;31908:7;31881:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31874:42;;;;;;;;;;31646:278;;;;;;;:::o;25924:27::-;;;;:::o;30274:138::-;23921:13;:11;:13::i;:::-;30338:14:::1;;;;;;;;;;;30337:15;30329:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;30400:4;30383:14;;:21;;;;;;;;;;;;;;;;;;30274:138::o:0;24035:87::-;24081:7;24108:6;;;;;;;;;;;24101:13;;24035:87;:::o;29559:168::-;23921:13;:11;:13::i;:::-;29711:8:::1;29675:24;:33;29700:7;29675:33;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;29559:168:::0;;:::o;11487:104::-;11543:13;11576:7;11569:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11487:104;:::o;26179:22::-;;;;:::o;16068:505::-;16188:4;16210:13;16226:12;:10;:12::i;:::-;16210:28;;16249:24;16276:25;16286:5;16293:7;16276:9;:25::i;:::-;16249:52;;16354:15;16334:16;:35;;16312:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;16470:60;16479:5;16486:7;16514:15;16495:16;:34;16470:8;:60::i;:::-;16561:4;16554:11;;;;16068:505;;;;:::o;36375:314::-;23921:13;:11;:13::i;:::-;36450:12:::1;36472:4;;;;;;;;;;;36465:25;;;36505:10;36538:15;;;;;;;;;;;36569:6;36465:121;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36450:136;;36601:7;36597:85;;;36625:15;;;;;;;;;;;:37;;;36663:6;36625:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36597:85;36439:250;36375:314:::0;:::o;25641:19::-;;;;;;;;;;;;;:::o;31275:184::-;31372:7;31404:15;;;;;;;;;;;:38;;;31443:7;31404:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31397:54;;31275:184;;;:::o;12951:234::-;13066:4;13088:13;13104:12;:10;:12::i;:::-;13088:28;;13127;13137:5;13144:2;13148:6;13127:9;:28::i;:::-;13173:4;13166:11;;;12951:234;;;;:::o;29432:119::-;23921:13;:11;:13::i;:::-;29537:6:::1;29528;:15;;;;:::i;:::-;29507:18;:36;;;;29432:119:::0;:::o;26423:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;28893:185::-;23921:13;:11;:13::i;:::-;28986:7:::1;28976:6;:17;;28968:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29064:6;29055;:15;;;;:::i;:::-;29043:9;:27;;;;28893:185:::0;:::o;29735:353::-;23921:13;:11;:13::i;:::-;29900:8:::1;29868:40;;:19;:28;29888:7;29868:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;29846:132:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30020:8;29989:19;:28;30009:7;29989:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;30062:7;30046:34;;;30071:8;30046:34;;;;;;:::i;:::-;;;;;;;;29735:353:::0;;:::o;13248:201::-;13382:7;13414:11;:18;13426:5;13414:18;;;;;;;;;;;;;;;:27;13433:7;13414:27;;;;;;;;;;;;;;;;13407:34;;13248:201;;;;:::o;25884:33::-;;;;:::o;24934:238::-;23921:13;:11;:13::i;:::-;25057:1:::1;25037:22;;:8;:22;;::::0;25015:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25136:28;25155:8;25136:18;:28::i;:::-;24934:238:::0;:::o;25606:28::-;;;;;;;;;;;;;:::o;25993:24::-;;;;:::o;24200:132::-;24275:12;:10;:12::i;:::-;24264:23;;:7;:5;:7::i;:::-;:23;;;24256:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24200:132::o;8972:98::-;9025:7;9052:10;9045:17;;8972:98;:::o;20201:380::-;20354:1;20337:19;;:5;:19;;;20329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20435:1;20416:21;;:7;:21;;;20408:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20519:6;20489:11;:18;20501:5;20489:18;;;;;;;;;;;;;;;:27;20508:7;20489:27;;;;;;;;;;;;;;;:36;;;;20557:7;20541:32;;20550:5;20541:32;;;20566:6;20541:32;;;;;;:::i;:::-;;;;;;;;20201:380;;;:::o;20872:502::-;21007:24;21034:25;21044:5;21051:7;21034:9;:25::i;:::-;21007:52;;21094:17;21074:16;:37;21070:297;;21174:6;21154:16;:26;;21128:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;21289:51;21298:5;21305:7;21333:6;21314:16;:25;21289:8;:51::i;:::-;21070:297;20996:378;20872:502;;;:::o;31932:2821::-;32080:1;32064:18;;:4;:18;;;32056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32157:1;32143:16;;:2;:16;;;32135:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;32231:19;:25;32251:4;32231:25;;;;;;;;;;;;;;;;;;;;;;;;;32230:26;:54;;;;;32261:19;:23;32281:2;32261:23;;;;;;;;;;;;;;;;;;;;;;;;;32260:24;32230:54;:67;;;;;32289:8;;;;;;;;;;;32288:9;32230:67;32212:866;;;32332:14;;;;;;;;;;;32324:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;32388:25;:29;32414:2;32388:29;;;;;;;;;;;;;;;;;;;;;;;;;32384:463;;;32478:13;;32468:6;:23;;32438:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;32585:10;;:12;;;;;;;;;:::i;:::-;;;;;;32384:463;;;32623:25;:31;32649:4;32623:31;;;;;;;;;;;;;;;;;;;;;;;;;32619:228;;;32715:12;;32705:6;:22;;32675:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;32820:9;;:11;;;;;;;;;:::i;:::-;;;;;;32619:228;32384:463;32866:24;:28;32891:2;32866:28;;;;;;;;;;;;;;;;;;;;;;;;;32861:206;;32971:9;;32954:13;32964:2;32954:9;:13::i;:::-;32945:6;:22;;;;:::i;:::-;:35;;32915:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;32861:206;32212:866;33104:1;33094:6;:11;33090:93;;33122:28;33138:4;33144:2;33148:1;33122:15;:28::i;:::-;33165:7;;33090:93;33195:28;33226:24;33244:4;33226:9;:24::i;:::-;33195:55;;33261:12;33300:18;;33276:20;:42;;33261:57;;33349:7;:33;;;;;33374:8;;;;;;;;;;;33373:9;33349:33;:79;;;;;33399:25;:29;33425:2;33399:29;;;;;;;;;;;;;;;;;;;;;;;;;33349:79;:122;;;;;33446:19;:25;33466:4;33446:25;;;;;;;;;;;;;;;;;;;;;;;;;33445:26;33349:122;:163;;;;;33489:19;:23;33509:2;33489:23;;;;;;;;;;;;;;;;;;;;;;;;;33488:24;33349:163;33331:319;;;33550:4;33539:8;;:15;;;;;;;;;;;;;;;;;;33571:34;33586:18;;33571:14;:34::i;:::-;33633:5;33622:8;;:16;;;;;;;;;;;;;;;;;;33331:319;33662:12;33678:8;;;;;;;;;;;33677:9;33662:24;;33788:19;:25;33808:4;33788:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;33817:19;:23;33837:2;33817:23;;;;;;;;;;;;;;;;;;;;;;;;;33788:52;33784:100;;;33867:5;33857:15;;33784:100;33901:25;:29;33927:2;33901:29;;;;;;;;;;;;;;;;;;;;;;;;;33900:30;:66;;;;;33935:25;:31;33961:4;33935:31;;;;;;;;;;;;;;;;;;;;;;;;;33934:32;33900:66;33896:100;;;33991:5;33981:15;;33896:100;34013:7;34009:545;;;34037:14;34070:25;:29;34096:2;34070:29;;;;;;;;;;;;;;;;;;;;;;;;;34066:377;;;34232:3;34174:12;;34161:10;;:25;:45;;34195:11;;34161:45;;;34189:3;;34161:45;34151:6;:56;;;;:::i;:::-;34150:85;;;;:::i;:::-;34120:115;;34066:377;;;34261:25;:31;34287:4;34261:31;;;;;;;;;;;;;;;;;;;;;;;;;34257:186;;;34424:3;34366:12;;34354:9;;:24;:44;;34387:11;;34354:44;;;34381:3;;34354:44;34344:6;:55;;;;:::i;:::-;34343:84;;;;:::i;:::-;34313:114;;34257:186;34066:377;34477:6;34468;:15;;;;:::i;:::-;34459:24;;34498:44;34514:4;34528;34535:6;34498:15;:44::i;:::-;34022:532;34009:545;34564:33;34580:4;34586:2;34590:6;34564:15;:33::i;:::-;34614:15;;;;;;;;;;;:26;;;34641:4;34647:15;34657:4;34647:9;:15::i;:::-;34614:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34610:65;34689:15;;;;;;;;;;;:26;;;34716:2;34720:13;34730:2;34720:9;:13::i;:::-;34689:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34685:61;32045:2708;;;31932:2821;;;;:::o;25332:191::-;25406:16;25425:6;;;;;;;;;;;25406:25;;25451:8;25442:6;;:17;;;;;;;;;;;;;;;;;;25506:8;25475:40;;25496:8;25475:40;;;;;;;;;;;;25395:128;25332:191;:::o;17043:877::-;17190:1;17174:18;;:4;:18;;;17166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17267:1;17253:16;;:2;:16;;;17245:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17322:38;17343:4;17349:2;17353:6;17322:20;:38::i;:::-;17373:19;17395:9;:15;17405:4;17395:15;;;;;;;;;;;;;;;;17373:37;;17458:6;17443:11;:21;;17421:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;17598:6;17584:11;:20;17566:9;:15;17576:4;17566:15;;;;;;;;;;;;;;;:38;;;;17801:6;17784:9;:13;17794:2;17784:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;17851:2;17836:26;;17845:4;17836:26;;;17855:6;17836:26;;;;;;:::i;:::-;;;;;;;;17875:37;17895:4;17901:2;17905:6;17875:19;:37::i;:::-;17155:765;17043:877;;;:::o;34761:1606::-;34820:20;34880:1;34873:3;;34854:5;:15;;;34845:6;:24;;;;:::i;:::-;34844:32;;;;:::i;:::-;34843:38;;;;:::i;:::-;34820:61;;34892:32;34977:1;34957:3;;34938:5;:15;;;34929:6;:24;;;;:::i;:::-;34928:32;;;;:::i;:::-;34927:51;;;;:::i;:::-;34892:86;;34989:20;35035:3;;35022:5;:9;;;35013:6;:18;;;;:::i;:::-;35012:26;;;;:::i;:::-;34989:49;;35049:21;35104:3;;35083:5;:17;;;35074:6;:26;;;;:::i;:::-;35073:34;;;;:::i;:::-;35049:58;;35120:67;35144:4;35159:11;;;;;;;;;;;35173:13;35120:15;:67::i;:::-;35202:11;;;;;;;;;;;:24;;;35227:13;35202:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35198:55;35265:30;35282:12;35265:16;:30::i;:::-;35308:22;35333:21;35308:46;;35388:1;35371:14;:18;35367:142;;;35443:54;35456:24;35482:14;35443:12;:54::i;:::-;35367:142;35521:30;35538:12;35521:16;:30::i;:::-;35564:21;35588;35564:45;;35650:14;35667:13;35650:30;;35706:1;35697:6;:10;35693:177;;;35725:12;35751:15;;;;;;;;;;;35743:29;;35780:6;35743:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35724:67;;;35814:7;35806:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;35709:161;35693:177;35882:17;35909:4;;;;;;;;;;;35902:22;;;35933:4;35902:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35882:57;;35984:17;36004:9;35984:29;;36042:1;36030:9;:13;36026:334;;;36060:12;36082:4;;;;;;;;;;;36075:21;;;36123:15;;;;;;;;;;;36158:9;36075:107;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36060:122;;36201:7;36197:152;;;36229:15;;;;;;;;;;;:37;;;36267:9;36229:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36301:32;36315:6;36323:9;36301:32;;;;;;;:::i;:::-;;;;;;;;36197:152;36045:315;36026:334;34809:1558;;;;;;;;;34761:1606;:::o;21974:125::-;;;;:::o;22703:124::-;;;;:::o;36697:500::-;36763:21;36801:1;36787:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36763:40;;36832:4;36814;36819:1;36814:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;36858:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36848:4;36853:1;36848:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;36884:53;36901:4;36916:6;;;;;;;;;;;36925:11;36884:8;:53::i;:::-;36974:6;;;;;;;;;;;:57;;;37046:11;37072:1;37116:4;37143;37163:15;36974:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36752:445;36697:500;:::o;37205:501::-;37353:53;37370:4;37385:6;;;;;;;;;;;37394:11;37353:8;:53::i;:::-;37449:6;;;;;;;;;;;:22;;;37479:9;37512:4;37532:11;37558:1;37601;37652:4;37672:15;37449:249;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;37205:501;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:99::-;1724:6;1758:5;1752:12;1742:22;;1672:99;;;:::o;1777:169::-;1861:11;1895:6;1890:3;1883:19;1935:4;1930:3;1926:14;1911:29;;1777:169;;;;:::o;1952:246::-;2033:1;2043:113;2057:6;2054:1;2051:13;2043:113;;;2142:1;2137:3;2133:11;2127:18;2123:1;2118:3;2114:11;2107:39;2079:2;2076:1;2072:10;2067:15;;2043:113;;;2190:1;2181:6;2176:3;2172:16;2165:27;2014:184;1952:246;;;:::o;2204:102::-;2245:6;2296:2;2292:7;2287:2;2280:5;2276:14;2272:28;2262:38;;2204:102;;;:::o;2312:377::-;2400:3;2428:39;2461:5;2428:39;:::i;:::-;2483:71;2547:6;2542:3;2483:71;:::i;:::-;2476:78;;2563:65;2621:6;2616:3;2609:4;2602:5;2598:16;2563:65;:::i;:::-;2653:29;2675:6;2653:29;:::i;:::-;2648:3;2644:39;2637:46;;2404:285;2312:377;;;;:::o;2695:313::-;2808:4;2846:2;2835:9;2831:18;2823:26;;2895:9;2889:4;2885:20;2881:1;2870:9;2866:17;2859:47;2923:78;2996:4;2987:6;2923:78;:::i;:::-;2915:86;;2695:313;;;;:::o;3014:77::-;3051:7;3080:5;3069:16;;3014:77;;;:::o;3097:122::-;3170:24;3188:5;3170:24;:::i;:::-;3163:5;3160:35;3150:63;;3209:1;3206;3199:12;3150:63;3097:122;:::o;3225:139::-;3271:5;3309:6;3296:20;3287:29;;3325:33;3352:5;3325:33;:::i;:::-;3225:139;;;;:::o;3370:474::-;3438:6;3446;3495:2;3483:9;3474:7;3470:23;3466:32;3463:119;;;3501:79;;:::i;:::-;3463:119;3621:1;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;:::i;:::-;3636:63;;3592:117;3748:2;3774:53;3819:7;3810:6;3799:9;3795:22;3774:53;:::i;:::-;3764:63;;3719:118;3370:474;;;;;:::o;3850:109::-;3931:21;3946:5;3931:21;:::i;:::-;3926:3;3919:34;3850:109;;:::o;3965:210::-;4052:4;4090:2;4079:9;4075:18;4067:26;;4103:65;4165:1;4154:9;4150:17;4141:6;4103:65;:::i;:::-;3965:210;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:141::-;4592:9;4625:37;4656:5;4625:37;:::i;:::-;4612:50;;4527:141;;;:::o;4674:161::-;4776:52;4822:5;4776:52;:::i;:::-;4771:3;4764:65;4674:161;;:::o;4841:252::-;4949:4;4987:2;4976:9;4972:18;4964:26;;5000:86;5083:1;5072:9;5068:17;5059:6;5000:86;:::i;:::-;4841:252;;;;:::o;5099:118::-;5186:24;5204:5;5186:24;:::i;:::-;5181:3;5174:37;5099:118;;:::o;5223:222::-;5316:4;5354:2;5343:9;5339:18;5331:26;;5367:71;5435:1;5424:9;5420:17;5411:6;5367:71;:::i;:::-;5223:222;;;;:::o;5451:619::-;5528:6;5536;5544;5593:2;5581:9;5572:7;5568:23;5564:32;5561:119;;;5599:79;;:::i;:::-;5561:119;5719:1;5744:53;5789:7;5780:6;5769:9;5765:22;5744:53;:::i;:::-;5734:63;;5690:117;5846:2;5872:53;5917:7;5908:6;5897:9;5893:22;5872:53;:::i;:::-;5862:63;;5817:118;5974:2;6000:53;6045:7;6036:6;6025:9;6021:22;6000:53;:::i;:::-;5990:63;;5945:118;5451:619;;;;;:::o;6076:150::-;6150:9;6183:37;6214:5;6183:37;:::i;:::-;6170:50;;6076:150;;;:::o;6232:179::-;6343:61;6398:5;6343:61;:::i;:::-;6338:3;6331:74;6232:179;;:::o;6417:270::-;6534:4;6572:2;6561:9;6557:18;6549:26;;6585:95;6677:1;6666:9;6662:17;6653:6;6585:95;:::i;:::-;6417:270;;;;:::o;6693:86::-;6728:7;6768:4;6761:5;6757:16;6746:27;;6693:86;;;:::o;6785:112::-;6868:22;6884:5;6868:22;:::i;:::-;6863:3;6856:35;6785:112;;:::o;6903:214::-;6992:4;7030:2;7019:9;7015:18;7007:26;;7043:67;7107:1;7096:9;7092:17;7083:6;7043:67;:::i;:::-;6903:214;;;;:::o;7123:329::-;7182:6;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7123:329;;;;:::o;7458:323::-;7514:6;7563:2;7551:9;7542:7;7538:23;7534:32;7531:119;;;7569:79;;:::i;:::-;7531:119;7689:1;7714:50;7756:7;7747:6;7736:9;7732:22;7714:50;:::i;:::-;7704:60;;7660:114;7458:323;;;;:::o;7787:442::-;7936:4;7974:2;7963:9;7959:18;7951:26;;7987:71;8055:1;8044:9;8040:17;8031:6;7987:71;:::i;:::-;8068:72;8136:2;8125:9;8121:18;8112:6;8068:72;:::i;:::-;8150;8218:2;8207:9;8203:18;8194:6;8150:72;:::i;:::-;7787:442;;;;;;:::o;8235:118::-;8322:24;8340:5;8322:24;:::i;:::-;8317:3;8310:37;8235:118;;:::o;8359:222::-;8452:4;8490:2;8479:9;8475:18;8467:26;;8503:71;8571:1;8560:9;8556:17;8547:6;8503:71;:::i;:::-;8359:222;;;;:::o;8587:474::-;8655:6;8663;8712:2;8700:9;8691:7;8687:23;8683:32;8680:119;;;8718:79;;:::i;:::-;8680:119;8838:1;8863:53;8908:7;8899:6;8888:9;8884:22;8863:53;:::i;:::-;8853:63;;8809:117;8965:2;8991:53;9036:7;9027:6;9016:9;9012:22;8991:53;:::i;:::-;8981:63;;8936:118;8587:474;;;;;:::o;9067:664::-;9272:4;9310:3;9299:9;9295:19;9287:27;;9324:71;9392:1;9381:9;9377:17;9368:6;9324:71;:::i;:::-;9405:72;9473:2;9462:9;9458:18;9449:6;9405:72;:::i;:::-;9487;9555:2;9544:9;9540:18;9531:6;9487:72;:::i;:::-;9569;9637:2;9626:9;9622:18;9613:6;9569:72;:::i;:::-;9651:73;9719:3;9708:9;9704:19;9695:6;9651:73;:::i;:::-;9067:664;;;;;;;;:::o;9737:329::-;9796:6;9845:2;9833:9;9824:7;9820:23;9816:32;9813:119;;;9851:79;;:::i;:::-;9813:119;9971:1;9996:53;10041:7;10032:6;10021:9;10017:22;9996:53;:::i;:::-;9986:63;;9942:117;9737:329;;;;:::o;10072:474::-;10140:6;10148;10197:2;10185:9;10176:7;10172:23;10168:32;10165:119;;;10203:79;;:::i;:::-;10165:119;10323:1;10348:53;10393:7;10384:6;10373:9;10369:22;10348:53;:::i;:::-;10338:63;;10294:117;10450:2;10476:53;10521:7;10512:6;10501:9;10497:22;10476:53;:::i;:::-;10466:63;;10421:118;10072:474;;;;;:::o;10552:148::-;10624:9;10657:37;10688:5;10657:37;:::i;:::-;10644:50;;10552:148;;;:::o;10706:175::-;10815:59;10868:5;10815:59;:::i;:::-;10810:3;10803:72;10706:175;;:::o;10887:266::-;11002:4;11040:2;11029:9;11025:18;11017:26;;11053:93;11143:1;11132:9;11128:17;11119:6;11053:93;:::i;:::-;10887:266;;;;:::o;11159:320::-;11274:4;11312:2;11301:9;11297:18;11289:26;;11325:71;11393:1;11382:9;11378:17;11369:6;11325:71;:::i;:::-;11406:66;11468:2;11457:9;11453:18;11444:6;11406:66;:::i;:::-;11159:320;;;;;:::o;11485:180::-;11533:77;11530:1;11523:88;11630:4;11627:1;11620:15;11654:4;11651:1;11644:15;11671:320;11715:6;11752:1;11746:4;11742:12;11732:22;;11799:1;11793:4;11789:12;11820:18;11810:81;;11876:4;11868:6;11864:17;11854:27;;11810:81;11938:2;11930:6;11927:14;11907:18;11904:38;11901:84;;11957:18;;:::i;:::-;11901:84;11722:269;11671:320;;;:::o;11997:143::-;12054:5;12085:6;12079:13;12070:22;;12101:33;12128:5;12101:33;:::i;:::-;11997:143;;;;:::o;12146:351::-;12216:6;12265:2;12253:9;12244:7;12240:23;12236:32;12233:119;;;12271:79;;:::i;:::-;12233:119;12391:1;12416:64;12472:7;12463:6;12452:9;12448:22;12416:64;:::i;:::-;12406:74;;12362:128;12146:351;;;;:::o;12503:180::-;12551:77;12548:1;12541:88;12648:4;12645:1;12638:15;12672:4;12669:1;12662:15;12689:191;12729:3;12748:20;12766:1;12748:20;:::i;:::-;12743:25;;12782:20;12800:1;12782:20;:::i;:::-;12777:25;;12825:1;12822;12818:9;12811:16;;12846:3;12843:1;12840:10;12837:36;;;12853:18;;:::i;:::-;12837:36;12689:191;;;;:::o;12886:167::-;13026:19;13022:1;13014:6;13010:14;13003:43;12886:167;:::o;13059:366::-;13201:3;13222:67;13286:2;13281:3;13222:67;:::i;:::-;13215:74;;13298:93;13387:3;13298:93;:::i;:::-;13416:2;13411:3;13407:12;13400:19;;13059:366;;;:::o;13431:419::-;13597:4;13635:2;13624:9;13620:18;13612:26;;13684:9;13678:4;13674:20;13670:1;13659:9;13655:17;13648:47;13712:131;13838:4;13712:131;:::i;:::-;13704:139;;13431:419;;;:::o;13856:134::-;13914:9;13947:37;13978:5;13947:37;:::i;:::-;13934:50;;13856:134;;;:::o;13996:147::-;14091:45;14130:5;14091:45;:::i;:::-;14086:3;14079:58;13996:147;;:::o;14149:238::-;14250:4;14288:2;14277:9;14273:18;14265:26;;14301:79;14377:1;14366:9;14362:17;14353:6;14301:79;:::i;:::-;14149:238;;;;:::o;14393:137::-;14447:5;14478:6;14472:13;14463:22;;14494:30;14518:5;14494:30;:::i;:::-;14393:137;;;;:::o;14536:345::-;14603:6;14652:2;14640:9;14631:7;14627:23;14623:32;14620:119;;;14658:79;;:::i;:::-;14620:119;14778:1;14803:61;14856:7;14847:6;14836:9;14832:22;14803:61;:::i;:::-;14793:71;;14749:125;14536:345;;;;:::o;14887:181::-;15027:33;15023:1;15015:6;15011:14;15004:57;14887:181;:::o;15074:366::-;15216:3;15237:67;15301:2;15296:3;15237:67;:::i;:::-;15230:74;;15313:93;15402:3;15313:93;:::i;:::-;15431:2;15426:3;15422:12;15415:19;;15074:366;;;:::o;15446:419::-;15612:4;15650:2;15639:9;15635:18;15627:26;;15699:9;15693:4;15689:20;15685:1;15674:9;15670:17;15663:47;15727:131;15853:4;15727:131;:::i;:::-;15719:139;;15446:419;;;:::o;15871:221::-;16011:34;16007:1;15999:6;15995:14;15988:58;16080:4;16075:2;16067:6;16063:15;16056:29;15871:221;:::o;16098:366::-;16240:3;16261:67;16325:2;16320:3;16261:67;:::i;:::-;16254:74;;16337:93;16426:3;16337:93;:::i;:::-;16455:2;16450:3;16446:12;16439:19;;16098:366;;;:::o;16470:419::-;16636:4;16674:2;16663:9;16659:18;16651:26;;16723:9;16717:4;16713:20;16709:1;16698:9;16694:17;16687:47;16751:131;16877:4;16751:131;:::i;:::-;16743:139;;16470:419;;;:::o;16895:410::-;16935:7;16958:20;16976:1;16958:20;:::i;:::-;16953:25;;16992:20;17010:1;16992:20;:::i;:::-;16987:25;;17047:1;17044;17040:9;17069:30;17087:11;17069:30;:::i;:::-;17058:41;;17248:1;17239:7;17235:15;17232:1;17229:22;17209:1;17202:9;17182:83;17159:139;;17278:18;;:::i;:::-;17159:139;16943:362;16895:410;;;;:::o;17311:143::-;17368:5;17399:6;17393:13;17384:22;;17415:33;17442:5;17415:33;:::i;:::-;17311:143;;;;:::o;17460:977::-;17566:6;17574;17582;17590;17598;17647:3;17635:9;17626:7;17622:23;17618:33;17615:120;;;17654:79;;:::i;:::-;17615:120;17774:1;17799:64;17855:7;17846:6;17835:9;17831:22;17799:64;:::i;:::-;17789:74;;17745:128;17912:2;17938:64;17994:7;17985:6;17974:9;17970:22;17938:64;:::i;:::-;17928:74;;17883:129;18051:2;18077:64;18133:7;18124:6;18113:9;18109:22;18077:64;:::i;:::-;18067:74;;18022:129;18190:2;18216:64;18272:7;18263:6;18252:9;18248:22;18216:64;:::i;:::-;18206:74;;18161:129;18329:3;18356:64;18412:7;18403:6;18392:9;18388:22;18356:64;:::i;:::-;18346:74;;18300:130;17460:977;;;;;;;;:::o;18443:165::-;18583:17;18579:1;18571:6;18567:14;18560:41;18443:165;:::o;18614:366::-;18756:3;18777:67;18841:2;18836:3;18777:67;:::i;:::-;18770:74;;18853:93;18942:3;18853:93;:::i;:::-;18971:2;18966:3;18962:12;18955:19;;18614:366;;;:::o;18986:419::-;19152:4;19190:2;19179:9;19175:18;19167:26;;19239:9;19233:4;19229:20;19225:1;19214:9;19210:17;19203:47;19267:131;19393:4;19267:131;:::i;:::-;19259:139;;18986:419;;;:::o;19411:224::-;19551:34;19547:1;19539:6;19535:14;19528:58;19620:7;19615:2;19607:6;19603:15;19596:32;19411:224;:::o;19641:366::-;19783:3;19804:67;19868:2;19863:3;19804:67;:::i;:::-;19797:74;;19880:93;19969:3;19880:93;:::i;:::-;19998:2;19993:3;19989:12;19982:19;;19641:366;;;:::o;20013:419::-;20179:4;20217:2;20206:9;20202:18;20194:26;;20266:9;20260:4;20256:20;20252:1;20241:9;20237:17;20230:47;20294:131;20420:4;20294:131;:::i;:::-;20286:139;;20013:419;;;:::o;20438:442::-;20587:4;20625:2;20614:9;20610:18;20602:26;;20638:71;20706:1;20695:9;20691:17;20682:6;20638:71;:::i;:::-;20719:72;20787:2;20776:9;20772:18;20763:6;20719:72;:::i;:::-;20801;20869:2;20858:9;20854:18;20845:6;20801:72;:::i;:::-;20438:442;;;;;;:::o;20886:221::-;21026:34;21022:1;21014:6;21010:14;21003:58;21095:4;21090:2;21082:6;21078:15;21071:29;20886:221;:::o;21113:366::-;21255:3;21276:67;21340:2;21335:3;21276:67;:::i;:::-;21269:74;;21352:93;21441:3;21352:93;:::i;:::-;21470:2;21465:3;21461:12;21454:19;;21113:366;;;:::o;21485:419::-;21651:4;21689:2;21678:9;21674:18;21666:26;;21738:9;21732:4;21728:20;21724:1;21713:9;21709:17;21702:47;21766:131;21892:4;21766:131;:::i;:::-;21758:139;;21485:419;;;:::o;21910:229::-;22050:34;22046:1;22038:6;22034:14;22027:58;22119:12;22114:2;22106:6;22102:15;22095:37;21910:229;:::o;22145:366::-;22287:3;22308:67;22372:2;22367:3;22308:67;:::i;:::-;22301:74;;22384:93;22473:3;22384:93;:::i;:::-;22502:2;22497:3;22493:12;22486:19;;22145:366;;;:::o;22517:419::-;22683:4;22721:2;22710:9;22706:18;22698:26;;22770:9;22764:4;22760:20;22756:1;22745:9;22741:17;22734:47;22798:131;22924:4;22798:131;:::i;:::-;22790:139;;22517:419;;;:::o;22942:225::-;23082:34;23078:1;23070:6;23066:14;23059:58;23151:8;23146:2;23138:6;23134:15;23127:33;22942:225;:::o;23173:366::-;23315:3;23336:67;23400:2;23395:3;23336:67;:::i;:::-;23329:74;;23412:93;23501:3;23412:93;:::i;:::-;23530:2;23525:3;23521:12;23514:19;;23173:366;;;:::o;23545:419::-;23711:4;23749:2;23738:9;23734:18;23726:26;;23798:9;23792:4;23788:20;23784:1;23773:9;23769:17;23762:47;23826:131;23952:4;23826:131;:::i;:::-;23818:139;;23545:419;;;:::o;23970:182::-;24110:34;24106:1;24098:6;24094:14;24087:58;23970:182;:::o;24158:366::-;24300:3;24321:67;24385:2;24380:3;24321:67;:::i;:::-;24314:74;;24397:93;24486:3;24397:93;:::i;:::-;24515:2;24510:3;24506:12;24499:19;;24158:366;;;:::o;24530:419::-;24696:4;24734:2;24723:9;24719:18;24711:26;;24783:9;24777:4;24773:20;24769:1;24758:9;24754:17;24747:47;24811:131;24937:4;24811:131;:::i;:::-;24803:139;;24530:419;;;:::o;24955:223::-;25095:34;25091:1;25083:6;25079:14;25072:58;25164:6;25159:2;25151:6;25147:15;25140:31;24955:223;:::o;25184:366::-;25326:3;25347:67;25411:2;25406:3;25347:67;:::i;:::-;25340:74;;25423:93;25512:3;25423:93;:::i;:::-;25541:2;25536:3;25532:12;25525:19;;25184:366;;;:::o;25556:419::-;25722:4;25760:2;25749:9;25745:18;25737:26;;25809:9;25803:4;25799:20;25795:1;25784:9;25780:17;25773:47;25837:131;25963:4;25837:131;:::i;:::-;25829:139;;25556:419;;;:::o;25981:221::-;26121:34;26117:1;26109:6;26105:14;26098:58;26190:4;26185:2;26177:6;26173:15;26166:29;25981:221;:::o;26208:366::-;26350:3;26371:67;26435:2;26430:3;26371:67;:::i;:::-;26364:74;;26447:93;26536:3;26447:93;:::i;:::-;26565:2;26560:3;26556:12;26549:19;;26208:366;;;:::o;26580:419::-;26746:4;26784:2;26773:9;26769:18;26761:26;;26833:9;26827:4;26823:20;26819:1;26808:9;26804:17;26797:47;26861:131;26987:4;26861:131;:::i;:::-;26853:139;;26580:419;;;:::o;27005:179::-;27145:31;27141:1;27133:6;27129:14;27122:55;27005:179;:::o;27190:366::-;27332:3;27353:67;27417:2;27412:3;27353:67;:::i;:::-;27346:74;;27429:93;27518:3;27429:93;:::i;:::-;27547:2;27542:3;27538:12;27531:19;;27190:366;;;:::o;27562:419::-;27728:4;27766:2;27755:9;27751:18;27743:26;;27815:9;27809:4;27805:20;27801:1;27790:9;27786:17;27779:47;27843:131;27969:4;27843:131;:::i;:::-;27835:139;;27562:419;;;:::o;27987:224::-;28127:34;28123:1;28115:6;28111:14;28104:58;28196:7;28191:2;28183:6;28179:15;28172:32;27987:224;:::o;28217:366::-;28359:3;28380:67;28444:2;28439:3;28380:67;:::i;:::-;28373:74;;28456:93;28545:3;28456:93;:::i;:::-;28574:2;28569:3;28565:12;28558:19;;28217:366;;;:::o;28589:419::-;28755:4;28793:2;28782:9;28778:18;28770:26;;28842:9;28836:4;28832:20;28828:1;28817:9;28813:17;28806:47;28870:131;28996:4;28870:131;:::i;:::-;28862:139;;28589:419;;;:::o;29014:222::-;29154:34;29150:1;29142:6;29138:14;29131:58;29223:5;29218:2;29210:6;29206:15;29199:30;29014:222;:::o;29242:366::-;29384:3;29405:67;29469:2;29464:3;29405:67;:::i;:::-;29398:74;;29481:93;29570:3;29481:93;:::i;:::-;29599:2;29594:3;29590:12;29583:19;;29242:366;;;:::o;29614:419::-;29780:4;29818:2;29807:9;29803:18;29795:26;;29867:9;29861:4;29857:20;29853:1;29842:9;29838:17;29831:47;29895:131;30021:4;29895:131;:::i;:::-;29887:139;;29614:419;;;:::o;30039:168::-;30179:20;30175:1;30167:6;30163:14;30156:44;30039:168;:::o;30213:366::-;30355:3;30376:67;30440:2;30435:3;30376:67;:::i;:::-;30369:74;;30452:93;30541:3;30452:93;:::i;:::-;30570:2;30565:3;30561:12;30554:19;;30213:366;;;:::o;30585:419::-;30751:4;30789:2;30778:9;30774:18;30766:26;;30838:9;30832:4;30828:20;30824:1;30813:9;30809:17;30802:47;30866:131;30992:4;30866:131;:::i;:::-;30858:139;;30585:419;;;:::o;31010:181::-;31150:33;31146:1;31138:6;31134:14;31127:57;31010:181;:::o;31197:366::-;31339:3;31360:67;31424:2;31419:3;31360:67;:::i;:::-;31353:74;;31436:93;31525:3;31436:93;:::i;:::-;31554:2;31549:3;31545:12;31538:19;;31197:366;;;:::o;31569:419::-;31735:4;31773:2;31762:9;31758:18;31750:26;;31822:9;31816:4;31812:20;31808:1;31797:9;31793:17;31786:47;31850:131;31976:4;31850:131;:::i;:::-;31842:139;;31569:419;;;:::o;31994:233::-;32033:3;32056:24;32074:5;32056:24;:::i;:::-;32047:33;;32102:66;32095:5;32092:77;32089:103;;32172:18;;:::i;:::-;32089:103;32219:1;32212:5;32208:13;32201:20;;31994:233;;;:::o;32233:180::-;32373:32;32369:1;32361:6;32357:14;32350:56;32233:180;:::o;32419:366::-;32561:3;32582:67;32646:2;32641:3;32582:67;:::i;:::-;32575:74;;32658:93;32747:3;32658:93;:::i;:::-;32776:2;32771:3;32767:12;32760:19;;32419:366;;;:::o;32791:419::-;32957:4;32995:2;32984:9;32980:18;32972:26;;33044:9;33038:4;33034:20;33030:1;33019:9;33015:17;33008:47;33072:131;33198:4;33072:131;:::i;:::-;33064:139;;32791:419;;;:::o;33216:177::-;33356:29;33352:1;33344:6;33340:14;33333:53;33216:177;:::o;33399:366::-;33541:3;33562:67;33626:2;33621:3;33562:67;:::i;:::-;33555:74;;33638:93;33727:3;33638:93;:::i;:::-;33756:2;33751:3;33747:12;33740:19;;33399:366;;;:::o;33771:419::-;33937:4;33975:2;33964:9;33960:18;33952:26;;34024:9;34018:4;34014:20;34010:1;33999:9;33995:17;33988:47;34052:131;34178:4;34052:131;:::i;:::-;34044:139;;33771:419;;;:::o;34196:180::-;34244:77;34241:1;34234:88;34341:4;34338:1;34331:15;34365:4;34362:1;34355:15;34382:185;34422:1;34439:20;34457:1;34439:20;:::i;:::-;34434:25;;34473:20;34491:1;34473:20;:::i;:::-;34468:25;;34512:1;34502:35;;34517:18;;:::i;:::-;34502:35;34559:1;34556;34552:9;34547:14;;34382:185;;;;:::o;34573:194::-;34613:4;34633:20;34651:1;34633:20;:::i;:::-;34628:25;;34667:20;34685:1;34667:20;:::i;:::-;34662:25;;34711:1;34708;34704:9;34696:17;;34735:1;34729:4;34726:11;34723:37;;;34740:18;;:::i;:::-;34723:37;34573:194;;;;:::o;34773:332::-;34894:4;34932:2;34921:9;34917:18;34909:26;;34945:71;35013:1;35002:9;34998:17;34989:6;34945:71;:::i;:::-;35026:72;35094:2;35083:9;35079:18;35070:6;35026:72;:::i;:::-;34773:332;;;;;:::o;35111:225::-;35251:34;35247:1;35239:6;35235:14;35228:58;35320:8;35315:2;35307:6;35303:15;35296:33;35111:225;:::o;35342:366::-;35484:3;35505:67;35569:2;35564:3;35505:67;:::i;:::-;35498:74;;35581:93;35670:3;35581:93;:::i;:::-;35699:2;35694:3;35690:12;35683:19;;35342:366;;;:::o;35714:419::-;35880:4;35918:2;35907:9;35903:18;35895:26;;35967:9;35961:4;35957:20;35953:1;35942:9;35938:17;35931:47;35995:131;36121:4;35995:131;:::i;:::-;35987:139;;35714:419;;;:::o;36139:147::-;36240:11;36277:3;36262:18;;36139:147;;;;:::o;36292:114::-;;:::o;36412:398::-;36571:3;36592:83;36673:1;36668:3;36592:83;:::i;:::-;36585:90;;36684:93;36773:3;36684:93;:::i;:::-;36802:1;36797:3;36793:11;36786:18;;36412:398;;;:::o;36816:379::-;37000:3;37022:147;37165:3;37022:147;:::i;:::-;37015:154;;37186:3;37179:10;;36816:379;;;:::o;37201:182::-;37341:34;37337:1;37329:6;37325:14;37318:58;37201:182;:::o;37389:366::-;37531:3;37552:67;37616:2;37611:3;37552:67;:::i;:::-;37545:74;;37628:93;37717:3;37628:93;:::i;:::-;37746:2;37741:3;37737:12;37730:19;;37389:366;;;:::o;37761:419::-;37927:4;37965:2;37954:9;37950:18;37942:26;;38014:9;38008:4;38004:20;38000:1;37989:9;37985:17;37978:47;38042:131;38168:4;38042:131;:::i;:::-;38034:139;;37761:419;;;:::o;38186:332::-;38307:4;38345:2;38334:9;38330:18;38322:26;;38358:71;38426:1;38415:9;38411:17;38402:6;38358:71;:::i;:::-;38439:72;38507:2;38496:9;38492:18;38483:6;38439:72;:::i;:::-;38186:332;;;;;:::o;38524:180::-;38572:77;38569:1;38562:88;38669:4;38666:1;38659:15;38693:4;38690:1;38683:15;38710:180;38758:77;38755:1;38748:88;38855:4;38852:1;38845:15;38879:4;38876:1;38869:15;38896:351;38966:6;39015:2;39003:9;38994:7;38990:23;38986:32;38983:119;;;39021:79;;:::i;:::-;38983:119;39141:1;39166:64;39222:7;39213:6;39202:9;39198:22;39166:64;:::i;:::-;39156:74;;39112:128;38896:351;;;;:::o;39253:85::-;39298:7;39327:5;39316:16;;39253:85;;;:::o;39344:158::-;39402:9;39435:61;39453:42;39462:32;39488:5;39462:32;:::i;:::-;39453:42;:::i;:::-;39435:61;:::i;:::-;39422:74;;39344:158;;;:::o;39508:147::-;39603:45;39642:5;39603:45;:::i;:::-;39598:3;39591:58;39508:147;;:::o;39661:114::-;39728:6;39762:5;39756:12;39746:22;;39661:114;;;:::o;39781:184::-;39880:11;39914:6;39909:3;39902:19;39954:4;39949:3;39945:14;39930:29;;39781:184;;;;:::o;39971:132::-;40038:4;40061:3;40053:11;;40091:4;40086:3;40082:14;40074:22;;39971:132;;;:::o;40109:108::-;40186:24;40204:5;40186:24;:::i;:::-;40181:3;40174:37;40109:108;;:::o;40223:179::-;40292:10;40313:46;40355:3;40347:6;40313:46;:::i;:::-;40391:4;40386:3;40382:14;40368:28;;40223:179;;;;:::o;40408:113::-;40478:4;40510;40505:3;40501:14;40493:22;;40408:113;;;:::o;40557:732::-;40676:3;40705:54;40753:5;40705:54;:::i;:::-;40775:86;40854:6;40849:3;40775:86;:::i;:::-;40768:93;;40885:56;40935:5;40885:56;:::i;:::-;40964:7;40995:1;40980:284;41005:6;41002:1;40999:13;40980:284;;;41081:6;41075:13;41108:63;41167:3;41152:13;41108:63;:::i;:::-;41101:70;;41194:60;41247:6;41194:60;:::i;:::-;41184:70;;41040:224;41027:1;41024;41020:9;41015:14;;40980:284;;;40984:14;41280:3;41273:10;;40681:608;;;40557:732;;;;:::o;41295:831::-;41558:4;41596:3;41585:9;41581:19;41573:27;;41610:71;41678:1;41667:9;41663:17;41654:6;41610:71;:::i;:::-;41691:80;41767:2;41756:9;41752:18;41743:6;41691:80;:::i;:::-;41818:9;41812:4;41808:20;41803:2;41792:9;41788:18;41781:48;41846:108;41949:4;41940:6;41846:108;:::i;:::-;41838:116;;41964:72;42032:2;42021:9;42017:18;42008:6;41964:72;:::i;:::-;42046:73;42114:3;42103:9;42099:19;42090:6;42046:73;:::i;:::-;41295:831;;;;;;;;:::o;42132:807::-;42381:4;42419:3;42408:9;42404:19;42396:27;;42433:71;42501:1;42490:9;42486:17;42477:6;42433:71;:::i;:::-;42514:72;42582:2;42571:9;42567:18;42558:6;42514:72;:::i;:::-;42596:80;42672:2;42661:9;42657:18;42648:6;42596:80;:::i;:::-;42686;42762:2;42751:9;42747:18;42738:6;42686:80;:::i;:::-;42776:73;42844:3;42833:9;42829:19;42820:6;42776:73;:::i;:::-;42859;42927:3;42916:9;42912:19;42903:6;42859:73;:::i;:::-;42132:807;;;;;;;;;:::o;42945:663::-;43033:6;43041;43049;43098:2;43086:9;43077:7;43073:23;43069:32;43066:119;;;43104:79;;:::i;:::-;43066:119;43224:1;43249:64;43305:7;43296:6;43285:9;43281:22;43249:64;:::i;:::-;43239:74;;43195:128;43362:2;43388:64;43444:7;43435:6;43424:9;43420:22;43388:64;:::i;:::-;43378:74;;43333:129;43501:2;43527:64;43583:7;43574:6;43563:9;43559:22;43527:64;:::i;:::-;43517:74;;43472:129;42945:663;;;;;:::o

Swarm Source

ipfs://01e5daa08200efe4a66bb0ff4013ff5ca7d2063d18ef3b83520d650762ff057e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.