Contract 0x937fdcd5249b735900307fa7ee336885236a5300

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x32722bbd5240057afa0c5fb35171a732f2b2f629c55d05dfd4e0b8318bc66d93Transfer93261062021-10-22 3:11:193 hrs 6 mins ago0x30f251db8c365d39088fe0f08e98976088018b39 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0002201052.5
0xea02b6add49e414eaa3433ebcd9f0d6ca1a52d7bc968a226e62152cc11944608Transfer93260952021-10-22 3:10:463 hrs 6 mins ago0x30f251db8c365d39088fe0f08e98976088018b39 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0002201352.5
0xe5c0ee836c81c7956e0521ec68b0f14f87ccbefb4da54814cbe2f2efc2268b1cApprove93245032021-10-22 1:51:104 hrs 26 mins ago0x92ab8292e492f6ed7d92c50445653bbf7a3f75f5 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.000151922523.26
0xcb5f5d9f76cb2cc32bd3a58d14276f8ebf0f133529b78a4843c621fa36bf0e9cApprove93135152021-10-21 16:41:4513 hrs 35 mins ago0xf164d4b5955d9be37936a7d96a60fa91dc1aa311 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0000607952.5
0xd24371a21ec72f4c48e37d22f383a0a1eeda1c8f33920f52076792605609df85Approve93130672021-10-21 16:19:2113 hrs 58 mins ago0xf164d4b5955d9be37936a7d96a60fa91dc1aa311 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0001165052.5
0x4438222abc2f61ceaca17c132a6383da7c75717c2d4271fb671cf56e4b021034Approve93102532021-10-21 13:58:3916 hrs 18 mins ago0x1dea675cd898de24c6b1357413922afa049c28ed IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0001165052.5
0xcdcfea45654b2a8e5b14ec322142546a89138b26adc56d8e0b00828e53f33239Transfer92965522021-10-21 2:33:361 day 3 hrs ago0xc6a397528098d1a20b81886e9e084c1838cd873f IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0003190852.5
0x2ba4fe1c87eecac9e6ef703458175bc2d91fd51df400ae7aee1140562feccc41Transfer92937092021-10-21 0:11:271 day 6 hrs ago0x75fc47cead66c44af96568d8e3e642b678413b9c IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0003190252.5
0xa631c81097c3d8cf4a618ddf099c37dc0e5171f9cd2ea273169a03761aaeff44Approve92468332021-10-19 9:07:352 days 21 hrs ago0xf8ec5795bb15c86e39577c20219511dfe39d43c4 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0001165052.5
0xbcaac041b3d952414459f67916dc3523bd54ee62a5f185a5c5d3c1076c4d5926Approve92380712021-10-19 1:49:293 days 4 hrs ago0x5da0f8350ef3399e1049e1fd015d366b00071187 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0001165052.5
0x97ce639a467f7c4f90811267e5fde7008bbe9e29ca60aa3d8c24e5c38c547686Transfer92254042021-10-18 15:16:073 days 15 hrs ago0x63daaa7784cf498ceb97d73243844b93b3f35ff3 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.00034461182.7
0x3bedc6d311a95fd97617d8a3d87cb9ec57083ea9faf5f56010b201430fd58ac8Transfer92090292021-10-18 1:37:164 days 4 hrs ago0x4561b454fc20ad9c40a8f3d3d3d6725c8e11d4ce IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0002201352.5
0x7935bf36f4ab93c582e46684bc72af1d26a7884be39fd30d35e3c3bdfe14081aTransfer92090002021-10-18 1:35:494 days 4 hrs ago0x05d089dde70e6964ff23d4109c10e3114bf45884 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0002201052.5
0x1d1b1df02aa2df1219ea2d4b6468aa47b0d74f705678c3f3d4df12c769a0edeeApprove92038812021-10-17 21:19:524 days 8 hrs ago0x6db4864333d1ae7ec7f701eedf1b16f9f0e79159 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0001165052.5
0x73967cd9b6cc17dc6024d324b8e5e5bffbec55c5c71246b9e487c74bcc47ce7bApprove92014152021-10-17 19:16:344 days 11 hrs ago0x6d77d2ca287a7c8cd95eb4f378e95f770c420bda IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.000151922523.26
0xa87588b6293c63db1ce2a8e591f426e6041ea68de3eab1d862c9de28b262d9a9Approve91690972021-10-16 16:20:405 days 13 hrs ago0xbd201e5d84c5e8df97d0c68485b8b2ab3037ce72 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0000607952.5
0xc3fd6c762ceabb1a3657bf2cecfac4a43bf05275cd3fb402d6c45155d4e9a037Approve91685182021-10-16 15:51:435 days 14 hrs ago0xf164d4b5955d9be37936a7d96a60fa91dc1aa311 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0000607952.5
0x6386101d6ba2b75a2304b9bd7f8b6c2179b89c6dcc8cf626a3aa87ab5a8782e4Approve91677342021-10-16 15:12:315 days 15 hrs ago0xf164d4b5955d9be37936a7d96a60fa91dc1aa311 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0001165052.5
0x1956b33b9bae50c2e5b0c16f08c9966fcf26ba0ab17e0a4ee2dad60bf60c2824Approve91595832021-10-16 8:24:585 days 21 hrs ago0x83006aca80f652322e2c85dfc818ec9c73f5abd2 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0000607952.5
0xaafb4fb46c021b1d936b06ce3caf61456bb522ac832867294a1108a44e800c87Approve91421202021-10-15 17:51:496 days 12 hrs ago0x491c16a8d8ce2c9293499387a22d29fc8d20f73c IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.00005471552.25
0x6008aac3c273641dd9bb6920c6317ba8456f57aa4be936fcbb9f023a60fec667Approve91410662021-10-15 16:59:076 days 13 hrs ago0x9460da190dd3b7d6344be2dab80c4e184d1d778d IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0001165052.5
0xb800adfbeec9a160a06abd636c9900dac5d494dd3e117c83bea95cd12469c812Approve91402162021-10-15 16:16:376 days 14 hrs ago0xf164d4b5955d9be37936a7d96a60fa91dc1aa311 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0000607952.5
0x243d7aa0e3d9590947181496280d4e59db3d985cd40508a49f320adc81e87925Approve91397502021-10-15 15:53:196 days 14 hrs ago0x86d61ad847ca0fcb87ebbc255ce0809942ef40d7 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.000151922523.26
0xf400ea6b3473dfe1461fc387f169a5ded37c0340c22b78e3aaeac290e5cc63a1Approve91359082021-10-15 12:41:136 days 17 hrs ago0xf164d4b5955d9be37936a7d96a60fa91dc1aa311 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0001165052.5
0x19ef17ef844ba14cb61de5f2ce4b1afb77cd67fbc700a50e6483353648713583Approve91344182021-10-15 11:26:436 days 18 hrs ago0x6310aecb31cabcb36952275f90f31594ef968c25 IN  0x937fdcd5249b735900307fa7ee336885236a53000 HT0.0001165052.5
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MiniHTToken

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2021-09-12
*/

/**
 *Submitted for verification at hecoinfo.com on 2021-09-12
*/

pragma solidity ^0.8.6;

