ETH Price: $2,477.56 (-7.80%)

Token

Katza (KTZ)
 

Overview

Max Total Supply

1,000,000,000,000 KTZ

Holders

35

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
KatzaProject

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-21
*/

// File: interfaces/IUniswapV2Factory.sol


pragma solidity ^0.8.0;

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

// File: interfaces/IUniswapV2Router02.sol


pragma solidity ^0.8.0;

// only necessary functions
interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
}

// File: interfaces/IERC20SwapTax.sol


pragma solidity ^0.8.20;

//
// === fees ===
// Generally, taxes on tokens are used for either
//   1) paying the team
//   2) revenue share
//   3) adding to liquidity
// So i decided to give deployers these three options. Project also occasionally
// burn tokens from taxes, but I didn't feel that was essential functionality.
//
// === limits and blacklists ===
// Due to the nature of the token's reliance on the v2Router and its own liquidity,
// it's natural that contract owners might want more granular control over
// actions that could potentially harm the LP. The contract gives owners the option
// to activate:
//   - limits on maxTransaction sizes and maxWallet sizes
//   - blacklist that restricts swaps and transfers
//

/// @title ERC20 Swap Tax Interface
/// @notice An ERC20 Swap Tax token takes a fee from all token swaps
interface IERC20SwapTax {

    // immutables

    /// @notice The main v2 router address
    function v2Router() external view returns (address);
    /// @notice The main v2 pair address
    function v2Pair() external view returns (address);
    /// @notice The initial token supply
    function initialSupply() external view returns (uint256);

    // fees

    /// @notice The total tax taken on swaps in percent
    function totalSwapFee() external view returns (uint8);
    /// @notice The protocol tax allocation in percent
    function protocolFee() external view returns (uint8);
    /// @notice The liquidity pool tax allocation in percent
    function liquidityFee() external view returns (uint8);
    /// @notice The team tax allocation in percent
    function teamFee() external view returns (uint8);
    /// @notice The address to collect the team fee
    function teamWallet() external view returns (address);
    /// @notice The address to collect the protocol fee
    function protocolWallet() external view returns (address);

    // params

    /// @notice The minimum amount of token that the contract will swap
    function swapThreshold() external view returns (uint128);
    /// @notice The maximum amount of token that the contract will swap
    function maxContractSwap() external view returns (uint128);
    /// @notice If limits are active, the max swap amount
    function maxTransaction() external view returns (uint128);
    /// @notice If limits are active, the max wallet size
    function maxWallet() external view returns (uint128);

    // state

    /// @notice If limits are active
    function limitsActive() external view returns (bool);
    /// @notice If the blacklist is active
    function blacklistActive() external view returns (bool);
    /// @notice If trading through the v2Pair is enabled
    function tradingEnabled() external view returns (bool);
    /// @notice If the contract is allowed to swap
    function contractSwapEnabled() external view returns (bool);

    // addresses

    /// @notice Is the address an automated market-maker pair
    function isAmm(address) external view returns (bool);
    /// @notice Is the address excluded from tax fees
    function isExcludedFromFees(address) external view returns (bool);
    /// @notice Is the address blacklisted
    function isBlacklisted(address) external view returns (bool);
    /// @notice Is the address excluded from limits
    function isExcludedFromLimits(address) external view returns (bool);

    // events
    event AmmUpdated(address indexed account, bool isAmm);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event TeamWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event ProtocolWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SwapAndAdd(uint256 tokensSwapped, uint256 ethToLp, uint256 tokenToLp);
}

// File: dependencies/Context.sol


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

// File: dependencies/Ownable.sol


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

// File: interfaces/IERC20Permit.sol


pragma solidity ^0.8.0;

interface IERC20Permit {
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function nonces(address owner) external view returns (uint256);

    // solhint-disable-next-line func-name-mixedcase
    function DOMAIN_SEPARATOR() external view returns (bytes32);
}

// File: interfaces/IERC20.sol


pragma solidity ^0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: dependencies/ERC20.sol


pragma solidity >=0.8.0;



// Same as Solmate ERC20 with a virtual internal _transfer()

/// @title Lightweight ERC20
/// @notice A gas-efficient ERC20Permit contract
/// @dev Ensure to always update totalSupply with balance
abstract contract ERC20 is IERC20, IERC20Permit {
    string public name;
    string public symbol;
    uint8 public immutable decimals;

    uint256 public totalSupply;
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    uint256 internal immutable INITIAL_CHAIN_ID;
    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;
    mapping(address => uint256) public nonces;

    constructor(string memory _name, string memory _symbol, uint8 _decimals) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

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

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        _transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(address from, address to, uint256 amount) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        _transfer(from, to, amount);

        return true;
    }

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

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

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

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

// File: libraries/Math.sol


pragma solidity ^0.8.20;

// helpful pure math functions
library Math {
    uint256 internal constant MAX_UINT256 = 2 ** 256 - 1;

    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 z) {
        /// @solidity memory-safe-assembly
        assembly {
            // Equivalent to require(denominator != 0 && (y == 0 || x <= type(uint256).max / y))
            if iszero(mul(denominator, iszero(mul(y, gt(x, div(MAX_UINT256, y)))))) {
                revert(0, 0)
            }

            // Divide x * y by the denominator.
            z := div(mul(x, y), denominator)
        }
    }
}

// File: katza_x.sol



// Katza Project.
// https://t.me/katzaproject
// https://twitter.com/katzaproject
// https://katza.world

pragma solidity ^0.8.20;







