ETH Price: $3,456.55 (+1.50%)
Gas: 7 Gwei

Contract

0xc33Af84959B66Ca36Fbb7db3443744577b6df79e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve198893002024-05-17 11:09:4761 days ago1715944187IN
0xc33Af849...77b6df79e
0 ETH0.000249029.24139573
Approve198892992024-05-17 11:09:3561 days ago1715944175IN
0xc33Af849...77b6df79e
0 ETH0.000284959.579269
Approve198881712024-05-17 7:21:1161 days ago1715930471IN
0xc33Af849...77b6df79e
0 ETH0.000375377.97395386
Approve198841572024-05-16 17:54:2361 days ago1715882063IN
0xc33Af849...77b6df79e
0 ETH0.000369827.85615148
Approve198820812024-05-16 10:56:2362 days ago1715856983IN
0xc33Af849...77b6df79e
0 ETH0.000295056.26769647
Transfer191390222024-02-02 6:45:35166 days ago1706856335IN
0xc33Af849...77b6df79e
0 ETH0.0010207119.0677717
Transfer191390152024-02-02 6:43:59166 days ago1706856239IN
0xc33Af849...77b6df79e
0 ETH0.0009354317.47464948
Transfer191333342024-02-01 11:37:47167 days ago1706787467IN
0xc33Af849...77b6df79e
0 ETH0.0009042916.89286073
Transfer191332022024-02-01 11:11:11167 days ago1706785871IN
0xc33Af849...77b6df79e
0 ETH0.0011878622.19528333
Transfer191329302024-02-01 10:15:35167 days ago1706782535IN
0xc33Af849...77b6df79e
0 ETH0.0007778115.15763002
Transfer191329232024-02-01 10:14:11167 days ago1706782451IN
0xc33Af849...77b6df79e
0 ETH0.0008254615.41679531
Transfer191329192024-02-01 10:13:11167 days ago1706782391IN
0xc33Af849...77b6df79e
0 ETH0.0009419115.30300803
Transfer191329122024-02-01 10:11:47167 days ago1706782307IN
0xc33Af849...77b6df79e
0 ETH0.0010796917.54482428
Transfer191328762024-02-01 10:04:35167 days ago1706781875IN
0xc33Af849...77b6df79e
0 ETH0.0009591618.69167658
Transfer191328682024-02-01 10:02:59167 days ago1706781779IN
0xc33Af849...77b6df79e
0 ETH0.001031320.09747849
Transfer191327952024-02-01 9:48:23167 days ago1706780903IN
0xc33Af849...77b6df79e
0 ETH0.00101919.03144018
Transfer191327892024-02-01 9:47:11167 days ago1706780831IN
0xc33Af849...77b6df79e
0 ETH0.0009375420.45620077
Transfer191327822024-02-01 9:45:35167 days ago1706780735IN
0xc33Af849...77b6df79e
0 ETH0.0008836719.28069747
Transfer191327692024-02-01 9:42:59167 days ago1706780579IN
0xc33Af849...77b6df79e
0 ETH0.0009170420.00880331
Transfer191327242024-02-01 9:33:59167 days ago1706780039IN
0xc33Af849...77b6df79e
0 ETH0.0012349226.94456794
Transfer191326852024-02-01 9:25:59167 days ago1706779559IN
0xc33Af849...77b6df79e
0 ETH0.001131820.99591516
Transfer191326692024-02-01 9:22:47167 days ago1706779367IN
0xc33Af849...77b6df79e
0 ETH0.0010242719.00115927
Approve191023282024-01-28 3:21:23171 days ago1706412083IN
0xc33Af849...77b6df79e
0 ETH0.0005237311.18261316
Approve191023042024-01-28 3:16:35171 days ago1706411795IN
0xc33Af849...77b6df79e
0 ETH0.0005636212.03433191
Approve191022692024-01-28 3:09:35171 days ago1706411375IN
0xc33Af849...77b6df79e
0 ETH0.0004901110.46479984
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
198881202024-05-17 7:10:5961 days ago1715929859
0xc33Af849...77b6df79e
0.00620229 ETH
198881202024-05-17 7:10:5961 days ago1715929859
0xc33Af849...77b6df79e
0.01240458 ETH
198881202024-05-17 7:10:5961 days ago1715929859
0xc33Af849...77b6df79e
0.01860687 ETH
191023082024-01-28 3:17:23171 days ago1706411843
0xc33Af849...77b6df79e
0.00468705 ETH
191023082024-01-28 3:17:23171 days ago1706411843
0xc33Af849...77b6df79e
0.0093741 ETH
191023082024-01-28 3:17:23171 days ago1706411843
0xc33Af849...77b6df79e
0.01406115 ETH
191022232024-01-28 3:00:23171 days ago1706410823
0xc33Af849...77b6df79e
0.01010008 ETH
191022232024-01-28 3:00:23171 days ago1706410823
0xc33Af849...77b6df79e
0.02020016 ETH
191022232024-01-28 3:00:23171 days ago1706410823
0xc33Af849...77b6df79e
0.03030024 ETH
186591322023-11-26 23:30:59233 days ago1701041459
0xc33Af849...77b6df79e
0.0684 ETH
186591322023-11-26 23:30:59233 days ago1701041459
0xc33Af849...77b6df79e
0.13680001 ETH
186591322023-11-26 23:30:59233 days ago1701041459
0xc33Af849...77b6df79e
0.20520002 ETH
186523282023-11-26 0:37:47234 days ago1700959067
0xc33Af849...77b6df79e
0.01925246 ETH
186523282023-11-26 0:37:47234 days ago1700959067
0xc33Af849...77b6df79e
0.03850493 ETH
186523282023-11-26 0:37:47234 days ago1700959067
0xc33Af849...77b6df79e
0.0577574 ETH
186507262023-11-25 19:15:11234 days ago1700939711
0xc33Af849...77b6df79e
0.10562374 ETH
186507262023-11-25 19:15:11234 days ago1700939711
0xc33Af849...77b6df79e
0.21124749 ETH
186507262023-11-25 19:15:11234 days ago1700939711
0xc33Af849...77b6df79e
0.31687123 ETH
186438132023-11-24 20:00:59235 days ago1700856059
0xc33Af849...77b6df79e
0.05410198 ETH
186438132023-11-24 20:00:59235 days ago1700856059
0xc33Af849...77b6df79e
0.10820397 ETH
186438132023-11-24 20:00:59235 days ago1700856059
0xc33Af849...77b6df79e
0.16230595 ETH
186361212023-11-23 18:08:35236 days ago1700762915
0xc33Af849...77b6df79e
0.04324351 ETH
186361212023-11-23 18:08:35236 days ago1700762915
0xc33Af849...77b6df79e
0.08648703 ETH
186361212023-11-23 18:08:35236 days ago1700762915
0xc33Af849...77b6df79e
0.12973055 ETH
186337342023-11-23 10:08:23237 days ago1700734103
0xc33Af849...77b6df79e
0.09514394 ETH
View All Internal Transactions
Loading...
Loading

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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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