// SPDX-License-Identifier: Unlicensed
interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable {
    address public _owner;

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function changeOwner(address newOwner) public onlyOwner {
        _owner = newOwner;
    }
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WHT() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

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

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

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

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

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

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

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

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

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

contract MiniHTToken is IERC20, Ownable {
    using SafeMath for uint256;

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

    mapping(address => bool) private _isExcludedFromFee;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;

    string private _name;
    string private _symbol;
    uint256 private _decimals;

    uint256 public _taxFee = 2;
    uint256 private _previousTaxFee;

    uint256 public _liquidityFee = 3;
    uint256 private _previousLiquidityFee;

    uint256 public _destroyFee = 2;
    uint256 private _previousDestroyFee;
    address private _destroyAddress =
        address(0x000000000000000000000000000000000000dEaD);

    uint256 public _inviterFee = 9;
    uint256 private _previousInviterFee;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public numTokensSellToAddToLiquidity;

    uint256 private _wy;

    mapping(address => address) public inviter;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(address tokenOwner) {
        _name = "MiniHT Token";
        _symbol = "MiniHT";
        _decimals = 6;

        _wy = 10**4 * 10**8 * 10**_decimals;

        _tTotal = 10000 * _wy;
        _rTotal = (MAX - (MAX % _tTotal));

        _rOwned[tokenOwner] = _rTotal;

        // HECO MDEX
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0xED7d5F38C79115ca12fe6C0041abb22F0A06C300
        );

        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WHT());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        //exclude owner and this contract from fee
        _isExcludedFromFee[tokenOwner] = true;
        _isExcludedFromFee[address(this)] = true;

        _owner = tokenOwner;
        emit Transfer(address(0), tokenOwner, _tTotal);
    }

    function name() public view returns (string memory) {
        return _name;
    }

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

    function decimals() public view returns (uint256) {
        return _decimals;
    }

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

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

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            msg.sender,
            _allowances[sender][msg.sender].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function tokenFromReflection(uint256 rAmount)
        public
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setTaxFeePercent(uint256 taxFee) external onlyOwner {
        _taxFee = taxFee;
    }

    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner {
        _liquidityFee = liquidityFee;
    }

    function setDestroyFeePercent(uint256 destroyedFee) external onlyOwner {
        _destroyFee = destroyedFee;
    }

    function setNumTokensSellToAddToLiquidity(uint256 swapNumber)
        public
        onlyOwner
    {
        numTokensSellToAddToLiquidity = swapNumber * 10**_decimals;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function claimTokens() public onlyOwner {
        payable(_owner).transfer(address(this).balance);
    }

    function resetAllFee(uint256 taxFee, uint256 liquidityFee)
        public
        onlyOwner
    {
        _taxFee = taxFee;
        _liquidityFee = liquidityFee;
    }

    function removeAllFee() private {
        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        _previousDestroyFee = _destroyFee;
        _previousInviterFee = _inviterFee;

        _taxFee = 0;
        _liquidityFee = 0;
        _inviterFee = 0;
        _destroyFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
        _inviterFee = _previousInviterFee;
        _destroyFee = _previousDestroyFee;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from == uniswapV2Pair) {
            require(amount <= _wy);
            require(balanceOf(to) + amount <= 6 * _wy);
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >=
            numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled &&
            numTokensSellToAddToLiquidity > 0
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

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

        // 设置代理
        bool shouldSetInviter = balanceOf(to) == 0 &&
            inviter[to] == address(0) &&
            from != uniswapV2Pair;

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);

        if (shouldSetInviter) {
            inviter[to] = from;
        }
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        // split the contract balance into halves
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WHT();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

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

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();

        _transferStandard(sender, recipient, amount);

        if (!takeFee) restoreAllFee();
    }

    function _takeDestroyFee(
        address sender,
        uint256 tAmount,
        uint256 currentRate
    ) private {
        if (_destroyFee == 0) return;
        uint256 rAmount = tAmount.mul(currentRate);

        _rOwned[_destroyAddress] = _rOwned[_destroyAddress].add(rAmount);
        emit Transfer(sender, _destroyAddress, tAmount);
    }

    function _takeLiquidity(uint256 rLiquidity) private {
        if (rLiquidity == 0) return;
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _takeInviterFee(
        address sender,
        address recipient,
        uint256 tAmount,
        uint256 currentRate
    ) private {
        if (_inviterFee == 0) return;

        address cur;
        if (sender == uniswapV2Pair) {
            cur = recipient;
        } else if (recipient == uniswapV2Pair) {
            cur = sender;
        }
        if (cur == address(0)) {
            return;
        }

        uint256 accurRate;
        for (int256 i = 0; i < 8; i++) {
            uint256 rate;
            if (i == 0) {
                rate = 2;
            } else {
                rate = 1;
            }
            cur = inviter[cur];
            if (cur == address(0)) {
                break;
            }
            accurRate = accurRate.add(rate);

            uint256 curTAmount = tAmount.div(100).mul(rate);
            uint256 curRAmount = curTAmount.mul(currentRate);
            _rOwned[cur] = _rOwned[cur].add(curRAmount);
            emit Transfer(sender, cur, curTAmount);
        }
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        uint256 currentRate = _getRate();

        // 扣除发送人的
        uint256 rAmount = tAmount.mul(currentRate);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);

        // 销毁
        _takeDestroyFee(sender, tAmount.div(100).mul(_destroyFee), currentRate);

        // 流动性回购
        _takeLiquidity(rAmount.div(100).mul(_liquidityFee));

        // 9%的推广分红
        _takeInviterFee(sender, recipient, tAmount, currentRate);

        // 通缩
        _reflectFee(
            rAmount.div(100).mul(_taxFee),
            tAmount.div(100).mul(_taxFee)
        );

        // 接收
        uint256 recipientRate = 100 -
            _liquidityFee -
            _taxFee -
            _destroyFee -
            _inviterFee;
        _rOwned[recipient] = _rOwned[recipient].add(
            rAmount.div(100).mul(recipientRate)
        );
        emit Transfer(sender, recipient, tAmount.div(100).mul(recipientRate));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"_destroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_inviterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"inviter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","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":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"resetAllFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"destroyedFee","type":"uint256"}],"name":"setDestroyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapNumber","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526002600b8190556003600d55600f55601180546001600160a01b03191661dead17905560096012556014805461ff0019166101001790553480156200004857600080fd5b506040516200260c3803806200260c8339810160408190526200006b9162000420565b60408051808201909152600c8082526b26b4b734a42a102a37b5b2b760a11b6020909201918252620000a0916008916200037a565b5060408051808201909152600680825265135a5b9a521560d21b6020909201918252620000d0916009916200037a565b506006600a818155620000e491906200049b565b620000f59064e8d4a5100062000559565b6016819055620001089061271062000559565b60058190556200011b90600019620005d2565b62000129906000196200057b565b60068190556001600160a01b03821660009081526001602090815260409182902092909255805163c45a015560e01b8152905173ed7d5f38c79115ca12fe6c0041abb22f0a06c30092839263c45a01559260048083019392829003018186803b1580156200019657600080fd5b505afa158015620001ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d1919062000420565b6001600160a01b031663c9c6539630836001600160a01b0316635cb485926040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021a57600080fd5b505afa1580156200022f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000255919062000420565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200029e57600080fd5b505af1158015620002b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d9919062000420565b606090811b6001600160601b031990811660a0529082901b166080526001600160a01b03821660008181526004602090815260408083208054600160ff1991821681179092553085528285208054909116909117905582546001600160a01b0319168417835560055490519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200060b565b828054620003889062000595565b90600052602060002090601f016020900481019282620003ac5760008555620003f7565b82601f10620003c757805160ff1916838001178555620003f7565b82800160010185558215620003f7579182015b82811115620003f7578251825591602001919060010190620003da565b506200040592915062000409565b5090565b5b808211156200040557600081556001016200040a565b6000602082840312156200043357600080fd5b81516001600160a01b03811681146200044b57600080fd5b9392505050565b600181815b8085111562000493578160001904821115620004775762000477620005f5565b808516156200048557918102915b93841c939080029062000457565b509250929050565b60006200044b8383600082620004b45750600162000553565b81620004c35750600062000553565b8160018114620004dc5760028114620004e75762000507565b600191505062000553565b60ff841115620004fb57620004fb620005f5565b50506001821b62000553565b5060208310610133831016604e8410600b84101617156200052c575081810a62000553565b62000538838362000452565b80600019048211156200054f576200054f620005f5565b0290505b92915050565b6000816000190483118215151615620005765762000576620005f5565b500290565b600082821015620005905762000590620005f5565b500390565b600181811c90821680620005aa57607f821691505b60208210811415620005cc57634e487b7160e01b600052602260045260246000fd5b50919050565b600082620005f057634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b60805160601c60a05160601c611f8f6200067d6000396000818161040301528181610e4701528181610ee901528181610fd6015281816118ef01526119300152600081816102c2015281816113570152818161141f0152818161145b015281816114d501526114fc0152611f8f6000f3fe6080604052600436106102085760003560e01c80636bc87c3a11610118578063a9059cbb116100a0578063d12a76881161006f578063d12a7688146105f2578063dd62ed3e14610608578063ea2f0b371461064e578063ee8f0b7a1461066e578063f0f165af146106a457600080fd5b8063a9059cbb14610572578063b060346a14610592578063b2bdfa7b146105b2578063c49b9a80146105d257600080fd5b806395d89b41116100e757806395d89b41146104f1578063964e45f514610506578063a41a08fb1461051c578063a457c2d714610532578063a6f9dae11461055257600080fd5b80636bc87c3a1461047d57806370a08231146104935780638da5cb5b146104b35780638ee88c53146104d157600080fd5b8063313ce5671161019b578063437823ec1161016a578063437823ec146103bc57806348c54b9d146103dc57806349bd5a5e146103f15780634a74bb02146104255780635342acb41461044457600080fd5b8063313ce567146103515780633927b4691461036657806339509351146103865780633b124fe7146103a657600080fd5b80631694505e116101d75780631694505e146102b057806318160ddd146102fc57806323b872dd146103115780632d8381191461033157600080fd5b8063061c82d01461021457806306fdde0314610236578063095ea7b31461026157806313114a9d1461029157600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061023461022f366004611bb1565b6106c4565b005b34801561024257600080fd5b5061024b6106fc565b6040516102589190611c1a565b60405180910390f35b34801561026d57600080fd5b5061028161027c366004611b63565b61078e565b6040519015158152602001610258565b34801561029d57600080fd5b506007545b604051908152602001610258565b3480156102bc57600080fd5b506102e47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610258565b34801561030857600080fd5b506005546102a2565b34801561031d57600080fd5b5061028161032c366004611b22565b6107a5565b34801561033d57600080fd5b506102a261034c366004611bb1565b61080e565b34801561035d57600080fd5b50600a546102a2565b34801561037257600080fd5b50610234610381366004611bca565b610892565b34801561039257600080fd5b506102816103a1366004611b63565b6108c7565b3480156103b257600080fd5b506102a2600b5481565b3480156103c857600080fd5b506102346103d7366004611aaf565b6108fd565b3480156103e857600080fd5b5061023461094b565b3480156103fd57600080fd5b506102e47f000000000000000000000000000000000000000000000000000000000000000081565b34801561043157600080fd5b5060145461028190610100900460ff1681565b34801561045057600080fd5b5061028161045f366004611aaf565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561048957600080fd5b506102a2600d5481565b34801561049f57600080fd5b506102a26104ae366004611aaf565b6109b2565b3480156104bf57600080fd5b506000546001600160a01b03166102e4565b3480156104dd57600080fd5b506102346104ec366004611bb1565b6109d4565b3480156104fd57600080fd5b5061024b610a03565b34801561051257600080fd5b506102a2600f5481565b34801561052857600080fd5b506102a260125481565b34801561053e57600080fd5b5061028161054d366004611b63565b610a12565b34801561055e57600080fd5b5061023461056d366004611aaf565b610a61565b34801561057e57600080fd5b5061028161058d366004611b63565b610aad565b34801561059e57600080fd5b506102346105ad366004611bb1565b610aba565b3480156105be57600080fd5b506000546102e4906001600160a01b031681565b3480156105de57600080fd5b506102346105ed366004611b8f565b610ae9565b3480156105fe57600080fd5b506102a260155481565b34801561061457600080fd5b506102a2610623366004611ae9565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561065a57600080fd5b50610234610669366004611aaf565b610b67565b34801561067a57600080fd5b506102e4610689366004611aaf565b6017602052600090815260409020546001600160a01b031681565b3480156106b057600080fd5b506102346106bf366004611bb1565b610bb2565b6000546001600160a01b031633146106f75760405162461bcd60e51b81526004016106ee90611c6f565b60405180910390fd5b600b55565b60606008805461070b90611e70565b80601f016020809104026020016040519081016040528092919081815260200182805461073790611e70565b80156107845780601f1061075957610100808354040283529160200191610784565b820191906000526020600020905b81548152906001019060200180831161076757829003601f168201915b5050505050905090565b600061079b338484610bf9565b5060015b92915050565b60006107b2848484610d1d565b61080484336107ff85604051806060016040528060288152602001611f0d602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611057565b610bf9565b5060019392505050565b60006006548211156108755760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106ee565b600061087f611091565b905061088b83826110b4565b9392505050565b6000546001600160a01b031633146108bc5760405162461bcd60e51b81526004016106ee90611c6f565b600b91909155600d55565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161079b9185906107ff90866110f6565b6000546001600160a01b031633146109275760405162461bcd60e51b81526004016106ee90611c6f565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146109755760405162461bcd60e51b81526004016106ee90611c6f565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156109af573d6000803e3d6000fd5b50565b6001600160a01b03811660009081526001602052604081205461079f9061080e565b6000546001600160a01b031633146109fe5760405162461bcd60e51b81526004016106ee90611c6f565b600d55565b60606009805461070b90611e70565b600061079b33846107ff85604051806060016040528060258152602001611f35602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611057565b6000546001600160a01b03163314610a8b5760405162461bcd60e51b81526004016106ee90611c6f565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061079b338484610d1d565b6000546001600160a01b03163314610ae45760405162461bcd60e51b81526004016106ee90611c6f565b600f55565b6000546001600160a01b03163314610b135760405162461bcd60e51b81526004016106ee90611c6f565b601480548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b5c90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610b915760405162461bcd60e51b81526004016106ee90611c6f565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314610bdc5760405162461bcd60e51b81526004016106ee90611c6f565b600a8054610be991611d92565b610bf39082611e3a565b60155550565b6001600160a01b038316610c5b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ee565b6001600160a01b038216610cbc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ee565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d815760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106ee565b6001600160a01b038216610de35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106ee565b60008111610e455760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106ee565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415610ebb57601654811115610e8e57600080fd5b601654610e9c906006611e3a565b81610ea6846109b2565b610eb09190611d15565b1115610ebb57600080fd5b6000610ec6306109b2565b60155490915081108015908190610ee0575060145460ff16155b8015610f1e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015610f315750601454610100900460ff165b8015610f3f57506000601554115b15610f52576015549150610f5282611155565b6001600160a01b03851660009081526004602052604090205460019060ff1680610f9457506001600160a01b03851660009081526004602052604090205460ff165b15610f9d575060005b6000610fa8866109b2565b158015610fcd57506001600160a01b0386811660009081526017602052604090205416155b801561100b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614155b9050611019878787856111f3565b801561104e576001600160a01b03868116600090815260176020526040902080546001600160a01b0319169189169190911790555b50505050505050565b6000818484111561107b5760405162461bcd60e51b81526004016106ee9190611c1a565b5060006110888486611e59565b95945050505050565b600080600061109e61125b565b90925090506110ad82826110b4565b9250505090565b600061088b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611290565b6000806111038385611d15565b90508381101561088b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106ee565b6014805460ff19166001179055600061116f8260026110b4565b9050600061117d83836112be565b90504761118983611300565b600061119547836112be565b90506111a183826114cf565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506014805460ff19169055505050565b8061122857611228600b8054600c55600d8054600e55600f805460105560128054601355600093849055918390559082905555565b6112338484846115e4565b8061125557611255600c54600b55600e54600d55601354601255601054600f55565b50505050565b600654600554600091829161127082826110b4565b821015611287576006546005549350935050509091565b90939092509050565b600081836112b15760405162461bcd60e51b81526004016106ee9190611c1a565b5060006110888486611d2d565b600061088b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611057565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061133557611335611ee1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635cb485926040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ae57600080fd5b505afa1580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190611acc565b816001815181106113f9576113f9611ee1565b60200260200101906001600160a01b031690816001600160a01b031681525050611444307f000000000000000000000000000000000000000000000000000000000000000084610bf9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611499908590600090869030904290600401611ca4565b600060405180830381600087803b1580156114b357600080fd5b505af11580156114c7573d6000803e3d6000fd5b505050505050565b6114fa307f000000000000000000000000000000000000000000000000000000000000000084610bf9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806115416000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156115a457600080fd5b505af11580156115b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115dd9190611bec565b5050505050565b60006115ee611091565b905060006115fc8383611786565b6001600160a01b03861660009081526001602052604090205490915061162290826112be565b6001600160a01b038616600090815260016020526040902055600f5461165f908690611659906116538760646110b4565b90611786565b84611805565b600d5461167a90611675906116538460646110b4565b6118aa565b611686858585856118df565b600b546116b39061169c906116538460646110b4565b600b546116ae906116538760646110b4565b611a8b565b6000601254600f54600b54600d5460646116cd9190611e59565b6116d79190611e59565b6116e19190611e59565b6116eb9190611e59565b905061171e6116ff826116538560646110b4565b6001600160a01b038716600090815260016020526040902054906110f6565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61176d846116538960646110b4565b60405190815260200160405180910390a3505050505050565b6000826117955750600061079f565b60006117a18385611e3a565b9050826117ae8583611d2d565b1461088b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106ee565b600f5461181157505050565b600061181d8383611786565b6011546001600160a01b031660009081526001602052604090205490915061184590826110f6565b601180546001600160a01b03908116600090815260016020908152604091829020949094559154915186815291811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b806118b25750565b306000908152600160205260409020546118cc90826110f6565b3060009081526001602052604090205550565b6012546118eb57611255565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141561192e57508261196b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316141561196b5750835b6001600160a01b03811661197f5750611255565b6000805b600881121561104e5760008161199b5750600261199f565b5060015b6001600160a01b0393841660009081526017602052604090205490931692836119c8575061104e565b6119d283826110f6565b925060006119e5826116538960646110b4565b905060006119f38288611786565b6001600160a01b038716600090815260016020526040902054909150611a1990826110f6565b6001600160a01b0380881660008181526001602052604090819020939093559151908c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a6d9086815260200190565b60405180910390a35050508080611a8390611eab565b915050611983565b600654611a9890836112be565b600655600754611aa890826110f6565b6007555050565b600060208284031215611ac157600080fd5b813561088b81611ef7565b600060208284031215611ade57600080fd5b815161088b81611ef7565b60008060408385031215611afc57600080fd5b8235611b0781611ef7565b91506020830135611b1781611ef7565b809150509250929050565b600080600060608486031215611b3757600080fd5b8335611b4281611ef7565b92506020840135611b5281611ef7565b929592945050506040919091013590565b60008060408385031215611b7657600080fd5b8235611b8181611ef7565b946020939093013593505050565b600060208284031215611ba157600080fd5b8135801515811461088b57600080fd5b600060208284031215611bc357600080fd5b5035919050565b60008060408385031215611bdd57600080fd5b50508035926020909101359150565b600080600060608486031215611c0157600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611c4757858101830151858201604001528201611c2b565b81811115611c59576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cf45784516001600160a01b031683529383019391830191600101611ccf565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611d2857611d28611ecb565b500190565b600082611d4a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611d8a578160001904821115611d7057611d70611ecb565b80851615611d7d57918102915b93841c9390800290611d54565b509250929050565b600061088b8383600082611da85750600161079f565b81611db55750600061079f565b8160018114611dcb5760028114611dd557611df1565b600191505061079f565b60ff841115611de657611de6611ecb565b50506001821b61079f565b5060208310610133831016604e8410600b8410161715611e14575081810a61079f565b611e1e8383611d4f565b8060001904821115611e3257611e32611ecb565b029392505050565b6000816000190483118215151615611e5457611e54611ecb565b500290565b600082821015611e6b57611e6b611ecb565b500390565b600181811c90821680611e8457607f821691505b60208210811415611ea557634e487b7160e01b600052602260045260246000fd5b50919050565b60006001600160ff1b03821415611ec457611ec4611ecb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146109af57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206b4bb23532ad8f0138b0154ce3b2e0b6e79d9a9c712e43e6ec832481428dc45564736f6c6343000806003300000000000000000000000080e71a64ed24ceb05a4457dcf032cf94acca4951

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