contract KatzaProject is ERC20, IERC20SwapTax, Ownable {
    using Math for uint256;

    function MAX_TAX() public pure virtual returns (uint8) {
        return 5;
    }

    uint256 public immutable override initialSupply;

    address public immutable override v2Router;
    address public immutable override v2Pair;

    address public override protocolWallet;
    address public override teamWallet;

    bool public override tradingEnabled;
    bool public override contractSwapEnabled;

    bool public override limitsActive;
    bool public override blacklistActive;

    uint8 public override totalSwapFee;
    uint8 public override protocolFee;
    uint8 public override liquidityFee;
    uint8 public override teamFee;

    mapping(address => bool) public override isAmm;
    mapping(address => bool) public override isBlacklisted;
    mapping(address => bool) public override isExcludedFromFees;
    mapping(address => bool) public override isExcludedFromLimits;

    uint128 public override swapThreshold;
    uint128 public override maxContractSwap;
    uint128 public override maxTransaction;
    uint128 public override maxWallet;

    bool private _swapping;
    address internal immutable WETH;
    address internal constant DEAD = address(0xdEaD);

    receive() external payable {}

    constructor(
        string memory _name,
        string memory _symbol,
        uint256 _initialSupply,
        address _v2Router,
        address _protocolWallet,
        uint8 _protocolFee,
        uint8 _liquidityFee,
        uint8 _teamFee,
        bool _limitsActive,
        bool _blacklistActive
    ) ERC20(_name, _symbol, 18) {
        initialSupply = _initialSupply;

        protocolWallet = _protocolWallet;
        teamWallet = owner();

        limitsActive = _limitsActive;
        blacklistActive = _blacklistActive;

        updateFees(_protocolFee, _liquidityFee, _teamFee);

        v2Router = _v2Router;
        WETH = IUniswapV2Router02(v2Router).WETH();
        v2Pair = IUniswapV2Factory(IUniswapV2Router02(v2Router).factory()).createPair(address(this), WETH);

    
        swapThreshold   = uint128(initialSupply.mulDiv(25  , 10_000));
        maxContractSwap = uint128(initialSupply.mulDiv(50 , 10_000));
        maxTransaction  = uint128(initialSupply.mulDiv(500, 10_000));
        maxWallet       = uint128(initialSupply.mulDiv(500, 10_000));

        updateAmm(v2Pair, true);

        excludeFromLimits(address(this), true);
        excludeFromLimits(owner(), true);
        excludeFromLimits(v2Router, true);
        excludeFromLimits(v2Pair, true);
        excludeFromLimits(DEAD, true);

        excludeFromFees(address(this), true);
        excludeFromFees(owner(), true);
        excludeFromFees(DEAD, true);

        allowance[address(this)][v2Router] = type(uint256).max;
        emit Approval(address(this), v2Router, type(uint256).max);

        _mint(owner(), initialSupply);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        if (blacklistActive) require(!(isBlacklisted[from] || isBlacklisted[to]), "BL");
        if (limitsActive) _checkLimits(from, to, amount);

        bool excluded = isExcludedFromFees[from] || isExcludedFromFees[to];
        uint8 _swapFee = totalSwapFee;

        if (excluded || _swapFee == 0 || amount == 0) {
            // no fees or excluded -> process transfer normally
            super._transfer(from, to, amount);
            return;
        }

        // if currently swapping exclude from all fees
        excluded = _swapping;

        bool isBuy = isAmm[from];

        if (isBuy || excluded || !contractSwapEnabled || balanceOf[address(this)] < swapThreshold) {
            // ...
        } else {
            _swapping = true;
            _swapBack();
            _swapping = false;
        }


        balanceOf[from] -= amount;
        uint256 fee = 0;

        if ((isBuy || isAmm[to]) && !excluded) {
            fee = amount.mulDiv(_swapFee, 100);

            unchecked {
                balanceOf[address(this)] += fee;
            }
            emit Transfer(from, address(this), fee);
        }

        unchecked {
            balanceOf[to] += (amount - fee);
        }
        emit Transfer(from, to, amount - fee);
    }

    function _checkLimits(address from, address to, uint256 amount) internal view {
        if (from == owner() || to == owner() || to == DEAD || _swapping) return;

        if (!tradingEnabled) {
            require(isExcludedFromFees[from] || isExcludedFromFees[to], "TC");
        }
        // buy
        if (isAmm[from] && !isExcludedFromLimits[to]) {
            require(amount <= maxTransaction, "MAX_TX");
            require(amount + balanceOf[to] <= maxWallet, "MAX_WALLET");
        }
        // sell
        else if (isAmm[to] && !isExcludedFromLimits[from]) {
            require(amount <= maxTransaction, "MAX_TX");
        }
        // transfer
        else if (!isExcludedFromLimits[to]) {
            require(amount + balanceOf[to] <= maxWallet, "MAX_WALLET");
        }
    }

    /// @dev Swap contract balance to ETH if over the threshold
    function _swapBack() private {
        uint256 balance = balanceOf[address(this)];

        if (balance == 0) return;
        if (balance > maxContractSwap) balance = maxContractSwap;

        uint256 protocolTokens = balance.mulDiv(protocolFee, totalSwapFee);
        uint256 teamTokens = balance.mulDiv(teamFee, totalSwapFee);

        // half the remaining tokens are for liquidity
        uint256 liquidityTokens = (balance - protocolTokens - teamTokens) / 2;
        uint256 swapTokens = balance - liquidityTokens;

        uint256 ethBalance = address(this).balance;

        _swapTokensForEth(swapTokens);

        ethBalance = address(this).balance - ethBalance;

        uint256 ethForTeam = ethBalance.mulDiv(teamTokens, swapTokens);
        uint256 ethForLiquidity = ethBalance - ethForTeam - ethBalance.mulDiv(protocolTokens, swapTokens);

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            _addLiquidity(liquidityTokens, ethForLiquidity);

            emit SwapAndAdd(swapTokens, ethForLiquidity, liquidityTokens);
        }

        // don't verify the call so transfers out can fail
        (bool success, ) = teamWallet.call{value: ethForTeam}("");
        (success, ) = protocolWallet.call{value: address(this).balance}("");
    }

    /// @dev Perform a v2 swap for ETH
    function _swapTokensForEth(uint256 amount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        IUniswapV2Router02(v2Router).swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    /// @dev Add v2 liquidity
    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        IUniswapV2Router02(v2Router).addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    /// @dev Once trading is active, can never be inactive
    function enableTrading() external onlyOwner {
        tradingEnabled = true;
        contractSwapEnabled = true;
    }

    /// @dev Update the threshold for contract swaps
    function updateSwapThreshold(uint128 newThreshold) external onlyOwner {
        require(newThreshold >= totalSupply.mulDiv(1, 1_000_000), "BST"); // >= 0.0001%
        require(newThreshold <= totalSupply.mulDiv(5, 10_000), "BST"); // <= 0.05%
        swapThreshold = newThreshold;
    }

    /// @dev Update the max contract swap
    function updateMaxContractSwap(uint128 newMaxSwap) external onlyOwner {
        require(newMaxSwap >= totalSupply.mulDiv(1, 100_000), "BMS"); // >= 0.001%
        require(newMaxSwap <= totalSupply.mulDiv(50, 10_000), "BMS"); // <= 0.5%
        maxContractSwap = newMaxSwap;
    }

    /// @dev Update the max transaction while limits are in effect
    function updateMaxTransaction(uint128 newMaxTx) external onlyOwner {
        require(newMaxTx >= totalSupply.mulDiv(50, 10_000), "BMT"); // >= 0.5%
        maxTransaction = newMaxTx;
    }

    /// @dev Update the max wallet while limits are in effect
    function updateMaxWallet(uint128 newMaxWallet) external onlyOwner {
        require(newMaxWallet >= totalSupply.mulDiv(100, 10_000), "BMW"); // >= 1%
        maxWallet = newMaxWallet;
    }

    /// @dev Emergency disabling of contract sales
    function updateContractSwapEnabled(bool enabled) external onlyOwner {
        contractSwapEnabled = enabled;
    }

    /// @dev Update the swap fees
    function updateFees(uint8 _protocolFee, uint8 _liquidityFee, uint8 _teamFee) public onlyOwner {
        require(_protocolFee + _liquidityFee + _teamFee <= MAX_TAX(), "BF");
        totalSwapFee = _protocolFee + _liquidityFee + _teamFee;
        protocolFee = _protocolFee;
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
    }

    /// @dev Exclude account from the limited max transaction size
    function excludeFromLimits(address account, bool excluded) public onlyOwner {
        isExcludedFromLimits[account] = excluded;
    }

    /// @dev Exclude account from all fees
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    /// @dev Designate address as an AMM pair to process fees
    function updateAmm(address account, bool amm) public onlyOwner {
        if (!amm) require(account != v2Pair, "FP");
        isAmm[account] = amm;
        emit AmmUpdated(account, amm);
    }

    /// @dev Update the protocol wallet
    function updateProtocolWallet(address newWallet) external onlyOwner {
        emit ProtocolWalletUpdated(newWallet, protocolWallet);
        protocolWallet = newWallet;
    }

    /// @dev Update the team wallet
    function updateTeamWallet(address newWallet) external onlyOwner {
        emit TeamWalletUpdated(newWallet, teamWallet);
        teamWallet = newWallet;
    }

    /// @dev Withdraw token stuck in the contract
    function sweepToken(address token, address to) external onlyOwner {
        require(token != address(0), "ZA");
        ERC20(token).transfer(to, ERC20(token).balanceOf(address(this)));
    }

    /// @dev Withdraw eth stuck in the contract
    function sweepEth(address to) external onlyOwner {
        (bool success, ) = to.call{value: address(this).balance}("");
        require(success, "TF");
    }

    /// @dev Blacklist an account
    function blacklist(address account) public onlyOwner {
        require(blacklistActive, "RK");
        require(account != address(v2Pair), "BLU");
        require(account != address(v2Router), "BLU");
        isBlacklisted[account] = true;
    }

    /// @dev Remove an account from the blacklist
    function unblacklist(address account) public onlyOwner {
        isBlacklisted[account] = false;
    }

    /// @dev Irreversible action, limits can never be reinstated
    function deactivateLimits() external onlyOwner {
        limitsActive = false;
    }

    /// @dev Renounce blacklist authority
    function deactivateBlacklist() public onlyOwner {
        blacklistActive = false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_initialSupply","type":"uint256"},{"internalType":"address","name":"_v2Router","type":"address"},{"internalType":"address","name":"_protocolWallet","type":"address"},{"internalType":"uint8","name":"_protocolFee","type":"uint8"},{"internalType":"uint8","name":"_liquidityFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","type":"uint8"},{"internalType":"bool","name":"_limitsActive","type":"bool"},{"internalType":"bool","name":"_blacklistActive","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isAmm","type":"bool"}],"name":"AmmUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"ProtocolWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethToLp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenToLp","type":"uint256"}],"name":"SwapAndAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"TeamWalletUpdated","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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TAX","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blacklistActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deactivateBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deactivateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAmm","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxContractSwap","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"protocolFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"sweepEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSwapFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"address","name":"account","type":"address"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"amm","type":"bool"}],"name":"updateAmm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_protocolFee","type":"uint8"},{"internalType":"uint8","name":"_liquidityFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","type":"uint8"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newMaxSwap","type":"uint128"}],"name":"updateMaxContractSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newMaxTx","type":"uint128"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newMaxWallet","type":"uint128"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateProtocolWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newThreshold","type":"uint128"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"v2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"v2Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

61016060405234801562000011575f80fd5b506040516200654f3803806200654f833981810160405281019062000037919062001034565b89896012825f90816200004b919062001390565b5081600190816200005d919062001390565b508060ff1660808160ff16815250504660a08181525050620000846200071460201b60201c565b60c08181525050505050620000ae620000a2620007a260201b60201c565b620007a960201b60201c565b8760e081815250508560075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001066200086c60201b60201c565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860166101000a81548160ff02191690831515021790555080600860176101000a81548160ff0219169083151502179055506200018c8585856200089460201b60201c565b8673ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff16815250506101005173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000234919062001474565b73ffffffffffffffffffffffffffffffffffffffff166101408173ffffffffffffffffffffffffffffffffffffffff16815250506101005173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002db919062001474565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630610140516040518363ffffffff1660e01b81526004016200031a929190620014b5565b6020604051808303815f875af115801562000337573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200035d919062001474565b73ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1681525050620003ad601961271060e051620009a460201b9092919060201c565b600d5f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555062000400603261271060e051620009a460201b9092919060201c565b600d60106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550620004556101f461271060e051620009a460201b9092919060201c565b600e5f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550620004a96101f461271060e051620009a460201b9092919060201c565b600e60106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550620004f7610120516001620009e660201b60201c565b6200050a30600162000b1960201b60201c565b6200052c6200051e6200086c60201b60201c565b600162000b1960201b60201c565b6200054261010051600162000b1960201b60201c565b6200055861012051600162000b1960201b60201c565b6200056d61dead600162000b1960201b60201c565b6200058030600162000b8160201b60201c565b620005a2620005946200086c60201b60201c565b600162000b8160201b60201c565b620005b761dead600162000b8160201b60201c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101005173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506101005173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051620006d99190620014f1565b60405180910390a362000704620006f56200086c60201b60201c565b60e05162000c3960201b60201c565b5050505050505050505062001869565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051620007469190620015b4565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6463060405160200162000787959493929190620015e6565b60405160208183030381529060405280519060200120905090565b5f33905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008a462000d0860201b60201c565b620008b462000d9960201b60201c565b60ff16818385620008c691906200166e565b620008d291906200166e565b60ff16111562000919576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009109062001707565b60405180910390fd5b8082846200092891906200166e565b6200093491906200166e565b600860186101000a81548160ff021916908360ff16021790555082600860196101000a81548160ff021916908360ff160217905550816008601a6101000a81548160ff021916908360ff160217905550806008601b6101000a81548160ff021916908360ff160217905550505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202620009d8575f80fd5b818385020490509392505050565b620009f662000d0860201b60201c565b8062000a71576101205173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a679062001775565b60405180910390fd5b5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fded66940080eeef381b30acdc39232adad6bed5b81ff16af8e2f54b970584e2e8260405162000b0d9190620017a6565b60405180910390a25050565b62000b2962000d0860201b60201c565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b62000b9162000d0860201b60201c565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000c2d9190620017a6565b60405180910390a25050565b8060025f82825462000c4c9190620017c1565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000cfc9190620014f1565b60405180910390a35050565b62000d18620007a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000d3e6200086c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d8e9062001849565b60405180910390fd5b565b5f6005905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000e028262000dba565b810181811067ffffffffffffffff8211171562000e245762000e2362000dca565b5b80604052505050565b5f62000e3862000da1565b905062000e46828262000df7565b919050565b5f67ffffffffffffffff82111562000e685762000e6762000dca565b5b62000e738262000dba565b9050602081019050919050565b5f5b8381101562000e9f57808201518184015260208101905062000e82565b5f8484015250505050565b5f62000ec062000eba8462000e4b565b62000e2d565b90508281526020810184848401111562000edf5762000ede62000db6565b5b62000eec84828562000e80565b509392505050565b5f82601f83011262000f0b5762000f0a62000db2565b5b815162000f1d84826020860162000eaa565b91505092915050565b5f819050919050565b62000f3a8162000f26565b811462000f45575f80fd5b50565b5f8151905062000f588162000f2f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000f898262000f5e565b9050919050565b62000f9b8162000f7d565b811462000fa6575f80fd5b50565b5f8151905062000fb98162000f90565b92915050565b5f60ff82169050919050565b62000fd68162000fbf565b811462000fe1575f80fd5b50565b5f8151905062000ff48162000fcb565b92915050565b5f8115159050919050565b620010108162000ffa565b81146200101b575f80fd5b50565b5f815190506200102e8162001005565b92915050565b5f805f805f805f805f806101408b8d03121562001056576200105562000daa565b5b5f8b015167ffffffffffffffff81111562001076576200107562000dae565b5b620010848d828e0162000ef4565b9a505060208b015167ffffffffffffffff811115620010a857620010a762000dae565b5b620010b68d828e0162000ef4565b9950506040620010c98d828e0162000f48565b9850506060620010dc8d828e0162000fa9565b9750506080620010ef8d828e0162000fa9565b96505060a0620011028d828e0162000fe4565b95505060c0620011158d828e0162000fe4565b94505060e0620011288d828e0162000fe4565b9350506101006200113c8d828e016200101e565b925050610120620011508d828e016200101e565b9150509295989b9194979a5092959850565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620011b157607f821691505b602082108103620011c757620011c66200116c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200122b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620011ee565b620012378683620011ee565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62001278620012726200126c8462000f26565b6200124f565b62000f26565b9050919050565b5f819050919050565b620012938362001258565b620012ab620012a2826200127f565b848454620011fa565b825550505050565b5f90565b620012c1620012b3565b620012ce81848462001288565b505050565b5b81811015620012f557620012e95f82620012b7565b600181019050620012d4565b5050565b601f82111562001344576200130e81620011cd565b6200131984620011df565b8101602085101562001329578190505b620013416200133885620011df565b830182620012d3565b50505b505050565b5f82821c905092915050565b5f620013665f198460080262001349565b1980831691505092915050565b5f62001380838362001355565b9150826002028217905092915050565b6200139b8262001162565b67ffffffffffffffff811115620013b757620013b662000dca565b5b620013c3825462001199565b620013d0828285620012f9565b5f60209050601f83116001811462001406575f8415620013f1578287015190505b620013fd858262001373565b8655506200146c565b601f1984166200141686620011cd565b5f5b828110156200143f5784890151825560018201915060208501945060208101905062001418565b868310156200145f57848901516200145b601f89168262001355565b8355505b6001600288020188555050505b505050505050565b5f602082840312156200148c576200148b62000daa565b5b5f6200149b8482850162000fa9565b91505092915050565b620014af8162000f7d565b82525050565b5f604082019050620014ca5f830185620014a4565b620014d96020830184620014a4565b9392505050565b620014eb8162000f26565b82525050565b5f602082019050620015065f830184620014e0565b92915050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f8154620015368162001199565b6200154281866200150c565b9450600182165f81146200155f57600181146200157557620015ab565b60ff1983168652811515820286019350620015ab565b620015808562001516565b5f5b83811015620015a35781548189015260018201915060208101905062001582565b838801955050505b50505092915050565b5f620015c1828462001528565b915081905092915050565b5f819050919050565b620015e081620015cc565b82525050565b5f60a082019050620015fb5f830188620015d5565b6200160a6020830187620015d5565b620016196040830186620015d5565b620016286060830185620014e0565b620016376080830184620014a4565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200167a8262000fbf565b9150620016878362000fbf565b9250828201905060ff811115620016a357620016a262001641565b5b92915050565b5f82825260208201905092915050565b7f42460000000000000000000000000000000000000000000000000000000000005f82015250565b5f620016ef600283620016a9565b9150620016fc82620016b9565b602082019050919050565b5f6020820190508181035f8301526200172081620016e1565b9050919050565b7f46500000000000000000000000000000000000000000000000000000000000005f82015250565b5f6200175d600283620016a9565b91506200176a8262001727565b602082019050919050565b5f6020820190508181035f8301526200178e816200174f565b9050919050565b620017a08162000ffa565b82525050565b5f602082019050620017bb5f83018462001795565b92915050565b5f620017cd8262000f26565b9150620017da8362000f26565b9250828201905080821115620017f557620017f462001641565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62001831602083620016a9565b91506200183e82620017fb565b602082019050919050565b5f6020820190508181035f830152620018628162001823565b9050919050565b60805160a05160c05160e051610100516101205161014051614c71620018de5f395f61365201525f8181610cc90152818161127e01526120f001525f8181611df70152818161217e015281816136c1015261375301525f6111f901525f6111d201525f61119e01525f6111790152614c715ff3fe608060405260043610610353575f3560e01c80638da5cb5b116101c5578063dd62ed3e116100f6578063f8b45b0511610094578063fdb78c0e1161006e578063fdb78c0e14610bf0578063fddfc63c14610c1a578063fe575a8714610c42578063fe7746af14610c7e5761035a565b8063f8b45b0514610b62578063f98b426214610b8c578063f9f92be414610bc85761035a565b8063e308a099116100d0578063e308a09914610ad4578063ee05081014610afc578063f044b41014610b24578063f2fde38b14610b3a5761035a565b8063dd62ed3e14610a44578063deadbc1414610a80578063e2c8031d14610aaa5761035a565b8063b0e21e8a11610163578063c0a904a21161013d578063c0a904a2146109a0578063c3f70b52146109c8578063d505accf146109f2578063d7c94efd14610a1a5761035a565b8063b0e21e8a14610924578063b6e6fcf61461094e578063c0246668146109785761035a565b80639bf578ba1161019f5780639bf578ba1461086e5780639fc747c314610898578063a9059cbb146108c0578063aa85decc146108fc5761035a565b80638da5cb5b146107f057806395d89b411461081a57806398118cb4146108445761035a565b80634ada218b1161029f57806370a082311161023d5780637cb332bb116102175780637cb332bb1461074c5780637ecebe001461077457806386a35f25146107b05780638a8c523c146107da5761035a565b806370a08231146106d2578063715018a61461070e57806375e3661e146107245761035a565b80635476b2a0116102795780635476b2a01461061c57806359927044146106445780635cce86cd1461066e578063638cb6af146106aa5761035a565b80634ada218b146105a05780634fbee193146105ca57806352bcec39146106065761035a565b80631cce34ee1161030c578063258836fe116102e6578063258836fe146104fa578063313ce567146105225780633644e5151461054c578063378dc3dc146105765761035a565b80631cce34ee1461046c57806323b872dd14610496578063246a05b0146104d25761035a565b80630445b6671461035e578063056939da1461038857806306d6e63f146103b257806306fdde03146103dc578063095ea7b31461040657806318160ddd146104425761035a565b3661035a57005b5f80fd5b348015610369575f80fd5b50610372610ca6565b60405161037f919061382e565b60405180910390f35b348015610393575f80fd5b5061039c610cc7565b6040516103a99190613886565b60405180910390f35b3480156103bd575f80fd5b506103c6610ceb565b6040516103d39190613886565b60405180910390f35b3480156103e7575f80fd5b506103f0610d10565b6040516103fd9190613929565b60405180910390f35b348015610411575f80fd5b5061042c600480360381019061042791906139aa565b610d9b565b6040516104399190613a02565b60405180910390f35b34801561044d575f80fd5b50610456610e88565b6040516104639190613a2a565b60405180910390f35b348015610477575f80fd5b50610480610e8e565b60405161048d9190613a02565b60405180910390f35b3480156104a1575f80fd5b506104bc60048036038101906104b79190613a43565b610ea1565b6040516104c99190613a02565b60405180910390f35b3480156104dd575f80fd5b506104f860048036038101906104f39190613abd565b610fe5565b005b348015610505575f80fd5b50610520600480360381019061051b9190613ae8565b61100a565b005b34801561052d575f80fd5b50610536611177565b6040516105439190613b41565b60405180910390f35b348015610557575f80fd5b5061056061119b565b60405161056d9190613b72565b60405180910390f35b348015610581575f80fd5b5061058a6111f7565b6040516105979190613a2a565b60405180910390f35b3480156105ab575f80fd5b506105b461121b565b6040516105c19190613a02565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb9190613b8b565b61122e565b6040516105fd9190613a02565b60405180910390f35b348015610611575f80fd5b5061061a61124b565b005b348015610627575f80fd5b50610642600480360381019061063d9190613bb6565b61126f565b005b34801561064f575f80fd5b506106586113b1565b6040516106659190613886565b60405180910390f35b348015610679575f80fd5b50610694600480360381019061068f9190613b8b565b6113d6565b6040516106a19190613a02565b60405180910390f35b3480156106b5575f80fd5b506106d060048036038101906106cb9190613c1e565b6113f3565b005b3480156106dd575f80fd5b506106f860048036038101906106f39190613b8b565b6114a5565b6040516107059190613a2a565b60405180910390f35b348015610719575f80fd5b506107226114ba565b005b34801561072f575f80fd5b5061074a60048036038101906107459190613b8b565b6114cd565b005b348015610757575f80fd5b50610772600480360381019061076d9190613b8b565b61152c565b005b34801561077f575f80fd5b5061079a60048036038101906107959190613b8b565b6115f2565b6040516107a79190613a2a565b60405180910390f35b3480156107bb575f80fd5b506107c4611607565b6040516107d19190613b41565b60405180910390f35b3480156107e5575f80fd5b506107ee61160f565b005b3480156107fb575f80fd5b5061080461164f565b6040516108119190613886565b60405180910390f35b348015610825575f80fd5b5061082e611677565b60405161083b9190613929565b60405180910390f35b34801561084f575f80fd5b50610858611703565b6040516108659190613b41565b60405180910390f35b348015610879575f80fd5b50610882611716565b60405161088f9190613b41565b60405180910390f35b3480156108a3575f80fd5b506108be60048036038101906108b99190613c1e565b611729565b005b3480156108cb575f80fd5b506108e660048036038101906108e191906139aa565b611849565b6040516108f39190613a02565b60405180910390f35b348015610907575f80fd5b50610922600480360381019061091d9190613c1e565b61185f565b005b34801561092f575f80fd5b50610938611980565b6040516109459190613b41565b60405180910390f35b348015610959575f80fd5b50610962611993565b60405161096f9190613a02565b60405180910390f35b348015610983575f80fd5b5061099e60048036038101906109999190613bb6565b6119a6565b005b3480156109ab575f80fd5b506109c660048036038101906109c19190613bb6565b611a54565b005b3480156109d3575f80fd5b506109dc611ab4565b6040516109e9919061382e565b60405180910390f35b3480156109fd575f80fd5b50610a186004803603810190610a139190613c9d565b611ad5565b005b348015610a25575f80fd5b50610a2e611dc2565b604051610a3b9190613b41565b60405180910390f35b348015610a4f575f80fd5b50610a6a6004803603810190610a659190613ae8565b611dd5565b604051610a779190613a2a565b60405180910390f35b348015610a8b575f80fd5b50610a94611df5565b604051610aa19190613886565b60405180910390f35b348015610ab5575f80fd5b50610abe611e19565b604051610acb919061382e565b60405180910390f35b348015610adf575f80fd5b50610afa6004803603810190610af59190613b8b565b611e3b565b005b348015610b07575f80fd5b50610b226004803603810190610b1d9190613c1e565b611f01565b005b348015610b2f575f80fd5b50610b38611fb2565b005b348015610b45575f80fd5b50610b606004803603810190610b5b9190613b8b565b611fd6565b005b348015610b6d575f80fd5b50610b76612058565b604051610b83919061382e565b60405180910390f35b348015610b97575f80fd5b50610bb26004803603810190610bad9190613b8b565b61207a565b604051610bbf9190613a02565b60405180910390f35b348015610bd3575f80fd5b50610bee6004803603810190610be99190613b8b565b612097565b005b348015610bfb575f80fd5b50610c04612262565b604051610c119190613a02565b60405180910390f35b348015610c25575f80fd5b50610c406004803603810190610c3b9190613d3a565b612275565b005b348015610c4d575f80fd5b50610c686004803603810190610c639190613b8b565b61236a565b604051610c759190613a02565b60405180910390f35b348015610c89575f80fd5b50610ca46004803603810190610c9f9190613b8b565b612387565b005b600d5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054610d1c90613db7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4890613db7565b8015610d935780601f10610d6a57610100808354040283529160200191610d93565b820191905f5260205f20905b815481529060010190602001808311610d7657829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e769190613a2a565b60405180910390a36001905092915050565b60025481565b600860169054906101000a900460ff1681565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fce578281610f519190613e14565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610fd985858561243b565b60019150509392505050565b610fed6129a8565b80600860156101000a81548160ff02191690831515021790555050565b6110126129a8565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107790613e91565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110d69190613886565b602060405180830381865afa1580156110f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111159190613ec3565b6040518363ffffffff1660e01b8152600401611132929190613eee565b6020604051808303815f875af115801561114e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111729190613f29565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f000000000000000000000000000000000000000000000000000000000000000046146111d0576111cb612a26565b6111f2565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600860149054906101000a900460ff1681565b600b602052805f5260405f205f915054906101000a900460ff1681565b6112536129a8565b5f600860176101000a81548160ff021916908315150217905550565b6112776129a8565b8061130b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190613f9e565b60405180910390fd5b5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fded66940080eeef381b30acdc39232adad6bed5b81ff16af8e2f54b970584e2e826040516113a59190613a02565b60405180910390a25050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c602052805f5260405f205f915054906101000a900460ff1681565b6113fb6129a8565b6114156064612710600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff161015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614006565b60405180910390fd5b80600e60106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050565b6003602052805f5260405f205f915090505481565b6114c26129a8565b6114cb5f612af1565b565b6114d56129a8565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6115346129a8565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd9a2a08302ed3220f4e646ff99d6780d87e27baddf1af05679dc930ce811309560405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6005602052805f5260405f205f915090505481565b5f6005905090565b6116176129a8565b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff021916908315150217905550565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805461168490613db7565b80601f01602080910402602001604051908101604052809291908181526020018280546116b090613db7565b80156116fb5780601f106116d2576101008083540402835291602001916116fb565b820191905f5260205f20905b8154815290600101906020018083116116de57829003601f168201915b505050505081565b6008601a9054906101000a900460ff1681565b600860189054906101000a900460ff1681565b6117316129a8565b61174c6001620f4240600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff1610156117a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117979061406e565b60405180910390fd5b6117ba6005612710600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff16111561180e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118059061406e565b60405180910390fd5b80600d5f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050565b5f61185533848461243b565b6001905092915050565b6118676129a8565b6118826001620186a0600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff1610156118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd906140d6565b60405180910390fd5b6118f06032612710600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff161115611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b906140d6565b60405180910390fd5b80600d60106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050565b600860199054906101000a900460ff1681565b600860179054906101000a900460ff1681565b6119ae6129a8565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a489190613a02565b60405180910390a25050565b611a5c6129a8565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600e5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b42841015611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f9061413e565b60405180910390fd5b5f6001611b2361119b565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60055f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b604051602001611ba89695949392919061415c565b60405160208183030381529060405280519060200120604051602001611bcf92919061422f565b604051602081830303815290604052805190602001208585856040515f8152602001604052604051611c049493929190614265565b6020604051602081039080840390855afa158015611c24573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611c9757508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd906142f2565b60405180910390fd5b8560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611db19190613a2a565b60405180910390a350505050505050565b6008601b9054906101000a900460ff1681565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60109054906101000a90046fffffffffffffffffffffffffffffffff1681565b611e436129a8565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f82034a08527e1556af5c41ac50e5176dc09e241059cf64334802c9ab02935aee60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f096129a8565b611f236032612710600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff161015611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6e9061435a565b60405180910390fd5b80600e5f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050565b611fba6129a8565b5f600860166101000a81548160ff021916908315150217905550565b611fde6129a8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361204c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612043906143e8565b60405180910390fd5b61205581612af1565b50565b600e60109054906101000a90046fffffffffffffffffffffffffffffffff1681565b6009602052805f5260405f205f915054906101000a900460ff1681565b61209f6129a8565b600860179054906101000a900460ff166120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590614450565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361217c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612173906144b8565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361220a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612201906144b8565b60405180910390fd5b6001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600860159054906101000a900460ff1681565b61227d6129a8565b612285611607565b60ff1681838561229591906144d6565b61229f91906144d6565b60ff1611156122e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122da90614554565b60405180910390fd5b8082846122f091906144d6565b6122fa91906144d6565b600860186101000a81548160ff021916908360ff16021790555082600860196101000a81548160ff021916908360ff160217905550816008601a6101000a81548160ff021916908360ff160217905550806008601b6101000a81548160ff021916908360ff160217905550505050565b600a602052805f5260405f205f915054906101000a900460ff1681565b61238f6129a8565b5f8173ffffffffffffffffffffffffffffffffffffffff16476040516123b49061459f565b5f6040518083038185875af1925050503d805f81146123ee576040519150601f19603f3d011682016040523d82523d5f602084013e6123f3565b606091505b5050905080612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e906145fd565b60405180910390fd5b5050565b600860179054906101000a900460ff161561252c57600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124eb5750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290614665565b60405180910390fd5b5b600860169054906101000a900460ff161561254d5761254c838383612bb4565b5b5f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806125e95750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f600860189054906101000a900460ff169050818061260c57505f8160ff16145b8061261657505f83145b1561262d57612626858585613167565b50506129a3565b600f5f9054906101000a900460ff1691505f60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905080806126945750825b806126ac5750600860159054906101000a900460ff16155b806127225750600d5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054105b612762576001600f5f6101000a81548160ff02191690831515021790555061274861326e565b5f600f5f6101000a81548160ff0219169083151502179055505b8360035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127ae9190613e14565b925050819055505f8180612808575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015612812575083155b156128e2576128308360ff16606487612ab09092919063ffffffff16565b90508060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128d99190613a2a565b60405180910390a35b80850360035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83886129899190613e14565b6040516129969190613a2a565b60405180910390a3505050505b505050565b6129b06135ae565b73ffffffffffffffffffffffffffffffffffffffff166129ce61164f565b73ffffffffffffffffffffffffffffffffffffffff1614612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b906146cd565b60405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051612a56919061477d565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001612a95959493929190614793565b60405160208183030381529060405280519060200120905090565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612ae3575f80fd5b818385020490509392505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612bbc61164f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612c275750612bf861164f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612c5f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612c755750600f5f9054906101000a900460ff165b61316257600860149054906101000a900460ff16612d6857600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612d285750600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5e9061482e565b60405180910390fd5b5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e055750600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f3c57600e5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16811115612e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7390614896565b60405180910390fd5b600e60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482612ef691906148b4565b1115612f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2e90614931565b60405180910390fd5b613161565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612fd95750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561305557600e5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16811115613050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304790614896565b60405180910390fd5b613160565b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661315f57600e60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261311d91906148b4565b111561315e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315590614931565b60405180910390fd5b5b5b5b5b505050565b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546131b39190613e14565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132619190613a2a565b60405180910390a3505050565b5f60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81036132bc57506135ac565b600d60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681111561332857600d60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1690505b5f613362600860199054906101000a900460ff1660ff16600860189054906101000a900460ff1660ff1684612ab09092919063ffffffff16565b90505f61339e6008601b9054906101000a900460ff1660ff16600860189054906101000a900460ff1660ff1685612ab09092919063ffffffff16565b90505f60028284866133b09190613e14565b6133ba9190613e14565b6133c4919061497c565b90505f81856133d39190613e14565b90505f4790506133e2826135b5565b80476133ee9190613e14565b90505f613406858484612ab09092919063ffffffff16565b90505f61341e878585612ab09092919063ffffffff16565b828461342a9190613e14565b6134349190613e14565b90505f8511801561344457505f81115b1561348f576134538582613751565b7fe7ffb84753332014378916a30d2d1231aaa998f41b9b5e0c2f308c15091016df848287604051613486939291906149ac565b60405180910390a15b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516134d59061459f565b5f6040518083038185875af1925050503d805f811461350f576040519150601f19603f3d011682016040523d82523d5f602084013e613514565b606091505b5050905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161355d9061459f565b5f6040518083038185875af1925050503d805f8114613597576040519150601f19603f3d011682016040523d82523d5f602084013e61359c565b606091505b5050809150505050505050505050505b565b5f33905090565b5f600267ffffffffffffffff8111156135d1576135d06149e1565b5b6040519080825280602002602001820160405280156135ff5781602001602082028036833780820191505090505b50905030815f8151811061361657613615614a0e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061368557613684614a0e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613720959493929190614b34565b5f604051808303815f87803b158015613737575f80fd5b505af1158015613749573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061379a61164f565b426040518863ffffffff1660e01b81526004016137bc96959493929190614b8c565b60606040518083038185885af11580156137d8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906137fd9190614beb565b5050505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61382881613804565b82525050565b5f6020820190506138415f83018461381f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61387082613847565b9050919050565b61388081613866565b82525050565b5f6020820190506138995f830184613877565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156138d65780820151818401526020810190506138bb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6138fb8261389f565b61390581856138a9565b93506139158185602086016138b9565b61391e816138e1565b840191505092915050565b5f6020820190508181035f83015261394181846138f1565b905092915050565b5f80fd5b61395681613866565b8114613960575f80fd5b50565b5f813590506139718161394d565b92915050565b5f819050919050565b61398981613977565b8114613993575f80fd5b50565b5f813590506139a481613980565b92915050565b5f80604083850312156139c0576139bf613949565b5b5f6139cd85828601613963565b92505060206139de85828601613996565b9150509250929050565b5f8115159050919050565b6139fc816139e8565b82525050565b5f602082019050613a155f8301846139f3565b92915050565b613a2481613977565b82525050565b5f602082019050613a3d5f830184613a1b565b92915050565b5f805f60608486031215613a5a57613a59613949565b5b5f613a6786828701613963565b9350506020613a7886828701613963565b9250506040613a8986828701613996565b9150509250925092565b613a9c816139e8565b8114613aa6575f80fd5b50565b5f81359050613ab781613a93565b92915050565b5f60208284031215613ad257613ad1613949565b5b5f613adf84828501613aa9565b91505092915050565b5f8060408385031215613afe57613afd613949565b5b5f613b0b85828601613963565b9250506020613b1c85828601613963565b9150509250929050565b5f60ff82169050919050565b613b3b81613b26565b82525050565b5f602082019050613b545f830184613b32565b92915050565b5f819050919050565b613b6c81613b5a565b82525050565b5f602082019050613b855f830184613b63565b92915050565b5f60208284031215613ba057613b9f613949565b5b5f613bad84828501613963565b91505092915050565b5f8060408385031215613bcc57613bcb613949565b5b5f613bd985828601613963565b9250506020613bea85828601613aa9565b9150509250929050565b613bfd81613804565b8114613c07575f80fd5b50565b5f81359050613c1881613bf4565b92915050565b5f60208284031215613c3357613c32613949565b5b5f613c4084828501613c0a565b91505092915050565b613c5281613b26565b8114613c5c575f80fd5b50565b5f81359050613c6d81613c49565b92915050565b613c7c81613b5a565b8114613c86575f80fd5b50565b5f81359050613c9781613c73565b92915050565b5f805f805f805f60e0888a031215613cb857613cb7613949565b5b5f613cc58a828b01613963565b9750506020613cd68a828b01613963565b9650506040613ce78a828b01613996565b9550506060613cf88a828b01613996565b9450506080613d098a828b01613c5f565b93505060a0613d1a8a828b01613c89565b92505060c0613d2b8a828b01613c89565b91505092959891949750929550565b5f805f60608486031215613d5157613d50613949565b5b5f613d5e86828701613c5f565b9350506020613d6f86828701613c5f565b9250506040613d8086828701613c5f565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613dce57607f821691505b602082108103613de157613de0613d8a565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e1e82613977565b9150613e2983613977565b9250828203905081811115613e4157613e40613de7565b5b92915050565b7f5a410000000000000000000000000000000000000000000000000000000000005f82015250565b5f613e7b6002836138a9565b9150613e8682613e47565b602082019050919050565b5f6020820190508181035f830152613ea881613e6f565b9050919050565b5f81519050613ebd81613980565b92915050565b5f60208284031215613ed857613ed7613949565b5b5f613ee584828501613eaf565b91505092915050565b5f604082019050613f015f830185613877565b613f0e6020830184613a1b565b9392505050565b5f81519050613f2381613a93565b92915050565b5f60208284031215613f3e57613f3d613949565b5b5f613f4b84828501613f15565b91505092915050565b7f46500000000000000000000000000000000000000000000000000000000000005f82015250565b5f613f886002836138a9565b9150613f9382613f54565b602082019050919050565b5f6020820190508181035f830152613fb581613f7c565b9050919050565b7f424d5700000000000000000000000000000000000000000000000000000000005f82015250565b5f613ff06003836138a9565b9150613ffb82613fbc565b602082019050919050565b5f6020820190508181035f83015261401d81613fe4565b9050919050565b7f42535400000000000000000000000000000000000000000000000000000000005f82015250565b5f6140586003836138a9565b915061406382614024565b602082019050919050565b5f6020820190508181035f8301526140858161404c565b9050919050565b7f424d5300000000000000000000000000000000000000000000000000000000005f82015250565b5f6140c06003836138a9565b91506140cb8261408c565b602082019050919050565b5f6020820190508181035f8301526140ed816140b4565b9050919050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f6141286017836138a9565b9150614133826140f4565b602082019050919050565b5f6020820190508181035f8301526141558161411c565b9050919050565b5f60c08201905061416f5f830189613b63565b61417c6020830188613877565b6141896040830187613877565b6141966060830186613a1b565b6141a36080830185613a1b565b6141b060a0830184613a1b565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6141f96002836141bb565b9150614204826141c5565b600282019050919050565b5f819050919050565b61422961422482613b5a565b61420f565b82525050565b5f614239826141ed565b91506142458285614218565b6020820191506142558284614218565b6020820191508190509392505050565b5f6080820190506142785f830187613b63565b6142856020830186613b32565b6142926040830185613b63565b61429f6060830184613b63565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f6142dc600e836138a9565b91506142e7826142a8565b602082019050919050565b5f6020820190508181035f830152614309816142d0565b9050919050565b7f424d5400000000000000000000000000000000000000000000000000000000005f82015250565b5f6143446003836138a9565b915061434f82614310565b602082019050919050565b5f6020820190508181035f83015261437181614338565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6143d26026836138a9565b91506143dd82614378565b604082019050919050565b5f6020820190508181035f8301526143ff816143c6565b9050919050565b7f524b0000000000000000000000000000000000000000000000000000000000005f82015250565b5f61443a6002836138a9565b915061444582614406565b602082019050919050565b5f6020820190508181035f8301526144678161442e565b9050919050565b7f424c5500000000000000000000000000000000000000000000000000000000005f82015250565b5f6144a26003836138a9565b91506144ad8261446e565b602082019050919050565b5f6020820190508181035f8301526144cf81614496565b9050919050565b5f6144e082613b26565b91506144eb83613b26565b9250828201905060ff81111561450457614503613de7565b5b92915050565b7f42460000000000000000000000000000000000000000000000000000000000005f82015250565b5f61453e6002836138a9565b91506145498261450a565b602082019050919050565b5f6020820190508181035f83015261456b81614532565b9050919050565b5f81905092915050565b50565b5f61458a5f83614572565b91506145958261457c565b5f82019050919050565b5f6145a98261457f565b9150819050919050565b7f54460000000000000000000000000000000000000000000000000000000000005f82015250565b5f6145e76002836138a9565b91506145f2826145b3565b602082019050919050565b5f6020820190508181035f830152614614816145db565b9050919050565b7f424c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f61464f6002836138a9565b915061465a8261461b565b602082019050919050565b5f6020820190508181035f83015261467c81614643565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6146b76020836138a9565b91506146c282614683565b602082019050919050565b5f6020820190508181035f8301526146e4816146ab565b9050919050565b5f819050815f5260205f209050919050565b5f815461470981613db7565b6147138186614572565b9450600182165f811461472d576001811461474257614774565b60ff1983168652811515820286019350614774565b61474b856146eb565b5f5b8381101561476c5781548189015260018201915060208101905061474d565b838801955050505b50505092915050565b5f61478882846146fd565b915081905092915050565b5f60a0820190506147a65f830188613b63565b6147b36020830187613b63565b6147c06040830186613b63565b6147cd6060830185613a1b565b6147da6080830184613877565b9695505050505050565b7f54430000000000000000000000000000000000000000000000000000000000005f82015250565b5f6148186002836138a9565b9150614823826147e4565b602082019050919050565b5f6020820190508181035f8301526148458161480c565b9050919050565b7f4d41585f545800000000000000000000000000000000000000000000000000005f82015250565b5f6148806006836138a9565b915061488b8261484c565b602082019050919050565b5f6020820190508181035f8301526148ad81614874565b9050919050565b5f6148be82613977565b91506148c983613977565b92508282019050808211156148e1576148e0613de7565b5b92915050565b7f4d41585f57414c4c4554000000000000000000000000000000000000000000005f82015250565b5f61491b600a836138a9565b9150614926826148e7565b602082019050919050565b5f6020820190508181035f8301526149488161490f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61498682613977565b915061499183613977565b9250826149a1576149a061494f565b5b828204905092915050565b5f6060820190506149bf5f830186613a1b565b6149cc6020830185613a1b565b6149d96040830184613a1b565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f614a67614a62614a5d84614a3b565b614a44565b613977565b9050919050565b614a7781614a4d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614aaf81613866565b82525050565b5f614ac08383614aa6565b60208301905092915050565b5f602082019050919050565b5f614ae282614a7d565b614aec8185614a87565b9350614af783614a97565b805f5b83811015614b27578151614b0e8882614ab5565b9750614b1983614acc565b925050600181019050614afa565b5085935050505092915050565b5f60a082019050614b475f830188613a1b565b614b546020830187614a6e565b8181036040830152614b668186614ad8565b9050614b756060830185613877565b614b826080830184613a1b565b9695505050505050565b5f60c082019050614b9f5f830189613877565b614bac6020830188613a1b565b614bb96040830187614a6e565b614bc66060830186614a6e565b614bd36080830185613877565b614be060a0830184613a1b565b979650505050505050565b5f805f60608486031215614c0257614c01613949565b5b5f614c0f86828701613eaf565b9350506020614c2086828701613eaf565b9250506040614c3186828701613eaf565b915050925092509256fea26469706673582212206253d9a4a228c2112778f4d20e2a5f2470092b807b8f04bab7d69bf332b91c3d64736f6c6343000814003300000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000c9f2c9cd04674edea400000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000442fe32b41e3113abed2a76f64caaa1a730d558c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000054b61747a6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034b545a0000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610353575f3560e01c80638da5cb5b116101c5578063dd62ed3e116100f6578063f8b45b0511610094578063fdb78c0e1161006e578063fdb78c0e14610bf0578063fddfc63c14610c1a578063fe575a8714610c42578063fe7746af14610c7e5761035a565b8063f8b45b0514610b62578063f98b426214610b8c578063f9f92be414610bc85761035a565b8063e308a099116100d0578063e308a09914610ad4578063ee05081014610afc578063f044b41014610b24578063f2fde38b14610b3a5761035a565b8063dd62ed3e14610a44578063deadbc1414610a80578063e2c8031d14610aaa5761035a565b8063b0e21e8a11610163578063c0a904a21161013d578063c0a904a2146109a0578063c3f70b52146109c8578063d505accf146109f2578063d7c94efd14610a1a5761035a565b8063b0e21e8a14610924578063b6e6fcf61461094e578063c0246668146109785761035a565b80639bf578ba1161019f5780639bf578ba1461086e5780639fc747c314610898578063a9059cbb146108c0578063aa85decc146108fc5761035a565b80638da5cb5b146107f057806395d89b411461081a57806398118cb4146108445761035a565b80634ada218b1161029f57806370a082311161023d5780637cb332bb116102175780637cb332bb1461074c5780637ecebe001461077457806386a35f25146107b05780638a8c523c146107da5761035a565b806370a08231146106d2578063715018a61461070e57806375e3661e146107245761035a565b80635476b2a0116102795780635476b2a01461061c57806359927044146106445780635cce86cd1461066e578063638cb6af146106aa5761035a565b80634ada218b146105a05780634fbee193146105ca57806352bcec39146106065761035a565b80631cce34ee1161030c578063258836fe116102e6578063258836fe146104fa578063313ce567146105225780633644e5151461054c578063378dc3dc146105765761035a565b80631cce34ee1461046c57806323b872dd14610496578063246a05b0146104d25761035a565b80630445b6671461035e578063056939da1461038857806306d6e63f146103b257806306fdde03146103dc578063095ea7b31461040657806318160ddd146104425761035a565b3661035a57005b5f80fd5b348015610369575f80fd5b50610372610ca6565b60405161037f919061382e565b60405180910390f35b348015610393575f80fd5b5061039c610cc7565b6040516103a99190613886565b60405180910390f35b3480156103bd575f80fd5b506103c6610ceb565b6040516103d39190613886565b60405180910390f35b3480156103e7575f80fd5b506103f0610d10565b6040516103fd9190613929565b60405180910390f35b348015610411575f80fd5b5061042c600480360381019061042791906139aa565b610d9b565b6040516104399190613a02565b60405180910390f35b34801561044d575f80fd5b50610456610e88565b6040516104639190613a2a565b60405180910390f35b348015610477575f80fd5b50610480610e8e565b60405161048d9190613a02565b60405180910390f35b3480156104a1575f80fd5b506104bc60048036038101906104b79190613a43565b610ea1565b6040516104c99190613a02565b60405180910390f35b3480156104dd575f80fd5b506104f860048036038101906104f39190613abd565b610fe5565b005b348015610505575f80fd5b50610520600480360381019061051b9190613ae8565b61100a565b005b34801561052d575f80fd5b50610536611177565b6040516105439190613b41565b60405180910390f35b348015610557575f80fd5b5061056061119b565b60405161056d9190613b72565b60405180910390f35b348015610581575f80fd5b5061058a6111f7565b6040516105979190613a2a565b60405180910390f35b3480156105ab575f80fd5b506105b461121b565b6040516105c19190613a02565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb9190613b8b565b61122e565b6040516105fd9190613a02565b60405180910390f35b348015610611575f80fd5b5061061a61124b565b005b348015610627575f80fd5b50610642600480360381019061063d9190613bb6565b61126f565b005b34801561064f575f80fd5b506106586113b1565b6040516106659190613886565b60405180910390f35b348015610679575f80fd5b50610694600480360381019061068f9190613b8b565b6113d6565b6040516106a19190613a02565b60405180910390f35b3480156106b5575f80fd5b506106d060048036038101906106cb9190613c1e565b6113f3565b005b3480156106dd575f80fd5b506106f860048036038101906106f39190613b8b565b6114a5565b6040516107059190613a2a565b60405180910390f35b348015610719575f80fd5b506107226114ba565b005b34801561072f575f80fd5b5061074a60048036038101906107459190613b8b565b6114cd565b005b348015610757575f80fd5b50610772600480360381019061076d9190613b8b565b61152c565b005b34801561077f575f80fd5b5061079a60048036038101906107959190613b8b565b6115f2565b6040516107a79190613a2a565b60405180910390f35b3480156107bb575f80fd5b506107c4611607565b6040516107d19190613b41565b60405180910390f35b3480156107e5575f80fd5b506107ee61160f565b005b3480156107fb575f80fd5b5061080461164f565b6040516108119190613886565b60405180910390f35b348015610825575f80fd5b5061082e611677565b60405161083b9190613929565b60405180910390f35b34801561084f575f80fd5b50610858611703565b6040516108659190613b41565b60405180910390f35b348015610879575f80fd5b50610882611716565b60405161088f9190613b41565b60405180910390f35b3480156108a3575f80fd5b506108be60048036038101906108b99190613c1e565b611729565b005b3480156108cb575f80fd5b506108e660048036038101906108e191906139aa565b611849565b6040516108f39190613a02565b60405180910390f35b348015610907575f80fd5b50610922600480360381019061091d9190613c1e565b61185f565b005b34801561092f575f80fd5b50610938611980565b6040516109459190613b41565b60405180910390f35b348015610959575f80fd5b50610962611993565b60405161096f9190613a02565b60405180910390f35b348015610983575f80fd5b5061099e60048036038101906109999190613bb6565b6119a6565b005b3480156109ab575f80fd5b506109c660048036038101906109c19190613bb6565b611a54565b005b3480156109d3575f80fd5b506109dc611ab4565b6040516109e9919061382e565b60405180910390f35b3480156109fd575f80fd5b50610a186004803603810190610a139190613c9d565b611ad5565b005b348015610a25575f80fd5b50610a2e611dc2565b604051610a3b9190613b41565b60405180910390f35b348015610a4f575f80fd5b50610a6a6004803603810190610a659190613ae8565b611dd5565b604051610a779190613a2a565b60405180910390f35b348015610a8b575f80fd5b50610a94611df5565b604051610aa19190613886565b60405180910390f35b348015610ab5575f80fd5b50610abe611e19565b604051610acb919061382e565b60405180910390f35b348015610adf575f80fd5b50610afa6004803603810190610af59190613b8b565b611e3b565b005b348015610b07575f80fd5b50610b226004803603810190610b1d9190613c1e565b611f01565b005b348015610b2f575f80fd5b50610b38611fb2565b005b348015610b45575f80fd5b50610b606004803603810190610b5b9190613b8b565b611fd6565b005b348015610b6d575f80fd5b50610b76612058565b604051610b83919061382e565b60405180910390f35b348015610b97575f80fd5b50610bb26004803603810190610bad9190613b8b565b61207a565b604051610bbf9190613a02565b60405180910390f35b348015610bd3575f80fd5b50610bee6004803603810190610be99190613b8b565b612097565b005b348015610bfb575f80fd5b50610c04612262565b604051610c119190613a02565b60405180910390f35b348015610c25575f80fd5b50610c406004803603810190610c3b9190613d3a565b612275565b005b348015610c4d575f80fd5b50610c686004803603810190610c639190613b8b565b61236a565b604051610c759190613a02565b60405180910390f35b348015610c89575f80fd5b50610ca46004803603810190610c9f9190613b8b565b612387565b005b600d5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000f836ceadea5c94a628cedf8b562c7ece6ded7a1981565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054610d1c90613db7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4890613db7565b8015610d935780601f10610d6a57610100808354040283529160200191610d93565b820191905f5260205f20905b815481529060010190602001808311610d7657829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e769190613a2a565b60405180910390a36001905092915050565b60025481565b600860169054906101000a900460ff1681565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fce578281610f519190613e14565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610fd985858561243b565b60019150509392505050565b610fed6129a8565b80600860156101000a81548160ff02191690831515021790555050565b6110126129a8565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107790613e91565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110d69190613886565b602060405180830381865afa1580156110f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111159190613ec3565b6040518363ffffffff1660e01b8152600401611132929190613eee565b6020604051808303815f875af115801561114e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111729190613f29565b505050565b7f000000000000000000000000000000000000000000000000000000000000001281565b5f7f000000000000000000000000000000000000000000000000000000000000000146146111d0576111cb612a26565b6111f2565b7f1ec29e4ef3cecf2435018c80bf0893b406f480477cac73fbee1c6c91c8ed130f5b905090565b7f000000000000000000000000000000000000000c9f2c9cd04674edea4000000081565b600860149054906101000a900460ff1681565b600b602052805f5260405f205f915054906101000a900460ff1681565b6112536129a8565b5f600860176101000a81548160ff021916908315150217905550565b6112776129a8565b8061130b577f000000000000000000000000f836ceadea5c94a628cedf8b562c7ece6ded7a1973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190613f9e565b60405180910390fd5b5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fded66940080eeef381b30acdc39232adad6bed5b81ff16af8e2f54b970584e2e826040516113a59190613a02565b60405180910390a25050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c602052805f5260405f205f915054906101000a900460ff1681565b6113fb6129a8565b6114156064612710600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff161015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614006565b60405180910390fd5b80600e60106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050565b6003602052805f5260405f205f915090505481565b6114c26129a8565b6114cb5f612af1565b565b6114d56129a8565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6115346129a8565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd9a2a08302ed3220f4e646ff99d6780d87e27baddf1af05679dc930ce811309560405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6005602052805f5260405f205f915090505481565b5f6005905090565b6116176129a8565b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff021916908315150217905550565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805461168490613db7565b80601f01602080910402602001604051908101604052809291908181526020018280546116b090613db7565b80156116fb5780601f106116d2576101008083540402835291602001916116fb565b820191905f5260205f20905b8154815290600101906020018083116116de57829003601f168201915b505050505081565b6008601a9054906101000a900460ff1681565b600860189054906101000a900460ff1681565b6117316129a8565b61174c6001620f4240600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff1610156117a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117979061406e565b60405180910390fd5b6117ba6005612710600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff16111561180e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118059061406e565b60405180910390fd5b80600d5f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050565b5f61185533848461243b565b6001905092915050565b6118676129a8565b6118826001620186a0600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff1610156118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd906140d6565b60405180910390fd5b6118f06032612710600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff161115611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b906140d6565b60405180910390fd5b80600d60106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050565b600860199054906101000a900460ff1681565b600860179054906101000a900460ff1681565b6119ae6129a8565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a489190613a02565b60405180910390a25050565b611a5c6129a8565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600e5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b42841015611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f9061413e565b60405180910390fd5b5f6001611b2361119b565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60055f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b604051602001611ba89695949392919061415c565b60405160208183030381529060405280519060200120604051602001611bcf92919061422f565b604051602081830303815290604052805190602001208585856040515f8152602001604052604051611c049493929190614265565b6020604051602081039080840390855afa158015611c24573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611c9757508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd906142f2565b60405180910390fd5b8560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611db19190613a2a565b60405180910390a350505050505050565b6008601b9054906101000a900460ff1681565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600d60109054906101000a90046fffffffffffffffffffffffffffffffff1681565b611e436129a8565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f82034a08527e1556af5c41ac50e5176dc09e241059cf64334802c9ab02935aee60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f096129a8565b611f236032612710600254612ab09092919063ffffffff16565b816fffffffffffffffffffffffffffffffff161015611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6e9061435a565b60405180910390fd5b80600e5f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050565b611fba6129a8565b5f600860166101000a81548160ff021916908315150217905550565b611fde6129a8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361204c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612043906143e8565b60405180910390fd5b61205581612af1565b50565b600e60109054906101000a90046fffffffffffffffffffffffffffffffff1681565b6009602052805f5260405f205f915054906101000a900460ff1681565b61209f6129a8565b600860179054906101000a900460ff166120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590614450565b60405180910390fd5b7f000000000000000000000000f836ceadea5c94a628cedf8b562c7ece6ded7a1973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361217c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612173906144b8565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361220a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612201906144b8565b60405180910390fd5b6001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600860159054906101000a900460ff1681565b61227d6129a8565b612285611607565b60ff1681838561229591906144d6565b61229f91906144d6565b60ff1611156122e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122da90614554565b60405180910390fd5b8082846122f091906144d6565b6122fa91906144d6565b600860186101000a81548160ff021916908360ff16021790555082600860196101000a81548160ff021916908360ff160217905550816008601a6101000a81548160ff021916908360ff160217905550806008601b6101000a81548160ff021916908360ff160217905550505050565b600a602052805f5260405f205f915054906101000a900460ff1681565b61238f6129a8565b5f8173ffffffffffffffffffffffffffffffffffffffff16476040516123b49061459f565b5f6040518083038185875af1925050503d805f81146123ee576040519150601f19603f3d011682016040523d82523d5f602084013e6123f3565b606091505b5050905080612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e906145fd565b60405180910390fd5b5050565b600860179054906101000a900460ff161561252c57600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124eb5750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290614665565b60405180910390fd5b5b600860169054906101000a900460ff161561254d5761254c838383612bb4565b5b5f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806125e95750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f600860189054906101000a900460ff169050818061260c57505f8160ff16145b8061261657505f83145b1561262d57612626858585613167565b50506129a3565b600f5f9054906101000a900460ff1691505f60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905080806126945750825b806126ac5750600860159054906101000a900460ff16155b806127225750600d5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054105b612762576001600f5f6101000a81548160ff02191690831515021790555061274861326e565b5f600f5f6101000a81548160ff0219169083151502179055505b8360035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127ae9190613e14565b925050819055505f8180612808575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015612812575083155b156128e2576128308360ff16606487612ab09092919063ffffffff16565b90508060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128d99190613a2a565b60405180910390a35b80850360035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83886129899190613e14565b6040516129969190613a2a565b60405180910390a3505050505b505050565b6129b06135ae565b73ffffffffffffffffffffffffffffffffffffffff166129ce61164f565b73ffffffffffffffffffffffffffffffffffffffff1614612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b906146cd565b60405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051612a56919061477d565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001612a95959493929190614793565b60405160208183030381529060405280519060200120905090565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612ae3575f80fd5b818385020490509392505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612bbc61164f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612c275750612bf861164f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612c5f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612c755750600f5f9054906101000a900460ff165b61316257600860149054906101000a900460ff16612d6857600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612d285750600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5e9061482e565b60405180910390fd5b5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e055750600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f3c57600e5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16811115612e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7390614896565b60405180910390fd5b600e60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482612ef691906148b4565b1115612f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2e90614931565b60405180910390fd5b613161565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612fd95750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561305557600e5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16811115613050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304790614896565b60405180910390fd5b613160565b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661315f57600e60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261311d91906148b4565b111561315e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315590614931565b60405180910390fd5b5b5b5b5b505050565b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546131b39190613e14565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132619190613a2a565b60405180910390a3505050565b5f60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81036132bc57506135ac565b600d60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681111561332857600d60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1690505b5f613362600860199054906101000a900460ff1660ff16600860189054906101000a900460ff1660ff1684612ab09092919063ffffffff16565b90505f61339e6008601b9054906101000a900460ff1660ff16600860189054906101000a900460ff1660ff1685612ab09092919063ffffffff16565b90505f60028284866133b09190613e14565b6133ba9190613e14565b6133c4919061497c565b90505f81856133d39190613e14565b90505f4790506133e2826135b5565b80476133ee9190613e14565b90505f613406858484612ab09092919063ffffffff16565b90505f61341e878585612ab09092919063ffffffff16565b828461342a9190613e14565b6134349190613e14565b90505f8511801561344457505f81115b1561348f576134538582613751565b7fe7ffb84753332014378916a30d2d1231aaa998f41b9b5e0c2f308c15091016df848287604051613486939291906149ac565b60405180910390a15b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516134d59061459f565b5f6040518083038185875af1925050503d805f811461350f576040519150601f19603f3d011682016040523d82523d5f602084013e613514565b606091505b5050905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161355d9061459f565b5f6040518083038185875af1925050503d805f8114613597576040519150601f19603f3d011682016040523d82523d5f602084013e61359c565b606091505b5050809150505050505050505050505b565b5f33905090565b5f600267ffffffffffffffff8111156135d1576135d06149e1565b5b6040519080825280602002602001820160405280156135ff5781602001602082028036833780820191505090505b50905030815f8151811061361657613615614a0e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061368557613684614a0e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613720959493929190614b34565b5f604051808303815f87803b158015613737575f80fd5b505af1158015613749573d5f803e3d5ffd5b505050505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061379a61164f565b426040518863ffffffff1660e01b81526004016137bc96959493929190614b8c565b60606040518083038185885af11580156137d8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906137fd9190614beb565b5050505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61382881613804565b82525050565b5f6020820190506138415f83018461381f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61387082613847565b9050919050565b61388081613866565b82525050565b5f6020820190506138995f830184613877565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156138d65780820151818401526020810190506138bb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6138fb8261389f565b61390581856138a9565b93506139158185602086016138b9565b61391e816138e1565b840191505092915050565b5f6020820190508181035f83015261394181846138f1565b905092915050565b5f80fd5b61395681613866565b8114613960575f80fd5b50565b5f813590506139718161394d565b92915050565b5f819050919050565b61398981613977565b8114613993575f80fd5b50565b5f813590506139a481613980565b92915050565b5f80604083850312156139c0576139bf613949565b5b5f6139cd85828601613963565b92505060206139de85828601613996565b9150509250929050565b5f8115159050919050565b6139fc816139e8565b82525050565b5f602082019050613a155f8301846139f3565b92915050565b613a2481613977565b82525050565b5f602082019050613a3d5f830184613a1b565b92915050565b5f805f60608486031215613a5a57613a59613949565b5b5f613a6786828701613963565b9350506020613a7886828701613963565b9250506040613a8986828701613996565b9150509250925092565b613a9c816139e8565b8114613aa6575f80fd5b50565b5f81359050613ab781613a93565b92915050565b5f60208284031215613ad257613ad1613949565b5b5f613adf84828501613aa9565b91505092915050565b5f8060408385031215613afe57613afd613949565b5b5f613b0b85828601613963565b9250506020613b1c85828601613963565b9150509250929050565b5f60ff82169050919050565b613b3b81613b26565b82525050565b5f602082019050613b545f830184613b32565b92915050565b5f819050919050565b613b6c81613b5a565b82525050565b5f602082019050613b855f830184613b63565b92915050565b5f60208284031215613ba057613b9f613949565b5b5f613bad84828501613963565b91505092915050565b5f8060408385031215613bcc57613bcb613949565b5b5f613bd985828601613963565b9250506020613bea85828601613aa9565b9150509250929050565b613bfd81613804565b8114613c07575f80fd5b50565b5f81359050613c1881613bf4565b92915050565b5f60208284031215613c3357613c32613949565b5b5f613c4084828501613c0a565b91505092915050565b613c5281613b26565b8114613c5c575f80fd5b50565b5f81359050613c6d81613c49565b92915050565b613c7c81613b5a565b8114613c86575f80fd5b50565b5f81359050613c9781613c73565b92915050565b5f805f805f805f60e0888a031215613cb857613cb7613949565b5b5f613cc58a828b01613963565b9750506020613cd68a828b01613963565b9650506040613ce78a828b01613996565b9550506060613cf88a828b01613996565b9450506080613d098a828b01613c5f565b93505060a0613d1a8a828b01613c89565b92505060c0613d2b8a828b01613c89565b91505092959891949750929550565b5f805f60608486031215613d5157613d50613949565b5b5f613d5e86828701613c5f565b9350506020613d6f86828701613c5f565b9250506040613d8086828701613c5f565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613dce57607f821691505b602082108103613de157613de0613d8a565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e1e82613977565b9150613e2983613977565b9250828203905081811115613e4157613e40613de7565b5b92915050565b7f5a410000000000000000000000000000000000000000000000000000000000005f82015250565b5f613e7b6002836138a9565b9150613e8682613e47565b602082019050919050565b5f6020820190508181035f830152613ea881613e6f565b9050919050565b5f81519050613ebd81613980565b92915050565b5f60208284031215613ed857613ed7613949565b5b5f613ee584828501613eaf565b91505092915050565b5f604082019050613f015f830185613877565b613f0e6020830184613a1b565b9392505050565b5f81519050613f2381613a93565b92915050565b5f60208284031215613f3e57613f3d613949565b5b5f613f4b84828501613f15565b91505092915050565b7f46500000000000000000000000000000000000000000000000000000000000005f82015250565b5f613f886002836138a9565b9150613f9382613f54565b602082019050919050565b5f6020820190508181035f830152613fb581613f7c565b9050919050565b7f424d5700000000000000000000000000000000000000000000000000000000005f82015250565b5f613ff06003836138a9565b9150613ffb82613fbc565b602082019050919050565b5f6020820190508181035f83015261401d81613fe4565b9050919050565b7f42535400000000000000000000000000000000000000000000000000000000005f82015250565b5f6140586003836138a9565b915061406382614024565b602082019050919050565b5f6020820190508181035f8301526140858161404c565b9050919050565b7f424d5300000000000000000000000000000000000000000000000000000000005f82015250565b5f6140c06003836138a9565b91506140cb8261408c565b602082019050919050565b5f6020820190508181035f8301526140ed816140b4565b9050919050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f6141286017836138a9565b9150614133826140f4565b602082019050919050565b5f6020820190508181035f8301526141558161411c565b9050919050565b5f60c08201905061416f5f830189613b63565b61417c6020830188613877565b6141896040830187613877565b6141966060830186613a1b565b6141a36080830185613a1b565b6141b060a0830184613a1b565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6141f96002836141bb565b9150614204826141c5565b600282019050919050565b5f819050919050565b61422961422482613b5a565b61420f565b82525050565b5f614239826141ed565b91506142458285614218565b6020820191506142558284614218565b6020820191508190509392505050565b5f6080820190506142785f830187613b63565b6142856020830186613b32565b6142926040830185613b63565b61429f6060830184613b63565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f6142dc600e836138a9565b91506142e7826142a8565b602082019050919050565b5f6020820190508181035f830152614309816142d0565b9050919050565b7f424d5400000000000000000000000000000000000000000000000000000000005f82015250565b5f6143446003836138a9565b915061434f82614310565b602082019050919050565b5f6020820190508181035f83015261437181614338565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6143d26026836138a9565b91506143dd82614378565b604082019050919050565b5f6020820190508181035f8301526143ff816143c6565b9050919050565b7f524b0000000000000000000000000000000000000000000000000000000000005f82015250565b5f61443a6002836138a9565b915061444582614406565b602082019050919050565b5f6020820190508181035f8301526144678161442e565b9050919050565b7f424c5500000000000000000000000000000000000000000000000000000000005f82015250565b5f6144a26003836138a9565b91506144ad8261446e565b602082019050919050565b5f6020820190508181035f8301526144cf81614496565b9050919050565b5f6144e082613b26565b91506144eb83613b26565b9250828201905060ff81111561450457614503613de7565b5b92915050565b7f42460000000000000000000000000000000000000000000000000000000000005f82015250565b5f61453e6002836138a9565b91506145498261450a565b602082019050919050565b5f6020820190508181035f83015261456b81614532565b9050919050565b5f81905092915050565b50565b5f61458a5f83614572565b91506145958261457c565b5f82019050919050565b5f6145a98261457f565b9150819050919050565b7f54460000000000000000000000000000000000000000000000000000000000005f82015250565b5f6145e76002836138a9565b91506145f2826145b3565b602082019050919050565b5f6020820190508181035f830152614614816145db565b9050919050565b7f424c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f61464f6002836138a9565b915061465a8261461b565b602082019050919050565b5f6020820190508181035f83015261467c81614643565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6146b76020836138a9565b91506146c282614683565b602082019050919050565b5f6020820190508181035f8301526146e4816146ab565b9050919050565b5f819050815f5260205f209050919050565b5f815461470981613db7565b6147138186614572565b9450600182165f811461472d576001811461474257614774565b60ff1983168652811515820286019350614774565b61474b856146eb565b5f5b8381101561476c5781548189015260018201915060208101905061474d565b838801955050505b50505092915050565b5f61478882846146fd565b915081905092915050565b5f60a0820190506147a65f830188613b63565b6147b36020830187613b63565b6147c06040830186613b63565b6147cd6060830185613a1b565b6147da6080830184613877565b9695505050505050565b7f54430000000000000000000000000000000000000000000000000000000000005f82015250565b5f6148186002836138a9565b9150614823826147e4565b602082019050919050565b5f6020820190508181035f8301526148458161480c565b9050919050565b7f4d41585f545800000000000000000000000000000000000000000000000000005f82015250565b5f6148806006836138a9565b915061488b8261484c565b602082019050919050565b5f6020820190508181035f8301526148ad81614874565b9050919050565b5f6148be82613977565b91506148c983613977565b92508282019050808211156148e1576148e0613de7565b5b92915050565b7f4d41585f57414c4c4554000000000000000000000000000000000000000000005f82015250565b5f61491b600a836138a9565b9150614926826148e7565b602082019050919050565b5f6020820190508181035f8301526149488161490f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61498682613977565b915061499183613977565b9250826149a1576149a061494f565b5b828204905092915050565b5f6060820190506149bf5f830186613a1b565b6149cc6020830185613a1b565b6149d96040830184613a1b565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f614a67614a62614a5d84614a3b565b614a44565b613977565b9050919050565b614a7781614a4d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614aaf81613866565b82525050565b5f614ac08383614aa6565b60208301905092915050565b5f602082019050919050565b5f614ae282614a7d565b614aec8185614a87565b9350614af783614a97565b805f5b83811015614b27578151614b0e8882614ab5565b9750614b1983614acc565b925050600181019050614afa565b5085935050505092915050565b5f60a082019050614b475f830188613a1b565b614b546020830187614a6e565b8181036040830152614b668186614ad8565b9050614b756060830185613877565b614b826080830184613a1b565b9695505050505050565b5f60c082019050614b9f5f830189613877565b614bac6020830188613a1b565b614bb96040830187614a6e565b614bc66060830186614a6e565b614bd36080830185613877565b614be060a0830184613a1b565b979650505050505050565b5f805f60608486031215614c0257614c01613949565b5b5f614c0f86828701613eaf565b9350506020614c2086828701613eaf565b9250506040614c3186828701613eaf565b915050925092509256fea26469706673582212206253d9a4a228c2112778f4d20e2a5f2470092b807b8f04bab7d69bf332b91c3d64736f6c63430008140033

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

00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000c9f2c9cd04674edea400000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000442fe32b41e3113abed2a76f64caaa1a730d558c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000054b61747a6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034b545a0000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Katza
Arg [1] : _symbol (string): KTZ
Arg [2] : _initialSupply (uint256): 1000000000000000000000000000000
Arg [3] : _v2Router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [4] : _protocolWallet (address): 0x442Fe32B41e3113aBEd2a76f64caAa1a730D558C
Arg [5] : _protocolFee (uint8): 1
Arg [6] : _liquidityFee (uint8): 0
Arg [7] : _teamFee (uint8): 2
Arg [8] : _limitsActive (bool): True
Arg [9] : _blacklistActive (bool): True

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 000000000000000000000000000000000000000c9f2c9cd04674edea40000000
Arg [3] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [4] : 000000000000000000000000442fe32b41e3113abed2a76f64caaa1a730d558c
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [11] : 4b61747a61000000000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [13] : 4b545a0000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

15788:11712:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16799:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16076:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16125:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10262:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10946:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10354:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16304:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11331:351;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24618:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26328:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10314:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13225:179;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15971:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16213:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16663:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27407:90;;;;;;;;;;;;;:::i;:::-;;25642:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16170:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16729:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24366:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10387:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7907:103;;;;;;;;;;;;;:::i;:::-;;27092:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26108:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10619:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15881:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23221:121;;;;;;;;;;;;;:::i;:::-;;7266:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10287:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16470:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16389;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23404:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11171:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23745:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16430:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16344:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25390:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25203:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16889:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11690:1527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16511:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10438:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16027:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16843:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25886:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24104:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27270:86;;;;;;;;;;;;;:::i;:::-;;8165:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16934:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16549:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26783:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16255:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24777:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16602:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26579:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16799:37;;;;;;;;;;;;;:::o;16076:40::-;;;:::o;16125:38::-;;;;;;;;;;;;;:::o;10262:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10946:217::-;11020:4;11070:6;11037:9;:21;11047:10;11037:21;;;;;;;;;;;;;;;:30;11059:7;11037:30;;;;;;;;;;;;;;;:39;;;;11115:7;11094:37;;11103:10;11094:37;;;11124:6;11094:37;;;;;;:::i;:::-;;;;;;;;11151:4;11144:11;;10946:217;;;;:::o;10354:26::-;;;;:::o;16304:33::-;;;;;;;;;;;;;:::o;11331:351::-;11419:4;11436:15;11454:9;:15;11464:4;11454:15;;;;;;;;;;;;;;;:27;11470:10;11454:27;;;;;;;;;;;;;;;;11436:45;;11545:17;11534:7;:28;11530:80;;11604:6;11594:7;:16;;;;:::i;:::-;11564:9;:15;11574:4;11564:15;;;;;;;;;;;;;;;:27;11580:10;11564:27;;;;;;;;;;;;;;;:46;;;;11530:80;11623:27;11633:4;11639:2;11643:6;11623:9;:27::i;:::-;11670:4;11663:11;;;11331:351;;;;;:::o;24618:116::-;7152:13;:11;:13::i;:::-;24719:7:::1;24697:19;;:29;;;;;;;;;;;;;;;;;;24618:116:::0;:::o;26328:194::-;7152:13;:11;:13::i;:::-;26430:1:::1;26413:19;;:5;:19;;::::0;26405:34:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26456:5;26450:21;;;26472:2;26482:5;26476:22;;;26507:4;26476:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26450:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26328:194:::0;;:::o;10314:31::-;;;:::o;13225:179::-;13282:7;13326:16;13309:13;:33;:87;;13372:24;:22;:24::i;:::-;13309:87;;;13345:24;13309:87;13302:94;;13225:179;:::o;15971:47::-;;;:::o;16213:35::-;;;;;;;;;;;;;:::o;16663:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;27407:90::-;7152:13;:11;:13::i;:::-;27484:5:::1;27466:15;;:23;;;;;;;;;;;;;;;;;;27407:90::o:0;25642:195::-;7152:13;:11;:13::i;:::-;25721:3:::1;25716:42;;25745:6;25734:17;;:7;:17;;::::0;25726:32:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25716:42;25786:3;25769:5;:14;25775:7;25769:14;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;25816:7;25805:24;;;25825:3;25805:24;;;;;;:::i;:::-;;;;;;;;25642:195:::0;;:::o;16170:34::-;;;;;;;;;;;;;:::o;16729:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;24366:192::-;7152:13;:11;:13::i;:::-;24467:31:::1;24486:3;24491:6;24467:11;;:18;;:31;;;;;:::i;:::-;24451:12;:47;;;;24443:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;24538:12;24526:9;;:24;;;;;;;;;;;;;;;;;;24366:192:::0;:::o;10387:44::-;;;;;;;;;;;;;;;;;:::o;7907:103::-;7152:13;:11;:13::i;:::-;7972:30:::1;7999:1;7972:18;:30::i;:::-;7907:103::o:0;27092:104::-;7152:13;:11;:13::i;:::-;27183:5:::1;27158:13;:22;27172:7;27158:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;27092:104:::0;:::o;26108:161::-;7152:13;:11;:13::i;:::-;26217:10:::1;;;;;;;;;;;26188:40;;26206:9;26188:40;;;;;;;;;;;;26252:9;26239:10;;:22;;;;;;;;;;;;;;;;;;26108:161:::0;:::o;10619:41::-;;;;;;;;;;;;;;;;;:::o;15881:82::-;15929:5;15954:1;15947:8;;15881:82;:::o;23221:121::-;7152:13;:11;:13::i;:::-;23293:4:::1;23276:14;;:21;;;;;;;;;;;;;;;;;;23330:4;23308:19;;:26;;;;;;;;;;;;;;;;;;23221:121::o:0;7266:87::-;7312:7;7339:6;;;;;;;;;;;7332:13;;7266:87;:::o;10287:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16470:34::-;;;;;;;;;;;;;:::o;16389:::-;;;;;;;;;;;;;:::o;23404:290::-;7152:13;:11;:13::i;:::-;23509:32:::1;23528:1;23531:9;23509:11;;:18;;:32;;;;;:::i;:::-;23493:12;:48;;;;23485:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23598:29;23617:1;23620:6;23598:11;;:18;;:29;;;;;:::i;:::-;23582:12;:45;;;;23574:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23674:12;23658:13;;:28;;;;;;;;;;;;;;;;;;23404:290:::0;:::o;11171:152::-;11241:4;11258:33;11268:10;11280:2;11284:6;11258:9;:33::i;:::-;11311:4;11304:11;;11171:152;;;;:::o;23745:283::-;7152:13;:11;:13::i;:::-;23848:30:::1;23867:1;23870:7;23848:11;;:18;;:30;;;;;:::i;:::-;23834:10;:44;;;;23826:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23932:30;23951:2;23955:6;23932:11;;:18;;:30;;;;;:::i;:::-;23918:10;:44;;;;23910:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24010:10;23992:15;;:28;;;;;;;;;;;;;;;;;;23745:283:::0;:::o;16430:33::-;;;;;;;;;;;;;:::o;16344:36::-;;;;;;;;;;;;;:::o;25390:181::-;7152:13;:11;:13::i;:::-;25505:8:::1;25475:18;:27;25494:7;25475:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;25545:7;25529:34;;;25554:8;25529:34;;;;;;:::i;:::-;;;;;;;;25390:181:::0;;:::o;25203:135::-;7152:13;:11;:13::i;:::-;25322:8:::1;25290:20;:29;25311:7;25290:29;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;25203:135:::0;;:::o;16889:38::-;;;;;;;;;;;;;:::o;11690:1527::-;11918:15;11906:8;:27;;11898:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12131:24;12158:827;12298:18;:16;:18::i;:::-;12428:167;12630:5;12670:7;12712:5;12752:6;:13;12759:5;12752:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;12802:8;12383:458;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12343:525;;;;;;12218:673;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12186:724;;;;;;12929:1;12949;12969;12158:827;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12131:854;;13038:1;13010:30;;:16;:30;;;;:59;;;;;13064:5;13044:25;;:16;:25;;;13010:59;13002:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;13144:5;13105:9;:27;13115:16;13105:27;;;;;;;;;;;;;;;:36;13133:7;13105:36;;;;;;;;;;;;;;;:44;;;;12106:1055;13194:7;13178:31;;13187:5;13178:31;;;13203:5;13178:31;;;;;;:::i;:::-;;;;;;;;11690:1527;;;;;;;:::o;16511:29::-;;;;;;;;;;;;;:::o;10438:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16027:42::-;;;:::o;16843:39::-;;;;;;;;;;;;;:::o;25886:177::-;7152:13;:11;:13::i;:::-;26003:14:::1;;;;;;;;;;;25970:48;;25992:9;25970:48;;;;;;;;;;;;26046:9;26029:14;;:26;;;;;;;;;;;;;;;;;;25886:177:::0;:::o;24104:191::-;7152:13;:11;:13::i;:::-;24202:30:::1;24221:2;24225:6;24202:11;;:18;;:30;;;;;:::i;:::-;24190:8;:42;;;;24182:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;24279:8;24262:14;;:25;;;;;;;;;;;;;;;;;;24104:191:::0;:::o;27270:86::-;7152:13;:11;:13::i;:::-;27343:5:::1;27328:12;;:20;;;;;;;;;;;;;;;;;;27270:86::o:0;8165:201::-;7152:13;:11;:13::i;:::-;8274:1:::1;8254:22;;:8;:22;;::::0;8246:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8330:28;8349:8;8330:18;:28::i;:::-;8165:201:::0;:::o;16934:33::-;;;;;;;;;;;;;:::o;16549:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;26783:250::-;7152:13;:11;:13::i;:::-;26855:15:::1;;;;;;;;;;;26847:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;26915:6;26896:26;;:7;:26;;::::0;26888:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26968:8;26949:28;;:7;:28;;::::0;26941:44:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27021:4;26996:13;:22;27010:7;26996:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;26783:250:::0;:::o;16255:40::-;;;;;;;;;;;;;:::o;24777:350::-;7152:13;:11;:13::i;:::-;24933:9:::1;:7;:9::i;:::-;24890:52;;24921:8;24905:13;24890:12;:28;;;;:::i;:::-;:39;;;;:::i;:::-;:52;;;;24882:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25006:8;24990:13;24975:12;:28;;;;:::i;:::-;:39;;;;:::i;:::-;24960:12;;:54;;;;;;;;;;;;;;;;;;25039:12;25025:11;;:26;;;;;;;;;;;;;;;;;;25077:13;25062:12;;:28;;;;;;;;;;;;;;;;;;25111:8;25101:7;;:18;;;;;;;;;;;;;;;;;;24777:350:::0;;;:::o;16602:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;26579:161::-;7152:13;:11;:13::i;:::-;26640:12:::1;26658:2;:7;;26673:21;26658:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26639:60;;;26718:7;26710:22;;;;;;;;;;;;:::i;:::-;;;;;;;;;26628:112;26579:161:::0;:::o;18814:1379::-;18908:15;;;;;;;;;;;18904:79;;;18935:13;:19;18949:4;18935:19;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;18958:13;:17;18972:2;18958:17;;;;;;;;;;;;;;;;;;;;;;;;;18935:40;18933:43;18925:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;18904:79;18998:12;;;;;;;;;;;18994:48;;;19012:30;19025:4;19031:2;19035:6;19012:12;:30::i;:::-;18994:48;19055:13;19071:18;:24;19090:4;19071:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;19099:18;:22;19118:2;19099:22;;;;;;;;;;;;;;;;;;;;;;;;;19071:50;19055:66;;19132:14;19149:12;;;;;;;;;;;19132:29;;19178:8;:25;;;;19202:1;19190:8;:13;;;19178:25;:40;;;;19217:1;19207:6;:11;19178:40;19174:192;;;19300:33;19316:4;19322:2;19326:6;19300:15;:33::i;:::-;19348:7;;;;19174:192;19445:9;;;;;;;;;;;19434:20;;19467:10;19480:5;:11;19486:4;19480:11;;;;;;;;;;;;;;;;;;;;;;;;;19467:24;;19508:5;:17;;;;19517:8;19508:17;:41;;;;19530:19;;;;;;;;;;;19529:20;19508:41;:85;;;;19580:13;;;;;;;;;;;19553:40;;:9;:24;19571:4;19553:24;;;;;;;;;;;;;;;;:40;19508:85;19504:230;;19660:4;19648:9;;:16;;;;;;;;;;;;;;;;;;19679:11;:9;:11::i;:::-;19717:5;19705:9;;:17;;;;;;;;;;;;;;;;;;19504:230;19767:6;19748:9;:15;19758:4;19748:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;19784:11;19817:5;:18;;;;19826:5;:9;19832:2;19826:9;;;;;;;;;;;;;;;;;;;;;;;;;19817:18;19816:33;;;;;19841:8;19840:9;19816:33;19812:246;;;19872:28;19886:8;19872:28;;19896:3;19872:6;:13;;:28;;;;;:::i;:::-;19866:34;;19974:3;19946:9;:24;19964:4;19946:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;20035:4;20012:34;;20021:4;20012:34;;;20042:3;20012:34;;;;;;:::i;:::-;;;;;;;;19812:246;20122:3;20113:6;:12;20095:9;:13;20105:2;20095:13;;;;;;;;;;;;;;;;:31;;;;;;;;;;;20168:2;20153:32;;20162:4;20153:32;;;20181:3;20172:6;:12;;;;:::i;:::-;20153:32;;;;;;:::i;:::-;;;;;;;;18893:1300;;;;18814:1379;;;;:::o;7431:132::-;7506:12;:10;:12::i;:::-;7495:23;;:7;:5;:7::i;:::-;:23;;;7487:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7431:132::o;13412:457::-;13477:7;13578:95;13712:4;13696:22;;;;;;:::i;:::-;;;;;;;;13741:14;13778:13;13822:4;13545:301;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13517:344;;;;;;13497:364;;13412:457;:::o;15098:503::-;15180:9;15432:1;15419:11;15415:19;15412:1;15409:26;15406:1;15402:34;15395:42;15382:11;15378:60;15368:118;;15469:1;15466;15459:12;15368:118;15571:11;15567:1;15564;15560:9;15556:27;15551:32;;15098:503;;;;;:::o;8526:191::-;8600:16;8619:6;;;;;;;;;;;8600:25;;8645:8;8636:6;;:17;;;;;;;;;;;;;;;;;;8700:8;8669:40;;8690:8;8669:40;;;;;;;;;;;;8589:128;8526:191;:::o;20201:808::-;20302:7;:5;:7::i;:::-;20294:15;;:4;:15;;;:32;;;;20319:7;:5;:7::i;:::-;20313:13;;:2;:13;;;20294:32;:46;;;;17084:6;20330:10;;:2;:10;;;20294:46;:59;;;;20344:9;;;;;;;;;;;20294:59;20355:7;20290:72;20379:14;;;;;;;;;;;20374:113;;20418:18;:24;20437:4;20418:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;20446:18;:22;20465:2;20446:22;;;;;;;;;;;;;;;;;;;;;;;;;20418:50;20410:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20374:113;20517:5;:11;20523:4;20517:11;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;;20533:20;:24;20554:2;20533:24;;;;;;;;;;;;;;;;;;;;;;;;;20532:25;20517:40;20513:489;;;20592:14;;;;;;;;;;;20582:24;;:6;:24;;20574:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;20666:9;;;;;;;;;;;20640:35;;20649:9;:13;20659:2;20649:13;;;;;;;;;;;;;;;;20640:6;:22;;;;:::i;:::-;:35;;20632:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20513:489;;;20738:5;:9;20744:2;20738:9;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;;20752:20;:26;20773:4;20752:26;;;;;;;;;;;;;;;;;;;;;;;;;20751:27;20738:40;20734:268;;;20813:14;;;;;;;;;;;20803:24;;:6;:24;;20795:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;20734:268;;;20891:20;:24;20912:2;20891:24;;;;;;;;;;;;;;;;;;;;;;;;;20886:116;;20966:9;;;;;;;;;;;20940:35;;20949:9;:13;20959:2;20949:13;;;;;;;;;;;;;;;;20940:6;:22;;;;:::i;:::-;:35;;20932:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20886:116;20734:268;20513:489;20201:808;;;;:::o;13877:351::-;13985:6;13966:9;:15;13976:4;13966:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;14159:6;14142:9;:13;14152:2;14142:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14209:2;14194:26;;14203:4;14194:26;;;14213:6;14194:26;;;;;;:::i;:::-;;;;;;;;13877:351;;;:::o;21082:1297::-;21122:15;21140:9;:24;21158:4;21140:24;;;;;;;;;;;;;;;;21122:42;;21192:1;21181:7;:12;21177:25;;21195:7;;;21177:25;21226:15;;;;;;;;;;;21216:25;;:7;:25;21212:56;;;21253:15;;;;;;;;;;;21243:25;;;;21212:56;21281:22;21306:41;21321:11;;;;;;;;;;;21306:41;;21334:12;;;;;;;;;;;21306:41;;:7;:14;;:41;;;;;:::i;:::-;21281:66;;21358:18;21379:37;21394:7;;;;;;;;;;;21379:37;;21403:12;;;;;;;;;;;21379:37;;:7;:14;;:37;;;;;:::i;:::-;21358:58;;21485:23;21553:1;21539:10;21522:14;21512:7;:24;;;;:::i;:::-;:37;;;;:::i;:::-;21511:43;;;;:::i;:::-;21485:69;;21565:18;21596:15;21586:7;:25;;;;:::i;:::-;21565:46;;21624:18;21645:21;21624:42;;21679:29;21697:10;21679:17;:29::i;:::-;21758:10;21734:21;:34;;;;:::i;:::-;21721:47;;21781:18;21802:41;21820:10;21832;21802;:17;;:41;;;;;:::i;:::-;21781:62;;21854:23;21906:45;21924:14;21940:10;21906;:17;;:45;;;;;:::i;:::-;21893:10;21880;:23;;;;:::i;:::-;:71;;;;:::i;:::-;21854:97;;21986:1;21968:15;:19;:42;;;;;22009:1;21991:15;:19;21968:42;21964:200;;;22027:47;22041:15;22058;22027:13;:47::i;:::-;22096:56;22107:10;22119:15;22136;22096:56;;;;;;;;:::i;:::-;;;;;;;;21964:200;22237:12;22255:10;;;;;;;;;;;:15;;22278:10;22255:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22236:57;;;22318:14;;;;;;;;;;;:19;;22345:21;22318:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22304:67;;;;;21111:1268;;;;;;;;;21082:1297;:::o;5835:98::-;5888:7;5915:10;5908:17;;5835:98;:::o;22427:386::-;22489:21;22527:1;22513:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22489:40;;22558:4;22540;22545:1;22540:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22584:4;22574;22579:1;22574:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;22620:8;22601:79;;;22695:6;22716:1;22732:4;22759;22779:15;22601:204;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22478:335;22427:386;:::o;22852:301::-;22953:8;22934:44;;;22986:9;23019:4;23039:11;23065:1;23081;23097:7;:5;:7::i;:::-;23119:15;22934:211;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22852:301;;:::o;7:118:1:-;44:7;84:34;77:5;73:46;62:57;;7:118;;;:::o;131:::-;218:24;236:5;218:24;:::i;:::-;213:3;206:37;131:118;;:::o;255:222::-;348:4;386:2;375:9;371:18;363:26;;399:71;467:1;456:9;452:17;443:6;399:71;:::i;:::-;255:222;;;;:::o;483:126::-;520:7;560:42;553:5;549:54;538:65;;483:126;;;:::o;615:96::-;652:7;681:24;699:5;681:24;:::i;:::-;670:35;;615:96;;;:::o;717:118::-;804:24;822:5;804:24;:::i;:::-;799:3;792:37;717:118;;:::o;841:222::-;934:4;972:2;961:9;957:18;949:26;;985:71;1053:1;1042:9;1038:17;1029:6;985:71;:::i;:::-;841:222;;;;:::o;1069:99::-;1121:6;1155:5;1149:12;1139:22;;1069:99;;;:::o;1174:169::-;1258:11;1292:6;1287:3;1280:19;1332:4;1327:3;1323:14;1308:29;;1174:169;;;;:::o;1349:246::-;1430:1;1440:113;1454:6;1451:1;1448:13;1440:113;;;1539:1;1534:3;1530:11;1524:18;1520:1;1515:3;1511:11;1504:39;1476:2;1473:1;1469:10;1464:15;;1440:113;;;1587:1;1578:6;1573:3;1569:16;1562:27;1411:184;1349:246;;;:::o;1601:102::-;1642:6;1693:2;1689:7;1684:2;1677:5;1673:14;1669:28;1659:38;;1601:102;;;:::o;1709:377::-;1797:3;1825:39;1858:5;1825:39;:::i;:::-;1880:71;1944:6;1939:3;1880:71;:::i;:::-;1873:78;;1960:65;2018:6;2013:3;2006:4;1999:5;1995:16;1960:65;:::i;:::-;2050:29;2072:6;2050:29;:::i;:::-;2045:3;2041:39;2034:46;;1801:285;1709:377;;;;:::o;2092:313::-;2205:4;2243:2;2232:9;2228:18;2220:26;;2292:9;2286:4;2282:20;2278:1;2267:9;2263:17;2256:47;2320:78;2393:4;2384:6;2320:78;:::i;:::-;2312:86;;2092:313;;;;:::o;2492:117::-;2601:1;2598;2591:12;2738:122;2811:24;2829:5;2811:24;:::i;:::-;2804:5;2801:35;2791:63;;2850:1;2847;2840:12;2791:63;2738:122;:::o;2866:139::-;2912:5;2950:6;2937:20;2928:29;;2966:33;2993:5;2966:33;:::i;:::-;2866:139;;;;:::o;3011:77::-;3048:7;3077:5;3066:16;;3011:77;;;:::o;3094:122::-;3167:24;3185:5;3167:24;:::i;:::-;3160:5;3157:35;3147:63;;3206:1;3203;3196:12;3147:63;3094:122;:::o;3222:139::-;3268:5;3306:6;3293:20;3284:29;;3322:33;3349:5;3322:33;:::i;:::-;3222:139;;;;:::o;3367:474::-;3435:6;3443;3492:2;3480:9;3471:7;3467:23;3463:32;3460:119;;;3498:79;;:::i;:::-;3460:119;3618:1;3643:53;3688:7;3679:6;3668:9;3664:22;3643:53;:::i;:::-;3633:63;;3589:117;3745:2;3771:53;3816:7;3807:6;3796:9;3792:22;3771:53;:::i;:::-;3761:63;;3716:118;3367:474;;;;;:::o;3847:90::-;3881:7;3924:5;3917:13;3910:21;3899:32;;3847:90;;;:::o;3943:109::-;4024:21;4039:5;4024:21;:::i;:::-;4019:3;4012:34;3943:109;;:::o;4058:210::-;4145:4;4183:2;4172:9;4168:18;4160:26;;4196:65;4258:1;4247:9;4243:17;4234:6;4196:65;:::i;:::-;4058:210;;;;:::o;4274:118::-;4361:24;4379:5;4361:24;:::i;:::-;4356:3;4349:37;4274:118;;:::o;4398:222::-;4491:4;4529:2;4518:9;4514:18;4506:26;;4542:71;4610:1;4599:9;4595:17;4586:6;4542:71;:::i;:::-;4398:222;;;;:::o;4626:619::-;4703:6;4711;4719;4768:2;4756:9;4747:7;4743:23;4739:32;4736:119;;;4774:79;;:::i;:::-;4736:119;4894:1;4919:53;4964:7;4955:6;4944:9;4940:22;4919:53;:::i;:::-;4909:63;;4865:117;5021:2;5047:53;5092:7;5083:6;5072:9;5068:22;5047:53;:::i;:::-;5037:63;;4992:118;5149:2;5175:53;5220:7;5211:6;5200:9;5196:22;5175:53;:::i;:::-;5165:63;;5120:118;4626:619;;;;;:::o;5251:116::-;5321:21;5336:5;5321:21;:::i;:::-;5314:5;5311:32;5301:60;;5357:1;5354;5347:12;5301:60;5251:116;:::o;5373:133::-;5416:5;5454:6;5441:20;5432:29;;5470:30;5494:5;5470:30;:::i;:::-;5373:133;;;;:::o;5512:323::-;5568:6;5617:2;5605:9;5596:7;5592:23;5588:32;5585:119;;;5623:79;;:::i;:::-;5585:119;5743:1;5768:50;5810:7;5801:6;5790:9;5786:22;5768:50;:::i;:::-;5758:60;;5714:114;5512:323;;;;:::o;5841:474::-;5909:6;5917;5966:2;5954:9;5945:7;5941:23;5937:32;5934:119;;;5972:79;;:::i;:::-;5934:119;6092:1;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6063:117;6219:2;6245:53;6290:7;6281:6;6270:9;6266:22;6245:53;:::i;:::-;6235:63;;6190:118;5841:474;;;;;:::o;6321:86::-;6356:7;6396:4;6389:5;6385:16;6374:27;;6321:86;;;:::o;6413:112::-;6496:22;6512:5;6496:22;:::i;:::-;6491:3;6484:35;6413:112;;:::o;6531:214::-;6620:4;6658:2;6647:9;6643:18;6635:26;;6671:67;6735:1;6724:9;6720:17;6711:6;6671:67;:::i;:::-;6531:214;;;;:::o;6751:77::-;6788:7;6817:5;6806:16;;6751:77;;;:::o;6834:118::-;6921:24;6939:5;6921:24;:::i;:::-;6916:3;6909:37;6834:118;;:::o;6958:222::-;7051:4;7089:2;7078:9;7074:18;7066:26;;7102:71;7170:1;7159:9;7155:17;7146:6;7102:71;:::i;:::-;6958:222;;;;:::o;7186:329::-;7245:6;7294:2;7282:9;7273:7;7269:23;7265:32;7262:119;;;7300:79;;:::i;:::-;7262:119;7420:1;7445:53;7490:7;7481:6;7470:9;7466:22;7445:53;:::i;:::-;7435:63;;7391:117;7186:329;;;;:::o;7521:468::-;7586:6;7594;7643:2;7631:9;7622:7;7618:23;7614:32;7611:119;;;7649:79;;:::i;:::-;7611:119;7769:1;7794:53;7839:7;7830:6;7819:9;7815:22;7794:53;:::i;:::-;7784:63;;7740:117;7896:2;7922:50;7964:7;7955:6;7944:9;7940:22;7922:50;:::i;:::-;7912:60;;7867:115;7521:468;;;;;:::o;7995:122::-;8068:24;8086:5;8068:24;:::i;:::-;8061:5;8058:35;8048:63;;8107:1;8104;8097:12;8048:63;7995:122;:::o;8123:139::-;8169:5;8207:6;8194:20;8185:29;;8223:33;8250:5;8223:33;:::i;:::-;8123:139;;;;:::o;8268:329::-;8327:6;8376:2;8364:9;8355:7;8351:23;8347:32;8344:119;;;8382:79;;:::i;:::-;8344:119;8502:1;8527:53;8572:7;8563:6;8552:9;8548:22;8527:53;:::i;:::-;8517:63;;8473:117;8268:329;;;;:::o;8603:118::-;8674:22;8690:5;8674:22;:::i;:::-;8667:5;8664:33;8654:61;;8711:1;8708;8701:12;8654:61;8603:118;:::o;8727:135::-;8771:5;8809:6;8796:20;8787:29;;8825:31;8850:5;8825:31;:::i;:::-;8727:135;;;;:::o;8868:122::-;8941:24;8959:5;8941:24;:::i;:::-;8934:5;8931:35;8921:63;;8980:1;8977;8970:12;8921:63;8868:122;:::o;8996:139::-;9042:5;9080:6;9067:20;9058:29;;9096:33;9123:5;9096:33;:::i;:::-;8996:139;;;;:::o;9141:1199::-;9252:6;9260;9268;9276;9284;9292;9300;9349:3;9337:9;9328:7;9324:23;9320:33;9317:120;;;9356:79;;:::i;:::-;9317:120;9476:1;9501:53;9546:7;9537:6;9526:9;9522:22;9501:53;:::i;:::-;9491:63;;9447:117;9603:2;9629:53;9674:7;9665:6;9654:9;9650:22;9629:53;:::i;:::-;9619:63;;9574:118;9731:2;9757:53;9802:7;9793:6;9782:9;9778:22;9757:53;:::i;:::-;9747:63;;9702:118;9859:2;9885:53;9930:7;9921:6;9910:9;9906:22;9885:53;:::i;:::-;9875:63;;9830:118;9987:3;10014:51;10057:7;10048:6;10037:9;10033:22;10014:51;:::i;:::-;10004:61;;9958:117;10114:3;10141:53;10186:7;10177:6;10166:9;10162:22;10141:53;:::i;:::-;10131:63;;10085:119;10243:3;10270:53;10315:7;10306:6;10295:9;10291:22;10270:53;:::i;:::-;10260:63;;10214:119;9141:1199;;;;;;;;;;:::o;10346:607::-;10417:6;10425;10433;10482:2;10470:9;10461:7;10457:23;10453:32;10450:119;;;10488:79;;:::i;:::-;10450:119;10608:1;10633:51;10676:7;10667:6;10656:9;10652:22;10633:51;:::i;:::-;10623:61;;10579:115;10733:2;10759:51;10802:7;10793:6;10782:9;10778:22;10759:51;:::i;:::-;10749:61;;10704:116;10859:2;10885:51;10928:7;10919:6;10908:9;10904:22;10885:51;:::i;:::-;10875:61;;10830:116;10346:607;;;;;:::o;10959:180::-;11007:77;11004:1;10997:88;11104:4;11101:1;11094:15;11128:4;11125:1;11118:15;11145:320;11189:6;11226:1;11220:4;11216:12;11206:22;;11273:1;11267:4;11263:12;11294:18;11284:81;;11350:4;11342:6;11338:17;11328:27;;11284:81;11412:2;11404:6;11401:14;11381:18;11378:38;11375:84;;11431:18;;:::i;:::-;11375:84;11196:269;11145:320;;;:::o;11471:180::-;11519:77;11516:1;11509:88;11616:4;11613:1;11606:15;11640:4;11637:1;11630:15;11657:194;11697:4;11717:20;11735:1;11717:20;:::i;:::-;11712:25;;11751:20;11769:1;11751:20;:::i;:::-;11746:25;;11795:1;11792;11788:9;11780:17;;11819:1;11813:4;11810:11;11807:37;;;11824:18;;:::i;:::-;11807:37;11657:194;;;;:::o;11857:152::-;11997:4;11993:1;11985:6;11981:14;11974:28;11857:152;:::o;12015:365::-;12157:3;12178:66;12242:1;12237:3;12178:66;:::i;:::-;12171:73;;12253:93;12342:3;12253:93;:::i;:::-;12371:2;12366:3;12362:12;12355:19;;12015:365;;;:::o;12386:419::-;12552:4;12590:2;12579:9;12575:18;12567:26;;12639:9;12633:4;12629:20;12625:1;12614:9;12610:17;12603:47;12667:131;12793:4;12667:131;:::i;:::-;12659:139;;12386:419;;;:::o;12811:143::-;12868:5;12899:6;12893:13;12884:22;;12915:33;12942:5;12915:33;:::i;:::-;12811:143;;;;:::o;12960:351::-;13030:6;13079:2;13067:9;13058:7;13054:23;13050:32;13047:119;;;13085:79;;:::i;:::-;13047:119;13205:1;13230:64;13286:7;13277:6;13266:9;13262:22;13230:64;:::i;:::-;13220:74;;13176:128;12960:351;;;;:::o;13317:332::-;13438:4;13476:2;13465:9;13461:18;13453:26;;13489:71;13557:1;13546:9;13542:17;13533:6;13489:71;:::i;:::-;13570:72;13638:2;13627:9;13623:18;13614:6;13570:72;:::i;:::-;13317:332;;;;;:::o;13655:137::-;13709:5;13740:6;13734:13;13725:22;;13756:30;13780:5;13756:30;:::i;:::-;13655:137;;;;:::o;13798:345::-;13865:6;13914:2;13902:9;13893:7;13889:23;13885:32;13882:119;;;13920:79;;:::i;:::-;13882:119;14040:1;14065:61;14118:7;14109:6;14098:9;14094:22;14065:61;:::i;:::-;14055:71;;14011:125;13798:345;;;;:::o;14149:152::-;14289:4;14285:1;14277:6;14273:14;14266:28;14149:152;:::o;14307:365::-;14449:3;14470:66;14534:1;14529:3;14470:66;:::i;:::-;14463:73;;14545:93;14634:3;14545:93;:::i;:::-;14663:2;14658:3;14654:12;14647:19;;14307:365;;;:::o;14678:419::-;14844:4;14882:2;14871:9;14867:18;14859:26;;14931:9;14925:4;14921:20;14917:1;14906:9;14902:17;14895:47;14959:131;15085:4;14959:131;:::i;:::-;14951:139;;14678:419;;;:::o;15103:153::-;15243:5;15239:1;15231:6;15227:14;15220:29;15103:153;:::o;15262:365::-;15404:3;15425:66;15489:1;15484:3;15425:66;:::i;:::-;15418:73;;15500:93;15589:3;15500:93;:::i;:::-;15618:2;15613:3;15609:12;15602:19;;15262:365;;;:::o;15633:419::-;15799:4;15837:2;15826:9;15822:18;15814:26;;15886:9;15880:4;15876:20;15872:1;15861:9;15857:17;15850:47;15914:131;16040:4;15914:131;:::i;:::-;15906:139;;15633:419;;;:::o;16058:153::-;16198:5;16194:1;16186:6;16182:14;16175:29;16058:153;:::o;16217:365::-;16359:3;16380:66;16444:1;16439:3;16380:66;:::i;:::-;16373:73;;16455:93;16544:3;16455:93;:::i;:::-;16573:2;16568:3;16564:12;16557:19;;16217:365;;;:::o;16588:419::-;16754:4;16792:2;16781:9;16777:18;16769:26;;16841:9;16835:4;16831:20;16827:1;16816:9;16812:17;16805:47;16869:131;16995:4;16869:131;:::i;:::-;16861:139;;16588:419;;;:::o;17013:153::-;17153:5;17149:1;17141:6;17137:14;17130:29;17013:153;:::o;17172:365::-;17314:3;17335:66;17399:1;17394:3;17335:66;:::i;:::-;17328:73;;17410:93;17499:3;17410:93;:::i;:::-;17528:2;17523:3;17519:12;17512:19;;17172:365;;;:::o;17543:419::-;17709:4;17747:2;17736:9;17732:18;17724:26;;17796:9;17790:4;17786:20;17782:1;17771:9;17767:17;17760:47;17824:131;17950:4;17824:131;:::i;:::-;17816:139;;17543:419;;;:::o;17968:173::-;18108:25;18104:1;18096:6;18092:14;18085:49;17968:173;:::o;18147:366::-;18289:3;18310:67;18374:2;18369:3;18310:67;:::i;:::-;18303:74;;18386:93;18475:3;18386:93;:::i;:::-;18504:2;18499:3;18495:12;18488:19;;18147:366;;;:::o;18519:419::-;18685:4;18723:2;18712:9;18708:18;18700:26;;18772:9;18766:4;18762:20;18758:1;18747:9;18743:17;18736:47;18800:131;18926:4;18800:131;:::i;:::-;18792:139;;18519:419;;;:::o;18944:775::-;19177:4;19215:3;19204:9;19200:19;19192:27;;19229:71;19297:1;19286:9;19282:17;19273:6;19229:71;:::i;:::-;19310:72;19378:2;19367:9;19363:18;19354:6;19310:72;:::i;:::-;19392;19460:2;19449:9;19445:18;19436:6;19392:72;:::i;:::-;19474;19542:2;19531:9;19527:18;19518:6;19474:72;:::i;:::-;19556:73;19624:3;19613:9;19609:19;19600:6;19556:73;:::i;:::-;19639;19707:3;19696:9;19692:19;19683:6;19639:73;:::i;:::-;18944:775;;;;;;;;;:::o;19725:148::-;19827:11;19864:3;19849:18;;19725:148;;;;:::o;19879:214::-;20019:66;20015:1;20007:6;20003:14;19996:90;19879:214;:::o;20099:400::-;20259:3;20280:84;20362:1;20357:3;20280:84;:::i;:::-;20273:91;;20373:93;20462:3;20373:93;:::i;:::-;20491:1;20486:3;20482:11;20475:18;;20099:400;;;:::o;20505:79::-;20544:7;20573:5;20562:16;;20505:79;;;:::o;20590:157::-;20695:45;20715:24;20733:5;20715:24;:::i;:::-;20695:45;:::i;:::-;20690:3;20683:58;20590:157;;:::o;20753:663::-;20994:3;21016:148;21160:3;21016:148;:::i;:::-;21009:155;;21174:75;21245:3;21236:6;21174:75;:::i;:::-;21274:2;21269:3;21265:12;21258:19;;21287:75;21358:3;21349:6;21287:75;:::i;:::-;21387:2;21382:3;21378:12;21371:19;;21407:3;21400:10;;20753:663;;;;;:::o;21422:545::-;21595:4;21633:3;21622:9;21618:19;21610:27;;21647:71;21715:1;21704:9;21700:17;21691:6;21647:71;:::i;:::-;21728:68;21792:2;21781:9;21777:18;21768:6;21728:68;:::i;:::-;21806:72;21874:2;21863:9;21859:18;21850:6;21806:72;:::i;:::-;21888;21956:2;21945:9;21941:18;21932:6;21888:72;:::i;:::-;21422:545;;;;;;;:::o;21973:164::-;22113:16;22109:1;22101:6;22097:14;22090:40;21973:164;:::o;22143:366::-;22285:3;22306:67;22370:2;22365:3;22306:67;:::i;:::-;22299:74;;22382:93;22471:3;22382:93;:::i;:::-;22500:2;22495:3;22491:12;22484:19;;22143:366;;;:::o;22515:419::-;22681:4;22719:2;22708:9;22704:18;22696:26;;22768:9;22762:4;22758:20;22754:1;22743:9;22739:17;22732:47;22796:131;22922:4;22796:131;:::i;:::-;22788:139;;22515:419;;;:::o;22940:153::-;23080:5;23076:1;23068:6;23064:14;23057:29;22940:153;:::o;23099:365::-;23241:3;23262:66;23326:1;23321:3;23262:66;:::i;:::-;23255:73;;23337:93;23426:3;23337:93;:::i;:::-;23455:2;23450:3;23446:12;23439:19;;23099:365;;;:::o;23470:419::-;23636:4;23674:2;23663:9;23659:18;23651:26;;23723:9;23717:4;23713:20;23709:1;23698:9;23694:17;23687:47;23751:131;23877:4;23751:131;:::i;:::-;23743:139;;23470:419;;;:::o;23895:225::-;24035:34;24031:1;24023:6;24019:14;24012:58;24104:8;24099:2;24091:6;24087:15;24080:33;23895:225;:::o;24126:366::-;24268:3;24289:67;24353:2;24348:3;24289:67;:::i;:::-;24282:74;;24365:93;24454:3;24365:93;:::i;:::-;24483:2;24478:3;24474:12;24467:19;;24126:366;;;:::o;24498:419::-;24664:4;24702:2;24691:9;24687:18;24679:26;;24751:9;24745:4;24741:20;24737:1;24726:9;24722:17;24715:47;24779:131;24905:4;24779:131;:::i;:::-;24771:139;;24498:419;;;:::o;24923:152::-;25063:4;25059:1;25051:6;25047:14;25040:28;24923:152;:::o;25081:365::-;25223:3;25244:66;25308:1;25303:3;25244:66;:::i;:::-;25237:73;;25319:93;25408:3;25319:93;:::i;:::-;25437:2;25432:3;25428:12;25421:19;;25081:365;;;:::o;25452:419::-;25618:4;25656:2;25645:9;25641:18;25633:26;;25705:9;25699:4;25695:20;25691:1;25680:9;25676:17;25669:47;25733:131;25859:4;25733:131;:::i;:::-;25725:139;;25452:419;;;:::o;25877:153::-;26017:5;26013:1;26005:6;26001:14;25994:29;25877:153;:::o;26036:365::-;26178:3;26199:66;26263:1;26258:3;26199:66;:::i;:::-;26192:73;;26274:93;26363:3;26274:93;:::i;:::-;26392:2;26387:3;26383:12;26376:19;;26036:365;;;:::o;26407:419::-;26573:4;26611:2;26600:9;26596:18;26588:26;;26660:9;26654:4;26650:20;26646:1;26635:9;26631:17;26624:47;26688:131;26814:4;26688:131;:::i;:::-;26680:139;;26407:419;;;:::o;26832:188::-;26870:3;26889:18;26905:1;26889:18;:::i;:::-;26884:23;;26921:18;26937:1;26921:18;:::i;:::-;26916:23;;26962:1;26959;26955:9;26948:16;;26985:4;26980:3;26977:13;26974:39;;;26993:18;;:::i;:::-;26974:39;26832:188;;;;:::o;27026:152::-;27166:4;27162:1;27154:6;27150:14;27143:28;27026:152;:::o;27184:365::-;27326:3;27347:66;27411:1;27406:3;27347:66;:::i;:::-;27340:73;;27422:93;27511:3;27422:93;:::i;:::-;27540:2;27535:3;27531:12;27524:19;;27184:365;;;:::o;27555:419::-;27721:4;27759:2;27748:9;27744:18;27736:26;;27808:9;27802:4;27798:20;27794:1;27783:9;27779:17;27772:47;27836:131;27962:4;27836:131;:::i;:::-;27828:139;;27555:419;;;:::o;27980:147::-;28081:11;28118:3;28103:18;;27980:147;;;;:::o;28133:114::-;;:::o;28253:398::-;28412:3;28433:83;28514:1;28509:3;28433:83;:::i;:::-;28426:90;;28525:93;28614:3;28525:93;:::i;:::-;28643:1;28638:3;28634:11;28627:18;;28253:398;;;:::o;28657:379::-;28841:3;28863:147;29006:3;28863:147;:::i;:::-;28856:154;;29027:3;29020:10;;28657:379;;;:::o;29042:152::-;29182:4;29178:1;29170:6;29166:14;29159:28;29042:152;:::o;29200:365::-;29342:3;29363:66;29427:1;29422:3;29363:66;:::i;:::-;29356:73;;29438:93;29527:3;29438:93;:::i;:::-;29556:2;29551:3;29547:12;29540:19;;29200:365;;;:::o;29571:419::-;29737:4;29775:2;29764:9;29760:18;29752:26;;29824:9;29818:4;29814:20;29810:1;29799:9;29795:17;29788:47;29852:131;29978:4;29852:131;:::i;:::-;29844:139;;29571:419;;;:::o;29996:152::-;30136:4;30132:1;30124:6;30120:14;30113:28;29996:152;:::o;30154:365::-;30296:3;30317:66;30381:1;30376:3;30317:66;:::i;:::-;30310:73;;30392:93;30481:3;30392:93;:::i;:::-;30510:2;30505:3;30501:12;30494:19;;30154:365;;;:::o;30525:419::-;30691:4;30729:2;30718:9;30714:18;30706:26;;30778:9;30772:4;30768:20;30764:1;30753:9;30749:17;30742:47;30806:131;30932:4;30806:131;:::i;:::-;30798:139;;30525:419;;;:::o;30950:182::-;31090:34;31086:1;31078:6;31074:14;31067:58;30950:182;:::o;31138:366::-;31280:3;31301:67;31365:2;31360:3;31301:67;:::i;:::-;31294:74;;31377:93;31466:3;31377:93;:::i;:::-;31495:2;31490:3;31486:12;31479:19;;31138:366;;;:::o;31510:419::-;31676:4;31714:2;31703:9;31699:18;31691:26;;31763:9;31757:4;31753:20;31749:1;31738:9;31734:17;31727:47;31791:131;31917:4;31791:131;:::i;:::-;31783:139;;31510:419;;;:::o;31935:144::-;31987:4;32010:3;32002:11;;32033:3;32030:1;32023:14;32067:4;32064:1;32054:18;32046:26;;31935:144;;;:::o;32107:878::-;32212:3;32249:5;32243:12;32278:36;32304:9;32278:36;:::i;:::-;32330:88;32411:6;32406:3;32330:88;:::i;:::-;32323:95;;32449:1;32438:9;32434:17;32465:1;32460:166;;;;32640:1;32635:344;;;;32427:552;;32460:166;32544:4;32540:9;32529;32525:25;32520:3;32513:38;32606:6;32599:14;32592:22;32584:6;32580:35;32575:3;32571:45;32564:52;;32460:166;;32635:344;32702:41;32737:5;32702:41;:::i;:::-;32765:1;32779:154;32793:6;32790:1;32787:13;32779:154;;;32867:7;32861:14;32857:1;32852:3;32848:11;32841:35;32917:1;32908:7;32904:15;32893:26;;32815:4;32812:1;32808:12;32803:17;;32779:154;;;32962:6;32957:3;32953:16;32946:23;;32642:337;;32427:552;;32216:769;;32107:878;;;;:::o;32991:273::-;33122:3;33144:94;33234:3;33225:6;33144:94;:::i;:::-;33137:101;;33255:3;33248:10;;32991:273;;;;:::o;33270:664::-;33475:4;33513:3;33502:9;33498:19;33490:27;;33527:71;33595:1;33584:9;33580:17;33571:6;33527:71;:::i;:::-;33608:72;33676:2;33665:9;33661:18;33652:6;33608:72;:::i;:::-;33690;33758:2;33747:9;33743:18;33734:6;33690:72;:::i;:::-;33772;33840:2;33829:9;33825:18;33816:6;33772:72;:::i;:::-;33854:73;33922:3;33911:9;33907:19;33898:6;33854:73;:::i;:::-;33270:664;;;;;;;;:::o;33940:152::-;34080:4;34076:1;34068:6;34064:14;34057:28;33940:152;:::o;34098:365::-;34240:3;34261:66;34325:1;34320:3;34261:66;:::i;:::-;34254:73;;34336:93;34425:3;34336:93;:::i;:::-;34454:2;34449:3;34445:12;34438:19;;34098:365;;;:::o;34469:419::-;34635:4;34673:2;34662:9;34658:18;34650:26;;34722:9;34716:4;34712:20;34708:1;34697:9;34693:17;34686:47;34750:131;34876:4;34750:131;:::i;:::-;34742:139;;34469:419;;;:::o;34894:156::-;35034:8;35030:1;35022:6;35018:14;35011:32;34894:156;:::o;35056:365::-;35198:3;35219:66;35283:1;35278:3;35219:66;:::i;:::-;35212:73;;35294:93;35383:3;35294:93;:::i;:::-;35412:2;35407:3;35403:12;35396:19;;35056:365;;;:::o;35427:419::-;35593:4;35631:2;35620:9;35616:18;35608:26;;35680:9;35674:4;35670:20;35666:1;35655:9;35651:17;35644:47;35708:131;35834:4;35708:131;:::i;:::-;35700:139;;35427:419;;;:::o;35852:191::-;35892:3;35911:20;35929:1;35911:20;:::i;:::-;35906:25;;35945:20;35963:1;35945:20;:::i;:::-;35940:25;;35988:1;35985;35981:9;35974:16;;36009:3;36006:1;36003:10;36000:36;;;36016:18;;:::i;:::-;36000:36;35852:191;;;;:::o;36049:160::-;36189:12;36185:1;36177:6;36173:14;36166:36;36049:160;:::o;36215:366::-;36357:3;36378:67;36442:2;36437:3;36378:67;:::i;:::-;36371:74;;36454:93;36543:3;36454:93;:::i;:::-;36572:2;36567:3;36563:12;36556:19;;36215:366;;;:::o;36587:419::-;36753:4;36791:2;36780:9;36776:18;36768:26;;36840:9;36834:4;36830:20;36826:1;36815:9;36811:17;36804:47;36868:131;36994:4;36868:131;:::i;:::-;36860:139;;36587:419;;;:::o;37012:180::-;37060:77;37057:1;37050:88;37157:4;37154:1;37147:15;37181:4;37178:1;37171:15;37198:185;37238:1;37255:20;37273:1;37255:20;:::i;:::-;37250:25;;37289:20;37307:1;37289:20;:::i;:::-;37284:25;;37328:1;37318:35;;37333:18;;:::i;:::-;37318:35;37375:1;37372;37368:9;37363:14;;37198:185;;;;:::o;37389:442::-;37538:4;37576:2;37565:9;37561:18;37553:26;;37589:71;37657:1;37646:9;37642:17;37633:6;37589:71;:::i;:::-;37670:72;37738:2;37727:9;37723:18;37714:6;37670:72;:::i;:::-;37752;37820:2;37809:9;37805:18;37796:6;37752:72;:::i;:::-;37389:442;;;;;;:::o;37837:180::-;37885:77;37882:1;37875:88;37982:4;37979:1;37972:15;38006:4;38003:1;37996:15;38023:180;38071:77;38068:1;38061:88;38168:4;38165:1;38158:15;38192:4;38189:1;38182:15;38209:85;38254:7;38283:5;38272:16;;38209:85;;;:::o;38300:60::-;38328:3;38349:5;38342:12;;38300:60;;;:::o;38366:158::-;38424:9;38457:61;38475:42;38484:32;38510:5;38484:32;:::i;:::-;38475:42;:::i;:::-;38457:61;:::i;:::-;38444:74;;38366:158;;;:::o;38530:147::-;38625:45;38664:5;38625:45;:::i;:::-;38620:3;38613:58;38530:147;;:::o;38683:114::-;38750:6;38784:5;38778:12;38768:22;;38683:114;;;:::o;38803:184::-;38902:11;38936:6;38931:3;38924:19;38976:4;38971:3;38967:14;38952:29;;38803:184;;;;:::o;38993:132::-;39060:4;39083:3;39075:11;;39113:4;39108:3;39104:14;39096:22;;38993:132;;;:::o;39131:108::-;39208:24;39226:5;39208:24;:::i;:::-;39203:3;39196:37;39131:108;;:::o;39245:179::-;39314:10;39335:46;39377:3;39369:6;39335:46;:::i;:::-;39413:4;39408:3;39404:14;39390:28;;39245:179;;;;:::o;39430:113::-;39500:4;39532;39527:3;39523:14;39515:22;;39430:113;;;:::o;39579:732::-;39698:3;39727:54;39775:5;39727:54;:::i;:::-;39797:86;39876:6;39871:3;39797:86;:::i;:::-;39790:93;;39907:56;39957:5;39907:56;:::i;:::-;39986:7;40017:1;40002:284;40027:6;40024:1;40021:13;40002:284;;;40103:6;40097:13;40130:63;40189:3;40174:13;40130:63;:::i;:::-;40123:70;;40216:60;40269:6;40216:60;:::i;:::-;40206:70;;40062:224;40049:1;40046;40042:9;40037:14;;40002:284;;;40006:14;40302:3;40295:10;;39703:608;;;39579:732;;;;:::o;40317:831::-;40580:4;40618:3;40607:9;40603:19;40595:27;;40632:71;40700:1;40689:9;40685:17;40676:6;40632:71;:::i;:::-;40713:80;40789:2;40778:9;40774:18;40765:6;40713:80;:::i;:::-;40840:9;40834:4;40830:20;40825:2;40814:9;40810:18;40803:48;40868:108;40971:4;40962:6;40868:108;:::i;:::-;40860:116;;40986:72;41054:2;41043:9;41039:18;41030:6;40986:72;:::i;:::-;41068:73;41136:3;41125:9;41121:19;41112:6;41068:73;:::i;:::-;40317:831;;;;;;;;:::o;41154:807::-;41403:4;41441:3;41430:9;41426:19;41418:27;;41455:71;41523:1;41512:9;41508:17;41499:6;41455:71;:::i;:::-;41536:72;41604:2;41593:9;41589:18;41580:6;41536:72;:::i;:::-;41618:80;41694:2;41683:9;41679:18;41670:6;41618:80;:::i;:::-;41708;41784:2;41773:9;41769:18;41760:6;41708:80;:::i;:::-;41798:73;41866:3;41855:9;41851:19;41842:6;41798:73;:::i;:::-;41881;41949:3;41938:9;41934:19;41925:6;41881:73;:::i;:::-;41154:807;;;;;;;;;:::o;41967:663::-;42055:6;42063;42071;42120:2;42108:9;42099:7;42095:23;42091:32;42088:119;;;42126:79;;:::i;:::-;42088:119;42246:1;42271:64;42327:7;42318:6;42307:9;42303:22;42271:64;:::i;:::-;42261:74;;42217:128;42384:2;42410:64;42466:7;42457:6;42446:9;42442:22;42410:64;:::i;:::-;42400:74;;42355:129;42523:2;42549:64;42605:7;42596:6;42585:9;42581:22;42549:64;:::i;:::-;42539:74;;42494:129;41967:663;;;;;:::o

Swarm Source

ipfs://6253d9a4a228c2112778f4d20e2a5f2470092b807b8f04bab7d69bf332b91c3d
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.