00000000000000000000000080e71a64ed24ceb05a4457dcf032cf94acca4951

-----Decoded View---------------
Arg [0] : tokenOwner (address): 0x80e71a64ed24ceb05a4457dcf032cf94acca4951

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000080e71a64ed24ceb05a4457dcf032cf94acca4951


Deployed ByteCode Sourcemap

16226:15251:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21827:96;;;;;;;;;;-1:-1:-1;21827:96:0;;;;;:::i;:::-;;:::i;:::-;;18883:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19808:191;;;;;;;;;;-1:-1:-1;19808:191:0;;;;;:::i;:::-;;:::i;:::-;;;3708:14:1;;3701:22;3683:41;;3671:2;3656:18;19808:191:0;3638:92:1;21165:87:0;;;;;;;;;;-1:-1:-1;21234:10:0;;21165:87;;;8275:25:1;;;8263:2;8248:18;21165:87:0;8230:76:1;17199:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:32:1;;;2869:51;;2857:2;2842:18;17199:51:0;2824:102:1;19162:95:0;;;;;;;;;;-1:-1:-1;19242:7:0;;19162:95;;20007:442;;;;;;;;;;-1:-1:-1;20007:442:0;;;;;:::i;:::-;;:::i;21260:322::-;;;;;;;;;;-1:-1:-1;21260:322:0;;;;;:::i;:::-;;:::i;19069:85::-;;;;;;;;;;-1:-1:-1;19137:9:0;;19069:85;;23193:173;;;;;;;;;;-1:-1:-1;23193:173:0;;;;;:::i;:::-;;:::i;20457:296::-;;;;;;;;;;-1:-1:-1;20457:296:0;;;;;:::i;:::-;;:::i;16778:26::-;;;;;;;;;;;;;;;;21590:111;;;;;;;;;;-1:-1:-1;21590:111:0;;;;;:::i;:::-;;:::i;23079:106::-;;;;;;;;;;;;;:::i;17257:38::-;;;;;;;;;;;;;;;17332:40;;;;;;;;;;-1:-1:-1;17332:40:0;;;;;;;;;;;23919:124;;;;;;;;;;-1:-1:-1;23919:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;24008:27:0;23984:4;24008:27;;;:18;:27;;;;;;;;;23919:124;16851:32;;;;;;;;;;;;;;;;19265:138;;;;;;;;;;-1:-1:-1;19265:138:0;;;;;:::i;:::-;;:::i;2943:79::-;;;;;;;;;;-1:-1:-1;2981:7:0;3008:6;-1:-1:-1;;;;;3008:6:0;2943:79;;21931:120;;;;;;;;;;-1:-1:-1;21931:120:0;;;;;:::i;:::-;;:::i;18974:87::-;;;;;;;;;;;;;:::i;16936:30::-;;;;;;;;;;;;;;;;17118;;;;;;;;;;;;;;;;20761:396;;;;;;;;;;-1:-1:-1;20761:396:0;;;;;:::i;:::-;;:::i;3240:92::-;;;;;;;;;;-1:-1:-1;3240:92:0;;;;;:::i;:::-;;:::i;19411:197::-;;;;;;;;;;-1:-1:-1;19411:197:0;;;;;:::i;:::-;;:::i;22059:116::-;;;;;;;;;;-1:-1:-1;22059:116:0;;;;;:::i;:::-;;:::i;2840:21::-;;;;;;;;;;-1:-1:-1;2840:21:0;;;;-1:-1:-1;;;;;2840:21:0;;;22370:171;;;;;;;;;;-1:-1:-1;22370:171:0;;;;;:::i;:::-;;:::i;17381:44::-;;;;;;;;;;;;;;;;19616:184;;;;;;;;;;-1:-1:-1;19616:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;19765:18:0;;;19733:7;19765:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19616:184;21709:110;;;;;;;;;;-1:-1:-1;21709:110:0;;;;;:::i;:::-;;:::i;17462:42::-;;;;;;;;;;-1:-1:-1;17462:42:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;17462:42:0;;;22183:179;;;;;;;;;;-1:-1:-1;22183:179:0;;;;;:::i;:::-;;:::i;21827:96::-;3155:6;;-1:-1:-1;;;;;3155:6:0;3165:10;3155:20;3147:65;;;;-1:-1:-1;;;3147:65:0;;;;;;;:::i;:::-;;;;;;;;;21899:7:::1;:16:::0;21827:96::o;18883:83::-;18920:13;18953:5;18946:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18883:83;:::o;19808:191::-;19910:4;19932:37;19941:10;19953:7;19962:6;19932:8;:37::i;:::-;-1:-1:-1;19987:4:0;19808:191;;;;;:::o;20007:442::-;20139:4;20156:36;20166:6;20174:9;20185:6;20156:9;:36::i;:::-;20203:216;20226:6;20247:10;20272:136;20326:6;20272:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20272:19:0;;;;;;:11;:19;;;;;;;;20292:10;20272:31;;;;;;;;;:136;:35;:136::i;:::-;20203:8;:216::i;:::-;-1:-1:-1;20437:4:0;20007:442;;;;;:::o;21260:322::-;21354:7;21412;;21401;:18;;21379:110;;;;-1:-1:-1;;;21379:110:0;;5177:2:1;21379:110:0;;;5159:21:1;5216:2;5196:18;;;5189:30;5255:34;5235:18;;;5228:62;-1:-1:-1;;;5306:18:1;;;5299:40;5356:19;;21379:110:0;5149:232:1;21379:110:0;21500:19;21522:10;:8;:10::i;:::-;21500:32;-1:-1:-1;21550:24:0;:7;21500:32;21550:11;:24::i;:::-;21543:31;21260:322;-1:-1:-1;;;21260:322:0:o;23193:173::-;3155:6;;-1:-1:-1;;;;;3155:6:0;3165:10;3155:20;3147:65;;;;-1:-1:-1;;;3147:65:0;;;;;;;:::i;:::-;23303:7:::1;:16:::0;;;;23330:13:::1;:28:::0;23193:173::o;20457:296::-;20617:10;20572:4;20664:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20664:32:0;;;;;;;;;;20572:4;;20594:129;;20642:7;;20664:48;;20701:10;20664:36;:48::i;21590:111::-;3155:6;;-1:-1:-1;;;;;3155:6:0;3165:10;3155:20;3147:65;;;;-1:-1:-1;;;3147:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21659:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;21659:34:0::1;21689:4;21659:34;::::0;;21590:111::o;23079:106::-;3155:6;;-1:-1:-1;;;;;3155:6:0;3165:10;3155:20;3147:65;;;;-1:-1:-1;;;3147:65:0;;;;;;;:::i;:::-;23138:6:::1;::::0;;23130:47:::1;::::0;-1:-1:-1;;;;;23138:6:0;;::::1;::::0;23155:21:::1;23130:47:::0;::::1;;;::::0;23155:21;;23130:47;23138:6;23130:47;23155:21;23138:6;23130:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23079:106::o:0;19265:138::-;-1:-1:-1;;;;;19378:16:0;;19331:7;19378:16;;;:7;:16;;;;;;19358:37;;:19;:37::i;21931:120::-;3155:6;;-1:-1:-1;;;;;3155:6:0;3165:10;3155:20;3147:65;;;;-1:-1:-1;;;3147:65:0;;;;;;;:::i;:::-;22015:13:::1;:28:::0;21931:120::o;18974:87::-;19013:13;19046:7;19039:14;;;;;:::i;20761:396::-;20881:4;20903:224;20926:10;20951:7;20973:143;21028:15;20973:143;;;;;;;;;;;;;;;;;20985:10;20973:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20973:32:0;;;;;;;;;;;:143;:36;:143::i;3240:92::-;3155:6;;-1:-1:-1;;;;;3155:6:0;3165:10;3155:20;3147:65;;;;-1:-1:-1;;;3147:65:0;;;;;;;:::i;:::-;3307:6:::1;:17:::0;;-1:-1:-1;;;;;;3307:17:0::1;-1:-1:-1::0;;;;;3307:17:0;;;::::1;::::0;;;::::1;::::0;;3240:92::o;19411:197::-;19516:4;19538:40;19548:10;19560:9;19571:6;19538:9;:40::i;22059:116::-;3155:6;;-1:-1:-1;;;;;3155:6:0;3165:10;3155:20;3147:65;;;;-1:-1:-1;;;3147:65:0;;;;;;;:::i;:::-;22141:11:::1;:26:::0;22059:116::o;22370:171::-;3155:6;;-1:-1:-1;;;;;3155:6:0;3165:10;3155:20;3147:65;;;;-1:-1:-1;;;3147:65:0;;;;;;;:::i;:::-;22447:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;22447:32:0;;::::1;;::::0;;22495:38:::1;::::0;::::1;::::0;::::1;::::0;22471:8;3708:14:1;3701:22;3683:41;;3671:2;3656:18;;3638:92;22495:38:0::1;;;;;;;;22370:171:::0;:::o;21709:110::-;3155:6;;-1:-1:-1;;;;;3155:6:0;3165:10;3155:20;3147:65;;;;-1:-1:-1;;;3147:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21776:27:0::1;21806:5;21776:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;21776:35:0::1;::::0;;21709:110::o;22183:179::-;3155:6;;-1:-1:-1;;;;;3155:6:0;3165:10;3155:20;3147:65;;;;-1:-1:-1;;;3147:65:0;;;;;;;:::i;:::-;22345:9:::1;::::0;;22341:13:::1;::::0;::::1;:::i;:::-;22328:26;::::0;:10;:26:::1;:::i;:::-;22296:29;:58:::0;-1:-1:-1;22183:179:0:o;24051:371::-;-1:-1:-1;;;;;24178:19:0;;24170:68;;;;-1:-1:-1;;;24170:68:0;;7926:2:1;24170:68:0;;;7908:21:1;7965:2;7945:18;;;7938:30;8004:34;7984:18;;;7977:62;-1:-1:-1;;;8055:18:1;;;8048:34;8099:19;;24170:68:0;7898:226:1;24170:68:0;-1:-1:-1;;;;;24257:21:0;;24249:68;;;;-1:-1:-1;;;24249:68:0;;5588:2:1;24249:68:0;;;5570:21:1;5627:2;5607:18;;;5600:30;5666:34;5646:18;;;5639:62;-1:-1:-1;;;5717:18:1;;;5710:32;5759:19;;24249:68:0;5560:224:1;24249:68:0;-1:-1:-1;;;;;24330:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24382:32;;8275:25:1;;;24382:32:0;;8248:18:1;24382:32:0;;;;;;;24051:371;;;:::o;24430:1683::-;-1:-1:-1;;;;;24552:18:0;;24544:68;;;;-1:-1:-1;;;24544:68:0;;7520:2:1;24544:68:0;;;7502:21:1;7559:2;7539:18;;;7532:30;7598:34;7578:18;;;7571:62;-1:-1:-1;;;7649:18:1;;;7642:35;7694:19;;24544:68:0;7492:227:1;24544:68:0;-1:-1:-1;;;;;24631:16:0;;24623:64;;;;-1:-1:-1;;;24623:64:0;;4773:2:1;24623:64:0;;;4755:21:1;4812:2;4792:18;;;4785:30;4851:34;4831:18;;;4824:62;-1:-1:-1;;;4902:18:1;;;4895:33;4945:19;;24623:64:0;4745:225:1;24623:64:0;24715:1;24706:6;:10;24698:64;;;;-1:-1:-1;;;24698:64:0;;7110:2:1;24698:64:0;;;7092:21:1;7149:2;7129:18;;;7122:30;7188:34;7168:18;;;7161:62;-1:-1:-1;;;7239:18:1;;;7232:39;7288:19;;24698:64:0;7082:231:1;24698:64:0;24787:13;-1:-1:-1;;;;;24779:21:0;:4;-1:-1:-1;;;;;24779:21:0;;24775:133;;;24835:3;;24825:6;:13;;24817:22;;;;;;24892:3;;24888:7;;:1;:7;:::i;:::-;24878:6;24862:13;24872:2;24862:9;:13::i;:::-;:22;;;;:::i;:::-;:33;;24854:42;;;;;;24920:28;24951:24;24969:4;24951:9;:24::i;:::-;25052:29;;24920:55;;-1:-1:-1;25015:66:0;;;;;;;25110:53;;-1:-1:-1;25147:16:0;;;;25146:17;25110:53;:91;;;;;25188:13;-1:-1:-1;;;;;25180:21:0;:4;-1:-1:-1;;;;;25180:21:0;;;25110:91;:129;;;;-1:-1:-1;25218:21:0;;;;;;;25110:129;:179;;;;;25288:1;25256:29;;:33;25110:179;25092:368;;;25339:29;;25316:52;;25412:36;25427:20;25412:14;:36::i;:::-;-1:-1:-1;;;;;25653:24:0;;25533:12;25653:24;;;:18;:24;;;;;;25548:4;;25653:24;;;:50;;-1:-1:-1;;;;;;25681:22:0;;;;;;:18;:22;;;;;;;;25653:50;25649:98;;;-1:-1:-1;25730:5:0;25649:98;25784:21;25808:13;25818:2;25808:9;:13::i;:::-;:18;:60;;;;-1:-1:-1;;;;;;25843:11:0;;;25866:1;25843:11;;;:7;:11;;;;;;;:25;25808:60;:98;;;;;25893:13;-1:-1:-1;;;;;25885:21:0;:4;-1:-1:-1;;;;;25885:21:0;;;25808:98;25784:122;;25985:41;26000:4;26006:2;26010:6;26018:7;25985:14;:41::i;:::-;26043:16;26039:67;;;-1:-1:-1;;;;;26076:11:0;;;;;;;:7;:11;;;;;:18;;-1:-1:-1;;;;;;26076:18:0;;;;;;;;;;26039:67;24533:1580;;;;24430:1683;;;:::o;4505:226::-;4625:7;4661:12;4653:6;;;;4645:29;;;;-1:-1:-1;;;4645:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4685:9:0;4697:5;4701:1;4697;:5;:::i;:::-;4685:17;4505:226;-1:-1:-1;;;;;4505:226:0:o;22642:164::-;22684:7;22705:15;22722;22741:19;:17;:19::i;:::-;22704:56;;-1:-1:-1;22704:56:0;-1:-1:-1;22778:20:0;22704:56;;22778:11;:20::i;:::-;22771:27;;;;22642:164;:::o;5937:132::-;5995:7;6022:39;6026:1;6029;6022:39;;;;;;;;;;;;;;;;;:3;:39::i;3602:181::-;3660:7;;3692:5;3696:1;3692;:5;:::i;:::-;3680:17;;3721:1;3716;:6;;3708:46;;;;-1:-1:-1;;;3708:46:0;;5991:2:1;3708:46:0;;;5973:21:1;6030:2;6010:18;;;6003:30;6069:29;6049:18;;;6042:57;6116:18;;3708:46:0;5963:177:1;26121:977:0;17805:16;:23;;-1:-1:-1;;17805:23:0;17824:4;17805:23;;;:16;26272:27:::1;:20:::0;26297:1:::1;26272:24;:27::i;:::-;26257:42:::0;-1:-1:-1;26310:17:0::1;26330:30;:20:::0;26257:42;26330:24:::1;:30::i;:::-;26310:50:::0;-1:-1:-1;26663:21:0::1;26729:22;26746:4:::0;26729:16:::1;:22::i;:::-;26882:18;26903:41;:21;26929:14:::0;26903:25:::1;:41::i;:::-;26882:62;;26994:35;27007:9;27018:10;26994:12;:35::i;:::-;27047:43;::::0;;9498:25:1;;;9554:2;9539:18;;9532:34;;;9582:18;;;9575:34;;;27047:43:0::1;::::0;9486:2:1;9471:18;27047:43:0::1;;;;;;;-1:-1:-1::0;;17851:16:0;:24;;-1:-1:-1;;17851:24:0;;;-1:-1:-1;;;26121:977:0:o;28296:286::-;28452:7;28447:28;;28461:14;23435:7;;;23417:15;:25;23477:13;;;23453:21;:37;23523:11;;;23501:19;:33;23567:11;;;23545:19;:33;-1:-1:-1;23591:11:0;;;;23613:17;;;;23641:15;;;;23667;23374:316;28461:14;28488:44;28506:6;28514:9;28525:6;28488:17;:44::i;:::-;28550:7;28545:29;;28559:15;23752;;23742:7;:25;23794:21;;23778:13;:37;23840:19;;23826:11;:33;23884:19;;23870:11;:33;23698:213;28559:15;28296:286;;;;:::o;22814:257::-;22912:7;;22948;;22865;;;;22980:20;22912:7;22948;22980:11;:20::i;:::-;22970:7;:30;22966:61;;;23010:7;;23019;;23002:25;;;;;;22814:257;;:::o;22966:61::-;23046:7;;23055;;-1:-1:-1;22814:257:0;-1:-1:-1;22814:257:0:o;6565:312::-;6685:7;6720:12;6713:5;6705:28;;;;-1:-1:-1;;;6705:28:0;;;;;;;;:::i;:::-;-1:-1:-1;6744:9:0;6756:5;6760:1;6756;:5;:::i;4066:136::-;4124:7;4151:43;4155:1;4158;4151:43;;;;;;;;;;;;;;;;;:3;:43::i;27106:588::-;27256:16;;;27270:1;27256:16;;;;;;;;27232:21;;27256:16;;;;;;;;;;-1:-1:-1;27256:16:0;27232:40;;27301:4;27283;27288:1;27283:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27283:23:0;;;-1:-1:-1;;;;;27283:23:0;;;;;27327:15;-1:-1:-1;;;;;27327:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27317:4;27322:1;27317:7;;;;;;;;:::i;:::-;;;;;;:31;-1:-1:-1;;;;;27317:31:0;;;-1:-1:-1;;;;;27317:31:0;;;;;27361:62;27378:4;27393:15;27411:11;27361:8;:62::i;:::-;27462:224;;-1:-1:-1;;;27462:224:0;;-1:-1:-1;;;;;27462:15:0;:66;;;;:224;;27543:11;;27569:1;;27613:4;;27640;;27660:15;;27462:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27161:533;27106:588;:::o;27702:513::-;27850:62;27867:4;27882:15;27900:11;27850:8;:62::i;:::-;27955:15;-1:-1:-1;;;;;27955:31:0;;27994:9;28027:4;28047:11;28073:1;28116;28159:7;2981;3008:6;-1:-1:-1;;;;;3008:6:0;;2943:79;28159:7;27955:252;;;;;;-1:-1:-1;;;;;;27955:252:0;;;-1:-1:-1;;;;;3290:15:1;;;27955:252:0;;;3272:34:1;3322:18;;;3315:34;;;;3365:18;;;3358:34;;;;3408:18;;;3401:34;3472:15;;;3451:19;;;3444:44;28181:15:0;3504:19:1;;;3497:35;3206:19;;27955:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27702:513;;:::o;30363:1111::-;30495:19;30517:10;:8;:10::i;:::-;30495:32;-1:-1:-1;30571:15:0;30589:24;:7;30495:32;30589:11;:24::i;:::-;-1:-1:-1;;;;;30642:15:0;;;;;;:7;:15;;;;;;30571:42;;-1:-1:-1;30642:28:0;;30571:42;30642:19;:28::i;:::-;-1:-1:-1;;;;;30624:15:0;;;;;;:7;:15;;;;;:46;30747:11;;30702:71;;30632:6;;30726:33;;:16;:7;30738:3;30726:11;:16::i;:::-;:20;;:33::i;:::-;30761:11;30702:15;:71::i;:::-;30850:13;;30814:51;;30829:35;;:16;:7;30841:3;30829:11;:16::i;:35::-;30814:14;:51::i;:::-;30908:56;30924:6;30932:9;30943:7;30952:11;30908:15;:56::i;:::-;31043:7;;30996:110;;31022:29;;:16;:7;31034:3;31022:11;:16::i;:29::-;31087:7;;31066:29;;:16;:7;31078:3;31066:11;:16::i;:29::-;30996:11;:110::i;:::-;31138:21;31260:11;;31233;;31210:7;;31181:13;;31162:3;:32;;;;:::i;:::-;:55;;;;:::i;:::-;:82;;;;:::i;:::-;:109;;;;:::i;:::-;31138:133;-1:-1:-1;31303:83:0;31340:35;31138:133;31340:16;:7;31352:3;31340:11;:16::i;:35::-;-1:-1:-1;;;;;31303:18:0;;;;;;:7;:18;;;;;;;:22;:83::i;:::-;-1:-1:-1;;;;;31282:18:0;;;;;;;:7;:18;;;;;:104;;;;31402:64;;;31430:35;31451:13;31430:16;:7;31442:3;31430:11;:16::i;:35::-;31402:64;;8275:25:1;;;8263:2;8248:18;31402:64:0;;;;;;;30484:990;;;30363:1111;;;:::o;4990:471::-;5048:7;5293:6;5289:47;;-1:-1:-1;5323:1:0;5316:8;;5289:47;5348:9;5360:5;5364:1;5360;:5;:::i;:::-;5348:17;-1:-1:-1;5393:1:0;5384:5;5388:1;5348:17;5384:5;:::i;:::-;:10;5376:56;;;;-1:-1:-1;;;5376:56:0;;6347:2:1;5376:56:0;;;6329:21:1;6386:2;6366:18;;;6359:30;6425:34;6405:18;;;6398:62;-1:-1:-1;;;6476:18:1;;;6469:31;6517:19;;5376:56:0;6319:223:1;28590:356:0;28726:11;;28722:29;;28590:356;;;:::o;28722:29::-;28761:15;28779:24;:7;28791:11;28779;:24::i;:::-;28851:15;;-1:-1:-1;;;;;28851:15:0;28843:24;;;;:7;:24;;;;;;28761:42;;-1:-1:-1;28843:37:0;;28761:42;28843:28;:37::i;:::-;28824:15;;;-1:-1:-1;;;;;28824:15:0;;;28816:24;;;;:7;:24;;;;;;;;;:64;;;;28913:15;;28896:42;;8275:25:1;;;28913:15:0;;;;28896:42;;;;;;8248:18:1;28896:42:0;;;;;;;28711:235;28590:356;;;:::o;28954:172::-;29021:15;29017:28;;28954:172;:::o;29017:28::-;29096:4;29080:22;;;;:7;:22;;;;;;:38;;29107:10;29080:26;:38::i;:::-;29071:4;29055:22;;;;:7;:22;;;;;:63;-1:-1:-1;28954:172:0:o;29289:1066::-;29453:11;;29449:29;;29471:7;;29449:29;29490:11;29526:13;-1:-1:-1;;;;;29516:23:0;:6;-1:-1:-1;;;;;29516:23:0;;29512:148;;;-1:-1:-1;29562:9:0;29512:148;;;29606:13;-1:-1:-1;;;;;29593:26:0;:9;-1:-1:-1;;;;;29593:26:0;;29589:71;;;-1:-1:-1;29642:6:0;29589:71;-1:-1:-1;;;;;29674:17:0;;29670:56;;29708:7;;;29670:56;29738:17;;29766:582;29789:1;29785;:5;29766:582;;;29812:12;29843:6;29839:104;;-1:-1:-1;29877:1:0;29839:104;;;-1:-1:-1;29926:1:0;29839:104;-1:-1:-1;;;;;29963:12:0;;;;;;;:7;:12;;;;;;;;;;29994:17;29990:63;;30032:5;;;29990:63;30079:19;:9;30093:4;30079:13;:19::i;:::-;30067:31;-1:-1:-1;30115:18:0;30136:26;30157:4;30136:16;:7;30148:3;30136:11;:16::i;:26::-;30115:47;-1:-1:-1;30177:18:0;30198:27;30115:47;30213:11;30198:14;:27::i;:::-;-1:-1:-1;;;;;30255:12:0;;;;;;:7;:12;;;;;;30177:48;;-1:-1:-1;30255:28:0;;30177:48;30255:16;:28::i;:::-;-1:-1:-1;;;;;30240:12:0;;;;;;;:7;:12;;;;;;;:43;;;;30303:33;;;;;;;;;;30325:10;8275:25:1;;8263:2;8248:18;;8230:76;30303:33:0;;;;;;;;29797:551;;;29792:3;;;;;:::i;:::-;;;;29766:582;;29134:147;29212:7;;:17;;29224:4;29212:11;:17::i;:::-;29202:7;:27;29253:10;;:20;;29268:4;29253:14;:20::i;:::-;29240:10;:33;-1:-1:-1;;29134:147:0:o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:2;;;667:1;664;657:12;619:2;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;609:301;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:2;;;1077:1;1074;1067:12;1029:2;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;1019:352;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;1019:352::o;1376:315::-;1444:6;1452;1505:2;1493:9;1484:7;1480:23;1476:32;1473:2;;;1521:1;1518;1511:12;1473:2;1560:9;1547:23;1579:31;1604:5;1579:31;:::i;:::-;1629:5;1681:2;1666:18;;;;1653:32;;-1:-1:-1;;;1463:228:1:o;1696:273::-;1752:6;1805:2;1793:9;1784:7;1780:23;1776:32;1773:2;;;1821:1;1818;1811:12;1773:2;1860:9;1847:23;1913:5;1906:13;1899:21;1892:5;1889:32;1879:2;;1935:1;1932;1925:12;1974:180;2033:6;2086:2;2074:9;2065:7;2061:23;2057:32;2054:2;;;2102:1;2099;2092:12;2054:2;-1:-1:-1;2125:23:1;;2044:110;-1:-1:-1;2044:110:1:o;2159:248::-;2227:6;2235;2288:2;2276:9;2267:7;2263:23;2259:32;2256:2;;;2304:1;2301;2294:12;2256:2;-1:-1:-1;;2327:23:1;;;2397:2;2382:18;;;2369:32;;-1:-1:-1;2246:161:1:o;2412:306::-;2500:6;2508;2516;2569:2;2557:9;2548:7;2544:23;2540:32;2537:2;;;2585:1;2582;2575:12;2537:2;2614:9;2608:16;2598:26;;2664:2;2653:9;2649:18;2643:25;2633:35;;2708:2;2697:9;2693:18;2687:25;2677:35;;2527:191;;;;;:::o;3969:597::-;4081:4;4110:2;4139;4128:9;4121:21;4171:6;4165:13;4214:6;4209:2;4198:9;4194:18;4187:34;4239:1;4249:140;4263:6;4260:1;4257:13;4249:140;;;4358:14;;;4354:23;;4348:30;4324:17;;;4343:2;4320:26;4313:66;4278:10;;4249:140;;;4407:6;4404:1;4401:13;4398:2;;;4477:1;4472:2;4463:6;4452:9;4448:22;4444:31;4437:42;4398:2;-1:-1:-1;4550:2:1;4529:15;-1:-1:-1;;4525:29:1;4510:45;;;;4557:2;4506:54;;4090:476;-1:-1:-1;;;4090:476:1:o;6547:356::-;6749:2;6731:21;;;6768:18;;;6761:30;6827:34;6822:2;6807:18;;6800:62;6894:2;6879:18;;6721:182::o;8311:980::-;8573:4;8621:3;8610:9;8606:19;8652:6;8641:9;8634:25;8678:2;8716:6;8711:2;8700:9;8696:18;8689:34;8759:3;8754:2;8743:9;8739:18;8732:31;8783:6;8818;8812:13;8849:6;8841;8834:22;8887:3;8876:9;8872:19;8865:26;;8926:2;8918:6;8914:15;8900:29;;8947:1;8957:195;8971:6;8968:1;8965:13;8957:195;;;9036:13;;-1:-1:-1;;;;;9032:39:1;9020:52;;9127:15;;;;9092:12;;;;9068:1;8986:9;8957:195;;;-1:-1:-1;;;;;;;9208:32:1;;;;9203:2;9188:18;;9181:60;-1:-1:-1;;;9272:3:1;9257:19;9250:35;9169:3;8582:709;-1:-1:-1;;;8582:709:1:o;9620:128::-;9660:3;9691:1;9687:6;9684:1;9681:13;9678:2;;;9697:18;;:::i;:::-;-1:-1:-1;9733:9:1;;9668:80::o;9753:217::-;9793:1;9819;9809:2;;9863:10;9858:3;9854:20;9851:1;9844:31;9898:4;9895:1;9888:15;9926:4;9923:1;9916:15;9809:2;-1:-1:-1;9955:9:1;;9799:171::o;9975:422::-;10064:1;10107:5;10064:1;10121:270;10142:7;10132:8;10129:21;10121:270;;;10201:4;10197:1;10193:6;10189:17;10183:4;10180:27;10177:2;;;10210:18;;:::i;:::-;10260:7;10250:8;10246:22;10243:2;;;10280:16;;;;10243:2;10359:22;;;;10319:15;;;;10121:270;;;10125:3;10039:358;;;;;:::o;10402:131::-;10462:5;10491:36;10518:8;10512:4;10587:5;10617:8;10607:2;;-1:-1:-1;10658:1:1;10672:5;;10607:2;10706:4;10696:2;;-1:-1:-1;10743:1:1;10757:5;;10696:2;10788:4;10806:1;10801:59;;;;10874:1;10869:130;;;;10781:218;;10801:59;10831:1;10822:10;;10845:5;;;10869:130;10906:3;10896:8;10893:17;10890:2;;;10913:18;;:::i;:::-;-1:-1:-1;;10969:1:1;10955:16;;10984:5;;10781:218;;11083:2;11073:8;11070:16;11064:3;11058:4;11055:13;11051:36;11045:2;11035:8;11032:16;11027:2;11021:4;11018:12;11014:35;11011:77;11008:2;;;-1:-1:-1;11120:19:1;;;11152:5;;11008:2;11199:34;11224:8;11218:4;11199:34;:::i;:::-;11269:6;11265:1;11261:6;11257:19;11248:7;11245:32;11242:2;;;11280:18;;:::i;:::-;11318:20;;10597:747;-1:-1:-1;;;10597:747:1:o;11349:168::-;11389:7;11455:1;11451;11447:6;11443:14;11440:1;11437:21;11432:1;11425:9;11418:17;11414:45;11411:2;;;11462:18;;:::i;:::-;-1:-1:-1;11502:9:1;;11401:116::o;11522:125::-;11562:4;11590:1;11587;11584:8;11581:2;;;11595:18;;:::i;:::-;-1:-1:-1;11632:9:1;;11571:76::o;11652:380::-;11731:1;11727:12;;;;11774;;;11795:2;;11849:4;11841:6;11837:17;11827:27;;11795:2;11902;11894:6;11891:14;11871:18;11868:38;11865:2;;;11948:10;11943:3;11939:20;11936:1;11929:31;11983:4;11980:1;11973:15;12011:4;12008:1;12001:15;11865:2;;11707:325;;;:::o;12037:147::-;12075:3;-1:-1:-1;;;;;12096:30:1;;12093:2;;;12129:18;;:::i;:::-;-1:-1:-1;12176:1:1;12165:13;;12083:101::o;12189:127::-;12250:10;12245:3;12241:20;12238:1;12231:31;12281:4;12278:1;12271:15;12305:4;12302:1;12295:15;12321:127;12382:10;12377:3;12373:20;12370:1;12363:31;12413:4;12410:1;12403:15;12437:4;12434:1;12427:15;12585:131;-1:-1:-1;;;;;12660:31:1;;12650:42;;12640:2;;12706:1;12703;12696:12

Swarm Source

ipfs://6b4bb23532ad8f0138b0154ce3b2e0b6e79d9a9c712e43e6ec832481428dc455
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading